いきさつ
aptでアップデートできるからと何も考えずにApacheを2.2から2.4.7にアップデートしたら、Apache経由で運用していたSubversionとRedmineが動かなくなった。
Subversionはすぐに解決できた。
同様の対処をRedmineにも適用したが、Apacheとの連携がうまくいかなかった。
色々試したのでどれが良かったのかわからずじまいだが、やったことをまとめる事にした。
原因
原因その1
私は知らなかった。次のコマンドがあることを。
- a2ensite
- a2dissite
- a2enmod
- a2dismod
原因その2
Apacheでアクセス制御するディレクティブが変更されていた1。
以下の旧ディレクティブをRequireに置き換えた。
- Allow
- Deny
- Order
ちなみにmod_access_compatというディレクティブを使えば旧ディレクティブも使えるらしい。
対処
対処その1
a2en...、a2dis...というコマンドを知らなかった私は、mods-enablesとsite-enableに直接シンボリックリンクを作っていた。
それが2.4.7では機能しなくなったらしい。
その対処方法として次のことをした。
- 手動で作った
/etc/apache2/site-enable
配下のシンボリックリンクを削除 -
/etc/apache2/site-available
配下のファイルに拡張子.conf
を追加(ex. 001-redmine → 001-redmine.conf) -
sudo a2ensite ファイル名
を実行
その他の対処
それでもRedmineは動かず、/var/log/apache2/error.log
を覗いてみるとRubyの実行でエラーが起きていた。
要は、ApacheとRailsの連携がうまくいっていなかったらしい。
やったこと
- Rubyのバージョンアップ 2.2.2 → 2.2.3
- Passenger5.0.21をインストール(旧バージョン5.0.7)
- passenger-install-apache2-moduleを実行
- passenger.confファイルを分割、移動
- Redmineのアップデート(3.0.? → 3.0.6)
passenger.conf
対処その1から推測すると、passenger.confのパスを移動してa2enmodを使用したことが、最も効果があったのではと思う。
apache2.conf
ファイルのコメントを読んでも/etc/apache2/conf.d/
に言及していないので、デフォルトではこのディレクトリを読み込まなくなったのだろう。
/etc/apache2/conf.d/passenger.conf
の中身はpassenger-install-apache2-moduleで出力された内容の通りだったので、以下のようにファイルを分割して、他のモジュールと同様に配置した。
-
/etc/apache2/mods-available/passenger.load
でLoadModule -
/etc/apache2/mods-available/passenger.conf
でIfModuleディレクティブの内容記述
分割、配置したらa2enmodコマンドで適用すること。