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 一直没管结果域名挂了,过阵子再把它恢复吧…… -_-;
“页面补丁”插件
晚上花了 5 分钟 (没错,就是 5 分钟),完成了这个插件。
功能就是在 Blog 的某些位置插入自定义的内容,目前支持的位置: 文章正文上方、文章正文下方、文章简介的下方,以后再开发新的位置~
可以拿来插入广告,比如本文下方的 google ad,或者插入版权声明什么的,很方便~
Chito 1.0.1 更新摘要
修正一些 bugs,改善一些小地方。
开始用 SVN 管理 Chito 代码
原来一直以为 SVN 是个很复杂的东西,而且觉得 SVN 只有在多人协作的时候才能发挥左右。当初 Ruby中文社区 的版主 skyover 就建议我把项目移到 SVN 上去,不过因为当时忙着毕业,再加上对 SVN 一点都不了解,就没顾上搞,真是不好意思。
这两天花了点时间看了看 SVN 的东西,发现这东西还真是简单,一条命令就可以在电脑上创建个项目仓库,基于目录的管理清晰明了,常用的命令就那么几个: commit, update, co, diff, info, status,其他一切神奇的事情 SVN 都会帮你做好。
确实,SVN 更适合团队协作的情况,像我这样只是一个人搞个超小的项目,很多 SVN 都优点都没有用到。不过,只要花 5 分钟把项目迁移到 SVN 上去,就可以让 SVN 管理你的代码,保存你每一次的改动,告诉你版本之间某个文件的差异,让你可以追溯到之前的任何一个版本……何乐而不为呢~
Chiro 1.0rc 更新摘要
终于把 1.0rc 放到了服务器上,欢迎大家来测试~
这次更新不少,代码基本上全部重写了,很多地方的结构都变了,最后还把代码迁移到了 Rails 2.0 上,当初也没想到会更新这么多内容。