Nginx + Passenger 也不错
最开始把 Chito 切换到 Rails3.0 之后,发现新建项目并没有自动生成 dispatch.fcgi 文件,拿 Rails2.x 的文件来用,却不知道怎么的失败了,上网搜了一圈,没搜到什么解决办法,倒是搜到一大堆“fastcgi 的 Rails 部署模式已经过时”云云的评论,郁闷之余心想这也是个尝试新部署方法的好机会。
于是就采用了 Nginx + Passenger 这个时髦的方案。不得不说这个方案的配置方法实在是太轻松了,运行一个 passenger-install-nginx-module 命令,就可以自动帮你下载 nginx,然后自动编译进 Passenger 模块,再自动写好配置文件,只需要改一下自己的 Rails 程序的目录位置,然后就可以跑了~
什么附加的参数也不用写,默认的配置下运行的状况就非常良好。开始总觉得相比以前的 Lighttpd,响应速度有点慢,不过运行了两天下来,发现也没有那么严重。除此之外,都是优点。
首先最意外的就是内存占用了:
对比很强烈,凌晨 1 点做了切换。左边是 Lighttpd + fastcgi + ruby1.8.7 + Rails2.3.8,右边的就是 Nginx + Passenger + ruby1.9.2 + Rails3.0,打开了同样的进程数,但是后者的内存占用(绿色 apps 部分)降低了一半多。不过我估计大部分的原因是 ruby1.9.2 和 ruby 1.8.7 的差别造成的,具体的原因是什么也懒得研究了,总之感觉很爽。
使用 Passenger 的另一个好处就是有两个命令:passenger-status 和 passenger-memory-stats,可以用来查看当前 Passenger 服务的运行状况和内存占用状况,配合 Munin,可以像上面监控系统资源那样,监控 Passenger 服务的运行状况:
相比 fastcgi 要方便一些。关于 Munin 的 Passenger 监控配置,可以参考这里。
从这次切换的结果来看,ruby1.9 很稳定,尤其是前两天的 1.9.2 已经非常好用了,在新 mysql2 的配合下,所谓的字符编码问题也基本没有碰到。
Rails 3.0 似乎也没什么大问题,刚上线的时候确实出现了一些诡异的问题,不过后来都发现是第三方的 Rails 插件造成的。虽然 3.0 相对 2.x 很多的 API 写法都要改变,但是改过来后基本不会出现什么问题,对于 3.0 诸多的新特性(目前最爱的就是 ARel Query API 了)来说,这种改动非常值得,新项目也可以直接就用 3.0 了。
话说经常有人问哪里可以下载到 Chito 的源代码,目前在 Github 上:
http://github.com/galeki/chito
现在的 master 分支就是最新的 Rails3 版本,如果想使用 Rails2.x 的版本,可以用 v1.1.7-for-rails-2.x 这个 Tag。
chitolog.org 一直没管结果域名挂了,过阵子再把它恢复吧…… -_-;