Passenger を使っていて、ディレクトリのautoindexが効かなくて困った。
Passengerもいくらか枯れてきている感じなので先日試したところ、確かに管理が楽なので最近気に入っている。ちょっと前まではRailsアプリケーションのデプロイと言えばmongrel+mod_proxy_blancerだったのだけれども、最近はpassengerの人気が上がっている。
passenger人気の理由はいくつかある。
- Rack という汎用の仕組みをサポートしていること。だから、passengerがあればrailsだけでなくmerbもsinatraも動く。
- デプロイが楽なこと。SSHでサーバーに入ってアプリケーションサーバーを再起動、とかやらなくて良い。まーこれはcapistranoやvladでデプロイしている私にはあまり関係ないけど、PHPアプリケーションやJava EE warの「ディレクトリにファイルを置くだけ」という手軽さを持ち込んだのは裾野を広げる意味でRailsにとって大きな一歩だ。
インスタンスの数の自動調整をすること。負荷に応じてアプリケーションサーバーのプロセス数を自動的に調節し、死活管理してくれる。
のだけれども、細かなところで不満はある。autoindexが効かなくて困った。 マニュアル には、こう書いてある。
In places where PassengerHighPerformance is turned on, mod_rewrite rules will likely not work. mod_autoindex (the module which displays a directory index) will also not work.
だから、PassengerHighPerformance modeをonにしなければautoindexは効きそうなんだけど、Aliasと組み合わせると駄目なんだろうか? ともあれ、Aliasを切ったディレクトリに対して
PassengerEnabled off
したところ、autoindexでディレクトリインデックスが表示されるようになった。
Passengerのソースコードは最初に出たときにざっと眺めただけなのだけれども、mod_proxy_blancerを使うのと違ってApacheパイプラインの中のどのステージでなにをやってるのかいまいち把握できていないのがたまにもどかしい。先日も、passengerの出力にfilterを効かせるにはどうしたら良いのか悩んで、結局よく分からなかった。やっぱり、そろそろソースを読む頃合いだろう。