ぐるっとぐりっど

日曜プログラマがいろいろ試してみたことを、後の自分のためにまとめておく場所

Passengerの浸食を食い止める

タイトルは大げさすぎるけど、超悩んでた事象が解決したので、同じ悲しみを二度繰り返さないための自分用メモ

あらすじ

  1. チケット駆動開発を試そうと思ってredmineを導入した
  2. railsの設定やpassengerの設定を行った
    • 巷で噂のpassenger-install-apache2-module –snippetもばっちり確認済みでこれでOKと確信していた。。。
    • VirtualHostはめんどくさいので使用せずに一つのサブディレクトリで動かすことにした(example.com/path/to/redmine/)

このときの/etc/httpd/conf.d/passenger.conf

LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p392/ruby
PassengerAppRoot /local/redmine
RackBaseURI /path/to/redmine
RailsEnv production

襲いかかる不具合

  • faviconが常にredmineのそれ(/path/to/redmine 以外でも)
  • 404ページも常にredmineのそれ
  • DirectoryIndexが効かない
    • DirectoryIndexにindex.phpを追記しているにも関わらず、/path/to/php/ で404エラーが出る
    • /path/to/php/index.php なら表示される
      • つか、/path/to/php/ で403なら百歩譲ってわからんでもないけど、404って何ぞ
  • ほかにもRewriteRuleとか、apacheの設定全般うまく効いてないっぽい

解決方法

Passengerが全体で有効になってしまっていたのが原因と判明し、redmineのディレクトリに限りpassengerを有効にするように設定ファイルを修正し、ことなきをえた

PassengerEnabled Off
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p392/gems/passenger-3.0.19
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p392/ruby
PassengerAppRoot /local/redmine
RackBaseURI /path/to/redmine
RailsEnv production
Alias /path/to/redmine "/local/redmine"
<Directory "/local/redmine">
PassengerEnabled On
</Directory>

横着しないで、バーチャルホストを指定していればこんな苦労はしなかったろうに