论坛首页 编程语言技术论坛

[讨论]部署Rails的最佳方案是什么?

浏览 19480 次
精华帖 (5) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-06  
从来没真正部署过一个production级别的rails应用,但是9月份很可能要部署一个,所以最近也开始关注Rails的部署问题。这里算是抛砖引玉吧,还请各位有经验的同志热烈讨论,我想很多人也都对这方面很感兴趣。

Robbin之前的帖子里面讨论过如何选择Rails的部署方案,也挺详细的,我估计硬件和操作系统方面大家分歧应该不大,总归是linux,服务器越强劲,内存越大越好。所以问题就到了软件方面。数据库大概也不用怎么讨论,mysql之类的东西大家心里都有数。关键还是server的问题。

JavaEye现在用的server应该是lighttpd和fastcgi吧,从大家浏览网站的体验上看,性能还是不错的。Robbin有写文章讲过如何安装这些server,但是很想知道选择这些server的原因。apache应该是最传统的选择,为什么Robbin没有选它呢?

ThoughtWorks的RubyWorks选择的是HAProxy和Mongel,这里没有静态web server,文档里说可以用apache和一个叫nginx的东东。我想大公司选择这些东东作为RubyWorks的默认安装,肯定是有原因的吧。那它们的lighttpd+fastcgi比较起来如何呢?gigix也许可以解释一下。

如果有哪位大哥可以总结一下目前比较流行的server组合,说说各自的优缺点,那小弟真是感激不尽啊。

另外,我个人觉得选择server的时候,不单单要看功能和性能方面,还要看安装配置是不是比较简单,不知道各位是否同意这一观点呢?
   发表时间:2007-07-06  
引用
ThoughtWorks的RubyWorks选择的是HAProxy和Mongel,这里没有静态 web server,文档里说可以用apache和一个叫nginx的东东。我想大公司选择这些东东作为RubyWorks的默认安装,肯定是有原因的吧。那它们的lighttpd+fastcgi比较起来如何呢?gigix也许可以解释一下。

FastCGI最大的问题是不成熟,稳定性不够,即便像DreamHost这样老资格的shared host也经常出现FastCGI进程挂死的情况。至于Apache,我们还没有看到把它放进统一配置的需求,也许以后会加进去。
我列举了几个一站式的Rails环境安装方案:http://gigix.thoughtworkers.org/articles/2007/07/05/existing-rails-deployment-stacks
0 请登录后投票
   发表时间:2007-07-06  
gigix 写道

FastCGI最大的问题是不成熟,稳定性不够,即便像DreamHost这样老资格的shared host也经常出现FastCGI进程挂死的情况。至于Apache,我们还没有看到把它放进统一配置的需求,也许以后会加进去。
我列举了几个一站式的Rails环境安装方案:http://gigix.thoughtworkers.org/articles/2007/07/05/existing-rails-deployment-stacks

谢谢解释,我刚才也去看了一下JavaEye以前的帖子,Robbin说apache首先可以排除,也不知道为什么,呵呵。
PS:ThoughtWorks啥时候来上海开分公司啊?我毕业想去那里工作呢。
0 请登录后投票
   发表时间:2007-07-06  
AllenYoung 写道
gigix 写道

FastCGI最大的问题是不成熟,稳定性不够,即便像DreamHost这样老资格的shared host也经常出现FastCGI进程挂死的情况。至于Apache,我们还没有看到把它放进统一配置的需求,也许以后会加进去。
我列举了几个一站式的Rails环境安装方案:http://gigix.thoughtworkers.org/articles/2007/07/05/existing-rails-deployment-stacks

谢谢解释,我刚才也去看了一下JavaEye以前的帖子,Robbin说apache首先可以排除,也不知道为什么,呵呵。
PS:ThoughtWorks啥时候来上海开分公司啊?我毕业想去那里工作呢。

那你申请北京分公司吧。反正是要经常出差的。
0 请登录后投票
   发表时间:2007-07-06  
Rails部署也算是个不错的topic
楼主可以调研、试验一番,各种方式来个对比,然后写篇总结
0 请登录后投票
   发表时间:2007-07-06  
RubyWorks Production Stack就是haproxy+mongrel的
0 请登录后投票
   发表时间:2007-07-06  
freemind 写道

JavaEye为什么用lighttpd + fcgi呢?原因如下:

1) lighttpd发展了好几年了,市场占有率也相当高,是一个经过实践检验的server,它的文档也很全;而nginx还没有经过足够的市场检验,文档也很缺乏
2) JavaEye的ruby进程和web server在一台机器上面跑,通过unix socket使用fcgi协议通讯可以避免tcp的网络开销,其通讯速度比使用tcp socket使用http协议通讯要快一些。

谢谢你的详细讲解,受益匪浅。我看Agile Web Development with Rails 2e里面说fastcgi总是会出现莫名其妙的问题,而mongrel则是未来的一个趋势,因此它推荐使用mongrel而确实也说道one-box下使用fastcgi也可以。

也许可以先用lighttpd+fastcgi搭配,然后当lighttpd对mongrel的支持增强后再换到mongrel。

很是奇怪,既然lighttpd性能这么好,呼声这么高,咋没有谁弄个lighttpd+XXX的one-stack安装包出来呢。
0 请登录后投票
   发表时间:2007-07-06  
haproxy+mongrel

静态资源怎么处理?直接交给mongrel?
把haproxy整合进lighttpd多好,呵呵

0 请登录后投票
   发表时间:2007-07-07  
freemind 写道
第四,one-stack的installer也只有ThoughtWorks一家在做,没有其他人在做。你也可以问问他们,为什么不做apache的installer,为什么不做nginx的installer,为什么不做litespeed的installer。

事实显然不是这样。http://gigix.thoughtworkers.org/articles/2007/07/05/existing-rails-deployment-stacks
至于为什么不包含Apache在RubyWorks Production Stack里面,前面已经说过了
freemind 写道
第五,传统Unix的Adminstrator都不屑于使用one-stack installer这种东西。高性能的Server需要通过自己手工安装和调整每一个参数来取得最好的效果。这是one-stack installer这种东西做不到的。打个比方,你有没有见过专业的摄影师用傻瓜相机的?

这是当然。再好的production stack也只能是一个入门的指引,用户肯定需要在这个基础上做很多很多的调整。production stack的象征意义大于实际意义:对于那些对部署环境的性能、伸缩性、可靠性等有怀疑的人,可以让他们看到,RoR的部署环境是很好并且很容易得到的。要真说用起来,说实话,我不认为任何non-trivial的网站能够直接在任何一个production stack上部署而不需要自己调整。但一个好的production stack能够给你指出方向,而不用什么都从头去摸索。
0 请登录后投票
   发表时间:2007-07-07  
freemind 写道
dogstar 写道
haproxy+mongrel

静态资源怎么处理?直接交给mongrel?
把haproxy整合进lighttpd多好,呵呵




没有这个必要性。lighttpd自己对于fastcgi的负载均衡分发能力就足够强了。如果真的到了lighttpd都撑不住的时候,像haproxy这种应用级别的balancer也一样撑不住的。到了那个时候起码得是kernel级别的LVS来做负载分发了,或者直接购买硬件负载均衡器。


前面你不是说过lighttpd的proxy现在很差么,haproxy很强。现在怎么有差不多了?
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics