Linux上新Rails部署的最佳实践?

时间:2008-11-11 06:24:15

标签: ruby-on-rails ruby linux deployment release-management

我使用了直接的Mongrel,我在Apache后面使用了Mongrel集群,我看过Thin,而且我对乘客非常感兴趣。我也看过Nginx。我看过MRI,Ruby Enterprise Edition,Rubinius和JRuby。有很多选择,每个都声称是新的圣杯。

对于全新的,完全最新的部署,最佳选择是什么?唯一的假设是:

  • 该应用程序是基于Rails 2.2。 (我知道2.2尚未完全发布,但这部署也不是。)
  • 服务器是基于Linux的。可能是Ubuntu Hardy,但实际上,在这种情况下效果最好。
  • Rails需要完全正常运行,并且可能与MySQL数据库通信。
  • 其他一切都可以协商。

鉴于这些特别广泛的约束,在并发性和低开销方面,哪种软件组合会产生最佳结果?

我倾向于使用“worker”mpm和Passenger + Ruby Enterprise Edition,因为它提供了即时的稳定性和简单的设置和维护。

我可能会因为另一种选择而特别好吗?

9 个答案:

答案 0 :(得分:16)

两周前我从Mongrel Cluster切换到Passenger(Debian Linux Server)。我没有回头一秒钟。乘客可能是让您的新服务器启动并运行的最简单方法。性能和可靠性也是合理的。

就个人而言,我喜欢花时间研究激动人心的新Rails项目,而不是处理部署问题 - Passenger使我能够做到这一点。但是,如果您有某些特殊要求(不适用于大多数产品),Mongrel或其他可能仍然是首选。

答案 1 :(得分:10)

今天早上,DHH在他自己的博客上讨论了这个话题:

  

但是不知何故,乘客的信息有点缓慢。已经有很多大型网站在运行。包括Shopify,MTV,Geni,Yammer,我们将很快在第一个Ta-da List上移动,然后希望37signals的其余部分很快就会出现。

     

因此,虽然仍有理由运行您自己的手动配置件的自定义多层设置,就像有人回避mod_php的详细信息,我想我们最终确定了默认答案。不需要您真正考虑Rails应用程序的第一次部署的东西。开箱即用的东西。即使那个盒子是共享主机!

http://www.loudthinking.com/posts/30-myth-1-rails-is-hard-to-deploy

TobiasLütke关于将Shopify(百万请求/天)转换为乘客的主题:

  

所有这些意味着Shopify在正常操作期间使用的内存总量从平均9GB到平均5GB。我们在更多Shopify流程和更多memcached空间中均匀分配了节省,这使得我们的平均响应时间从210毫秒增加到130毫秒,而流量在过去几个月增长了30%。

     

总之:我现在看不出有任何理由选择不同的部署策略。它简单,完整,快速且记录良好。

http://blog.leetsoft.com/2008/11/15/passenger

答案 2 :(得分:4)

我们一直在使用旧的标准nginx - >在过去18个月中,mongrel堆栈虽然第一次设置并非易事,但它已被证明是灵活的,并且已经为我们处理了一些非常高流量的站点。特别是Nginx绝对坚如磐石,如果你可以获得你的app页面缓存,你可以处理很多请求。

被困的杂种已成为一个问题,所以当他们行为不端时我们会使用monit来杀死他们。同样,设置并不是完全无关紧要,但此时我们在许多网站上使用了相同的流程。

我们还没有玩过乘客,所以也许它更容易也更稳定,我会按照其他响应者的说法,我只能说没有理由你不能建立一个稳定的与nginx和mongrel叠加。

答案 3 :(得分:2)

我们已经将NginX + Mongrel转为乘客。

尽管NginX和Mongrel集群得到了一些非常聪明的人的认可,但我完全相信Passenger将成为rails的新标准。乘客的最新进展确实推动了它的发展。

我们目前的配置是这样的:

网络服务器

  • Ubuntu 8.04 LTS
  • Apache2上的Phusion Passenger
  • MRI Ruby 1.8.6和朋友(形式适合)
  • Ruby Gems 1.3.0(从源代码安装)

数据库服务器

  • Centos 5
  • MySQL Cluster(我们刚刚切换到这个,但很有希望)

在确切的Linux发行版上进行了标准化后,我们已经能够编写Capitrano配方以帮助部署(配置中的轻微变化已经成为许多服务中断的来源),并且简化了我们的生活。

答案 4 :(得分:1)

看看Litespeed。您可以获得一个在1个CPU上运行的免费版本或者支付以获得多个CPU。它有点贵但是坚如磐石并且处理轨道非常出色(即使用更少的内存并且监视和设置的开销更少)。我在它上面运行了大量的应用程序,它不会错过任何一个节拍。

答案 5 :(得分:1)

我们也从Mongrel切换到mod_passenger,并且通过设置和维护所需的努力,发现稳定性大大提高。不错的选择。

答案 6 :(得分:1)

另一点黄金:

Josh Peek的Slicehost gem充满了Capistrano的食谱,比Deprec更简单,更有条理。其中没有任何东西特别是Slicehost特有的。

答案 7 :(得分:0)

我在Ubuntu Hardy上使用Apache2和Passenger托管我的新应用程序。对于大多数场景来说,似乎是最简单和最好的选择。我刚刚加入了Slicehost.com。他们似乎得到了很好的评价,并且拥有一流房东最具竞争力的价格。

我还不能真正认可它们,因为我是一个新客户,但是这套指南和一系列支持选项令人印象深刻。

你没有提到的是你的应用程序将会是多么大和最受欢迎。该标准可能会影响决策过程。

答案 8 :(得分:0)

Capistrano + Deprec用于在Ubuntu上实际设置我的堆栈并物理管理部署。

Nginx代理Mongrel clusers用于服务器架构。它不是最新的,最前沿的技术,但它运行良好,它已被充分记录,即使在小型VPS上工作也是非常非常高的性能。假设您没有使用该应用程序,您可以使用Slashdot一个128 MB的Slicehost VPS,它会不断回来更多。

话虽如此:第一次有一个很多的陷阱,直到我弄清楚Nginx是如何工作的。之后,它就像一个带有轻微俄语口音的小型Apachelet一样令人惊叹。