gateway.cgi を使って cgi 環境で rails を実用的に動かす

CGIでRailsをまともに動かすの内容を試してみた。対象は Redmine

とりあえず、fcgiruby-fcgi をインストールする。

$ cd fcgi-2.4.0
$ ./configure --prefix=$HOME/local
$ make && make install
$ gem install fcgi -- --with-fcgi-include=$HOME/local/include

後は、記事にあるように public/gateway.cgi と script/listener、script/tracker をコピーして、一部修正。

それから、サイトのトップで動作させるわけじゃないので、mongrel での --prefix 相当の動作をさせるために、次の修正をした。

config/environments/production.rb:

ActionController::AbstractRequest.relative_url_root = "/redmine"

劇的に、というほどでもないけど、Redmine の本家サイトに見劣りしない程度のレスポンスにはなったようだ。

デフォルトでは listener が最大 3 プロセスで、90 秒の idle で終了、となっている。これが必要になるのはリソースが制限されてる環境だろうから、本格的に動かすのなら、このバランス調整がポイントになりそう。