現在候補は3つ
- Passenger
- Proxy
- fcgi/cgi
比較
比較の条件
- 設定がRailsディレクトリに収まるか。/etc/apache2や/etc/init.dに書くのは面倒だよね。
- インストールが簡単か。コマンド実行だけでいけるか
- 再起動がいるか
- 動作速度は?
手法 | 設定がRailsディレクトリに収まるか。 | インストールが簡単か。 | 再起動が不要か | 動作速度は | raisのエラー表示 |
passenger | x | x | x | ○ | ○ |
proxy | x | x | x | ○ | ○ |
cgi | ○ | ○ | ○ | x | x |
fcgi | x | ○ | x | ○ | x |
mod_proxyは.htaccessに設定書けない。しかも設定するたびにapaache reloadが必要。ってことで不便すぎたわ
cgiは遅い。でも設定がappディレクトリをそのままをアーカイブ出来るので良いし、ドコでも動くし。素敵だわ。
fcgiは速いけど、reloadしまくりって感じだった。
passenger はインストール面倒だし。
Apacheと連携ならpassengerは悪くない選択肢。でも可搬性がなぁ。でも、nginxをApacheの代わりに使うと、貴重なグローバルIPの80番を浪費するし、もどかしぃぃ。
一度動いちゃうと楽だから、passengerは悪くない。でも内部的にproxyしてるってのがイヤですね。cgiはエラーがInternalServerErrorにマッピングされるので・・・あぁもうどれも微妙・・・passengerは悪くない選択肢。でもインストールが。設定が
500 internal server error
CGI/FCGIだとRailsエラーがCGIの500エラーになる。なので、Railsエラーが見られない。開発中はちょっと困る。でも本番運用ならむしろ歓(?)
そもそもRailのサーバーは
2.3系からRack経由になってる。
Rackがあればどうなるの
Rackが抽象化レイヤを提供してくれるので、CGI/Fcgiでも何でも来い。
サポートされてるのは次の物。
http://rack.rubyforge.org/doc/
つまり、RaisはRackが抽象化レイヤの恩恵を受けるので、MongrelでもThinでもなんでもいいし、CGIでも良いんですね。
納得でした
apacheでやることが主眼だから、mongorel使えとか、thinの方が速いとかそういう話題には触れてないです。