DebianをUpgradeしたらRedmineが動かなくなった件
DebianをJessieからStretchにアップグレードしたらRedmineが動かなくなりました。
MediaWikiやWordpressなどが動いている環境でそのままアップグレードしてもまったく問題なかったため、完全に油断してRedmineが動いているサーバでも同じように実行したらRedmineはダメでありました。
現象
Debian8.9+Apache2+Redmineで稼動していたサーバで、aptのsources.listをjessie→stretchに書き換えてdist-upgradeしたらRedmineがエラーを吐きました。
ブラウザからアクセスすると「We’re sorry, but something went wrong」という画面が表示される、という現象になりました。
しかしSomethingがwrongしたことしかわからないので、Apache2のエラーログを見ると、どうやらpassengerのエラーで、Message from application:Bundler::PermissionErrorと書いてありました。
おそらくアップグレード時にRedmineのインストールフォルダのパーミッションが変更されてしまったのでしょう。
解決策
chown www-data:www-data -R /usr/share/redmine
このように実行してインストールフォルダの所有者を全部Apacheにしてやるとアクセスできるようになりました。
更なる問題
ログインするとInternal Error500と、サーバエラーを吐いて止まるという現象・・・
今度はApacheではなくRedmineのほうのログを確認すると、データベースエラーで、Unknown Columnというのが出ているようです。
その解決策
そこで以下を実行。
rake db:migrate RAILS_ENV=production
これで無事にログインできるようになり、さぁ「マイページ」を表示・・・
またもInternal Error。再びログを確認するとどうやらテンプレートでエラーが発生している様子。
結局のところ、プラグインとDBのマイグレーションを実行し、キャッシュ類をクリアしてWebサーバを再起動する、というのがベストっぽいです。
rake db:migrate RAILS_ENV=production rake redmins:plugins:migrate RAILS_ENV=production rake tmp:session:clear rake tmp:cache:clear systemctl restart apache2
この操作はRedmineのインストールディレクトリ(Rakefileが置いてある場所)で実行します。
Apache2の再起動はいろんな方法がありますが、一応Debian9で推奨されているSystemctlで実行しました。(まだservice apache2 restart)のほうが手に馴染んでますが・・・)
まとめ
Debian8→9へのアップグレードは、考えてみればRedmineのアップグレード、Ruby、Gem、Bundler、Passengerなどのアップグレード、MySQL→MariaDBへの更新などなど、Redmineに関するありとあらゆるものがアップグレードされたといっても過言ではない状況で、そんなものまともに動くはず無いだろ、ということなのでありました。安易にdist-upgradeしちゃダメでありました。
修復手順としては
- RedmineインストールフォルダのPermissionを変更してApache2がアクセスできるようにする
- Redmine関係のmigrateを実行(rake)
- キャッシュ関係のクリア(rake)
- Apache2の再起動
という感じでした。これで無事、新しい環境へアップグレードできました。
ディスカッション
コメント一覧
まだ、コメントがありません