RedmineはRailsアプリなので、Apache上に普通にインストールするとPassengerを使うことになります。
Passengerを使って動いているRailsアプリは、ソース編集をして、変更を反映させるにはアプリの再起動が必要です。Redmineも例外ではなく、プラグインを入れたり、ソースを編集した後には、再起動しなければ反映されません。
Redmineを含むRailsアプリの再起動は以下の3つの方法があります。私はRedmineの再起動が必要な時には、2つ目の方法を使っていました。
- passenger-config restart-appコマンドを使う
- restart.txtを作成する
- Apacheを再起動する
頻度が高いわけではないのですが、プラグインのアップデートをした後は、毎度restart.txt
を生成して、ブラウザでアクセスして確認ということをしていました。
少し面倒だったので、restart.txt
を生成してアクセスするコマンドを作ってみました。
処理内容はrestart.txt
を生成した後に、curl
を使ってRedmineにアクセスするだけです。tail
では、ログを見ています。再起動するとそのログがerror_log
に吐かれるので、再起動直後のログを出力するようにしてあります。
このスクリプトではrestart.txt
を削除しません。再起動の判定はrestart.txt
生成時間のタイムスタンプを見ているとのことなので、削除不要と考えています。
#!/bin/sh
touch /var/lib/redmine/tmp/restart.txt
curl -s 'http://localhost/redmine/' >/dev/null
tail /var/log/httpd/error_log | grep redmine | tail -n1
また、この記事を書くにあたって、PassengerのRailsアプリの再起動について調べていたところ、restart.txt
を使わない方法があることがわかりました。それが先ほどの3種類のうち、1つめにあたる再起動方法です。
公式ではこの方法が良いと記載されています。
The preferred method for restarting an application, is through the passenger-config restart-app tool. This tool can run interactively or non-interactively.
引用 - https://www.phusionpassenger.com/
コマンドを打つだけなのでわざわざスクリプト化する必要も無いと思いますが、せっかくなのでこっちのパターンでも作成してみました。
このパターンではRedmineにアクセスする必要はなく、コマンド実行直後にRedmineが再起動されます。
#!/bin/sh
passenger-config restart-app /var/lib/redmine
tail /var/log/httpd/error_log | grep redmine | tail -n1
参考サイト
Passengerアプリの再起動についてhttps://www.phusionpassenger.com/library/admin/apache/restart_app.html
再起動時に出力されるログについて確認しました
http://qiita.com/kinushu/items/12e240f6e0379d993008