浏览 6388 次
锁定老帖子 主题:mod_rails尝鲜
精华帖 (0) :: 良好帖 (13) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-13
Rails部署也可以简单得像PHP一样 Passenger(mod_rails)新的RoR部署方式 其中性能评测更加令人印象深刻 ![]() 好像还有人称,未来RoR的主流部署方式将是mod_rails,而且这个项目的作者还貌似一个华人,叫做“赖洪礼”,所有的这一切都让人挺有兴趣,于是我在周末也简单的安装和测试了一把。 如果已经安装好Apache和Ruby on Rails的环境,并且把Apache的bin目录和ruby的bin目录配置到PATH环境变量下面,那么安装Passenger倒也很简单: gem install passenger passenger-install-apache2-module 安装好以后,他会提示你如下配置Apache(具体环境可能稍有不同): LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.8/gems/passenger-1.0.1/ext/apache2/mod_passenger.so RailsSpawnServer /usr/local/ruby/lib/ruby/gems/1.8/gems/passenger-1.0.1/bin/passenger-spawn-server RailsRuby /usr/local/ruby/bin/ruby NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "/home/webroot/demo/public" ServerName 192.168.0.3 ErrorLog "logs/rails-error_log" CustomLog "logs/rails-access_log" common </VirtualHost> 前面三行是注册Apache的module,以及该module的相关启动脚本,后面就是标准的Apache虚拟主机配置方法了,指明rails项目的public路径就可以了。 在Apache运行起来之后,Apache启动了一个Rails的Passenger进程,该进程是用来管理ruby进程的启动关闭以及响应请求的,如果访问量比较大,该进程还会陆续启动子进程,来提高更多的ruby进程管理,如下所示: root 5981 5980 0 13:37 ? 00:00:00 Passenger spawn server root 6086 5981 0 13:40 ? 00:00:01 Passenger FrameworkSpawner: 2.0.2 daemon 6350 6086 0 13:54 ? 00:00:00 Passenger ApplicationSpawner: /home/webroot/demo 以上的3个ruby进程是控制进程,此外,还会根据web请求的数量,启动相应数量的Ruby进程来处理Rails请求。这些ruby进程在控制进程的控制下,当web请求负载高的时候,会动态创建更多进程,当web请求负载低的时候,就会动态销毁,以节省内存。控制进程和Rails进程之间使用Unix Socket来通讯。 mod_rails的大致原理就是这样的。这种运行方式有点类似Apache以mod_fastcgi方式来运行Rails,但因为通讯方式和控制进程都要好得多,因此不会出现mod_fastcgi的好多问题。 mod_rails提供了apache上面另外一种可以选择的Rails部署方式,但是这种部署运行方式也不可避免的带有致命缺陷。正因为ruby进程是动态创建,而我们知道Rails进程启动的时候是非常消耗CPU的操作,因此黑客可以很容易的通过瞬时发起数量巨大的并发web动态请求让服务器因为忙于创建大量的Rails进程而陷于瘫痪。 另外对于虚拟主机提供商来说,ruby进程的数量是根据请求量动态调整的,因此无法根据付费用户来分配限制相应的资源,这不像mongrel那样好控制用户使用的资源数量。因此预期Rails虚拟主机提供商也不会采用mod_rails。 最后我个人觉得,随着Lighttpd和nginx的崛起,Apache真的已经可以淘汰了,Apache这种多进程web服务器实在太消耗服务器资源,也太容易被DOS攻击了,任何依赖Apache的部署方案都有点过时了。 如果说要我推荐的话,Rails部署的性能首选还是Lighttpd+FastCGI,次选则可以考虑 nginx + thin/mongrel 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-13
这个东西到目前为止还是没有支持windows平台
如果可以支持win倒是首选,但现在看来仅仅在nix系统下可以用,性能又不如lighttpd和nginx,不见得就有多棒啊。实在不知为何DHH对这个东西赞扬有加。 |
|
返回顶楼 | |
发表时间:2008-04-14
我的印象是,DHH是想用mod_rails代替目前最流行的mongrel的。和zed shaw前一段的表演很有关系。
|
|
返回顶楼 | |
发表时间:2008-04-14
不过再mod_rails中提到的客户就包括了Dreamhost这样的虚拟空间提供商,因此Robbin说的“因此预期Rails虚拟主机提供商也不会采用mod_rails。”有待商榷。
|
|
返回顶楼 | |
发表时间:2008-05-03
看apache3有没有质的提升
|
|
返回顶楼 | |
发表时间:2008-05-07
passenger 在低并发的时候性能非常好,高并发局限于apache
关键是部署太方便了 |
|
返回顶楼 | |
发表时间:2008-05-07
为什么每个新出来的服务程序都说自己比以前的性能高呢??
|
|
返回顶楼 | |
发表时间:2008-05-14
dreamhost已经提供mod_rails了
|
|
返回顶楼 | |
发表时间:2008-05-15
hostingrails也已经提供mod_rails了
|
|
返回顶楼 | |
发表时间:2008-05-15
我觉得还是mod_fcgid(不是mod_fastcgi)实际点
|
|
返回顶楼 | |