31

我用过直接的 Mongrel,我用过 Apache 后面的 Mongrel 集群,我看过 Thin,我对Passenger 很感兴趣。我也看过 Nginx。我看过 MRI、Ruby Enterprise Edition、Rubinius 和 JRuby。有很多选择,每个都声称是新的圣杯。

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

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

考虑到这些特别广泛的限制,在并发性和低开销方面,哪种软件组合将产生最佳结果?

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

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

4

9 回答 9

16

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

就个人而言,我喜欢把时间花在令人兴奋的新 Rails 项目上,而不是处理部署问题——Passenger 让我能够做到这一点。但是,如果您有某种特殊要求(不适用于大多数产品),Mongrel 或其他东西可能仍然是可取的。

于 2008-11-11T13:16:46.867 回答
10

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

但不知何故,Passenger 的信息接收速度有点慢。已经有很多大型网站正在运行它。包括 Shopify、MTV、Geni、Yammer,我们很快就会移动到第一个 Ta-da List,然后希望之后很快就会完成 37signals 套件的其余部分。

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

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

Tobias Lütke 关于将 Shopify(百万请求/天)切换到乘客的主题:

所有这一切意味着 Shopify 在正常操作期间使用的内存总量从平均 9GB 变为平均 5GB。我们将节省的成本平均分配给更多 Shopify 进程和更多 memcached 空间,这将我们的平均响应时间从 210 毫秒提高到 130 毫秒,而过去几个月的流量增长了 30%。

总结:目前我看不出有任何理由选择不同的部署策略。它简单、完整、快速且有据可查。

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

于 2008-11-13T16:08:08.217 回答
4

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

卡住的杂种一直是个问题,所以当它们行为不端时,我们使用 monit 杀死它们。同样,设置起来也不是一件容易的事,但此时我们已经在许多站点上使用了相同的过程。

我们还没有和乘客玩过,所以也许它更容易更稳定,我会听从其他响应者的意见,我只能说你没有理由不能用 nginx 建立一个坚实的堆栈和杂种。

于 2008-11-11T14:14:06.177 回答
2

我们已经从 NginX+Mongrel 切换到了Passenger。

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

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

网络服务器

  • Ubuntu 8.04 LTS
  • Apache2 上的 Phusion 乘客
  • MRI Ruby 1.8.6 和朋友 (form apt)
  • Ruby Gems 1.3.0(从源代码安装)

数据库服务器

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

在对确切的 linux 发行版进行标准化之后,我们已经能够编写 Capitrano 配方来帮助部署(配置中的细微变化是许多服务中断的根源)并以其他方式简化我们的生活。

于 2008-11-15T22:04:54.970 回答
1

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

于 2008-11-11T10:31:46.810 回答
1

我们还从 Mongrel 切换到 mod_passenger,发现稳定性大大提高,因为需要进行设置和维护。好的选择。

于 2008-11-11T13:34:58.610 回答
1

还有一点金子:

Josh Peek 的Slicehost gem充满了 Capistrano 食谱,这些食谱比 Deprec 更简单、更有条理。里面也没有什么特别是特定于 Slicehost 的。

于 2009-03-16T19:52:59.660 回答
0

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

我还不能真正认可他们,因为我是一个新客户,但是一组指南和支持选项的范围令人印象深刻。

您没有提到的是您的应用程序的规模和受欢迎程度。该标准可能会影响决策过程。

于 2008-11-11T09:00:44.653 回答
0

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

Nginx 代理服务器架构的 Mongrel 集群。它不是最新的、最前沿的技术,但它工作得很好,它得到了很好的记录,而且即使在小型 VPS 上工作时,它的性能也非常非常高。假设你没有破坏应用程序,你可以 Slashdot 一个 128 MB Slicehost VPS 并且它只是不断回来获取更多。

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

于 2008-11-12T02:38:53.753 回答