Passengerことmod_railsを使ってみた
httpd.confでDocumentRootのディレクトリ名を間違えてパーミッションではまった以外は簡単に導入できた。
Apacheモジュールのインストーラ周りはかなりしっかりしていて、足りないライブラリがあると明示してくれる上、それをインストールするためのyumのコマンドまで教えてくれたりする。
親切だ。
インストールでつまずく人はほとんどいないだろうな。
しかし自作のアプリを動かしてみると以下の問題が出た。
- database.ymlの中でMySQLのソケット位置に関するハックが使えない (※環境によっては使えた。不思議)
- BackgrounDrbとの通信がうまくできずサーバーエラーとなる
いずれもちょっと特殊ケースになるのかもしれないが、商用レベルで動かしているアプリケーションを移行する場合はしっかりテストはした方がよいと思われる。
こういう時のテストはSeleniumがよさげだなぁ。
あとメモリの消費量はけっこうでかい。
PHP5込みのApache2で1プロセス当たり30MB程度だったのが50MBにふくれあがった。
mongrelは1プロセス当たり5MBから6MB程度なのでだいぶ違う。 50MBから60MB。桁間違ってた。 これはメモリの貧弱なマシンにはけっこうきついなー。と、間違い分で認識を改めつつもやはりApacheのプロセスがいくつも立ち上がってしまうときついかなぁ。抑制するオプションはあるっぽいけど。
とは言え、Apacheで簡単にRails運用できる意義はやっぱり大きい。
fast-cgiの設定もいらなくなるし、public以下の.htaccessとかいじる必要もなくなるし(.htaccessは明示的に読ませない限り読まれない。読まなくても勝手にmod_railsがよきに計らってくれる)
バーチャルホストを定義するだけでいいというのは本当にお手軽。
GithubのPassengerのプロジェクトを見ると毎日怒濤のコミットがなされているのでbetaが取れる日も遠くはなさそうだ。
参考
Overview — Phusion Passenger (a.k.a. mod_rails)
追記
メモリ関連はそんなに心配するほどでもなかった。