mod_rails或Phusion Passenger最终是Ruby on Rails部署的答案吗?

时间:2009-05-11 17:26:45

标签: ruby-on-rails ruby passenger mod-rails phusion

我从一些书中读到,Phusion Passenger是轻松实现Ruby on Rails部署的答案。但我的朋友说首先有Apache +一堆Mongrels,然后是lighttpd,然后是nginx,现在是Passenger,而且似乎无穷无尽......

他还说他使用的是使用Passenger的dreamhost,有时他看到他的请求没有被处理。

所以我想知道Passenger是否是RoR部署的最终答案?你使用它并使用“ab”命令测试网站是否做得很好?

7 个答案:

答案 0 :(得分:20)

简短回答:是的。

答案很长:yeeeeeeeeeeeeeeesssssssssssssssss。

严肃地说,Phusion Passenger和Ruby Enterprise Edition几乎完全消除了将Rails应用程序投入生产的痛苦。以前的方法,包括运行一套Mongrels,需要大量的设置,包括启动,停止和回收Passenger透明处理的侦听器进程,或者通过简单的Apache(或nginx)配置选项。 REE的补充垃圾收集器意味着分离新的侦听器使用的内存更少,启动速度更快(在Passenger的“智能”生成模式中)。

编辑:@srboisvert非常好;乘客不是RoR部署的最终答案,但到目前为止,它是我最喜欢的。有一天,在解决了许多硬工程问题之后,主流Ruby可能会从使用多进程模型托管RoR转变为单进程模型,这将使​​管理比使用Passenger更容易。

答案 1 :(得分:4)

这是迄今为止最好的解决方案。我开始使用FCGI进行部署,这很痛苦。然后来了杂种,它更好。然后来了mod_rails,它更好了。

此外,很多很酷的应用程序正在迁移到mod_rails,包括一些37signals,所以你知道这很好。

我将以DHH的引言结束:

  

Phusion的单件解决方案   乘客

     

一旦你完成了令人难以置信的   简单的安装,你得到一个Apache   充当web服务器,加载   平衡器,应用服务器和   进程观察者。你干脆插手   你的申请和触摸   你想要tmp / restart.txt   弹起它和bam,你起来了   运行

     

但不知何故,乘客的消息   沉沦有点慢。   已经有很多大型网站了   跑掉它。包括Shopify,   MTV,Geni,Yammer,我们将会感动   不久,就在第一个Ta-da List上   希望其余的37signals   之后很快就会出现。

     

所以虽然还有理由   运行您自己的自定义多层设置   只是手动配置的部分   就像有人回避   我认为mod_php的详细信息   我们最终确定了违约   回答。不需要的东西   你要真正考虑第一个   部署您的Rails应用程序。   一些正常的东西   框。即使那个盒子是共享的   主机!

     

总之,Rails不再困难   部署。 Phusion Passenger已经取得了成功   这太荒谬了。

via

答案 2 :(得分:3)

是的,它是最简单,最快速,最有效的解决方案。 在最近的版本中解决了像soap4r等宝石的很多问题后,Passenger就是现在部署问题的答案。

我们在平衡环境中运行Apache / mod_rails,在2台服务器前面使用HAProxy。它比我们之前使用Mongrel / Aapache的设置更可靠。

控制

非常容易
  • 在Apache中运行的Passenger进程数量
  • 每个应用程序运行的Passenger进程数量
  • 以及所有那些没有调整像mod_proxy,Apache这样的配置文件的痛苦。
  • 设置虚拟主机并在Apache配置中添加3行基本上足以让它运行

马特

答案 3 :(得分:3)

最终答案?没有什么是最终的答案。

我会说Passenger是目前的答案。

答案 4 :(得分:2)

是。我已经在Apache面前运行Nginx / Passenger,因为他们几周前发布了2.2.0,因此仍需要PHP。特别是对于Ruby Enterprise Edition,它接近我称之为“完美”的东西。

答案 5 :(得分:1)

我想现在人们会坚持使用mod_rails多年。该模块非常好。配置很简单。用一些更好的解决方案来取代它将很难。与mod_php相似。唯一缺少的关键组件:Windows端口。

答案 6 :(得分:1)

在某些情况下(企业等),JVM也是一个不错的选择。