この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
playの自動起動スクリプト
実装、テストが完了し、いよいよ本番環境での動作となると、アプリケーションの起動や終了も制御する必要があります。 Play frameworkでは通常play runで起動しますが、バックグラウンドで実行したい場合はplay startコマンドでアプリケーションを起動します。
今回はシステムの起動時にアプリケーションも起動させたかったので、ここを参考に起動スクリプトを作成しました。 これを使用すれば、/etc/rc.d/init.d/play start/stop/status/cleanなどの コマンドが使用できるようになり、ランレベルの設定で自動起動も可能になります。
起動スクリプトを作成する
まずは/etc/rc.dディレクトリにリンク先にあるスクリプトをplayという名前で保存します。 下記に変更した点のみを記述します。パスやユーザー名は各環境にあわせてください。
・・・
# Path to play install folder
PLAY_HOME=/yourplayhome/play-1.2.4
PLAY=$PLAY_HOME/play
# Path to the JVM
JAVA_HOME=/yourjavahome/jdk1.6.0_30
export JAVA_HOME
# User running the Play process
USER=username
# Path to the application
APPLICATION_PATH=/yourappname/appname
# source function library
. /etc/init.d/functions
RETVAL=0
start() {
echo -n "Starting Play service: "
su $USER -c "${PLAY} start ${APPLICATION_PATH} --%prod >/dev/null"
RETVAL=$?
}
・・・・
実際に下記箇所でアプリケーションを起動しているのです。 なお、--%prodは本番環境用で起動するために付け足しています。 オプションが必要な場合はこの行に記述すればよいでしょう。
su $USER -c "${PLAY} start ${APPLICATION_PATH} --%prod >/dev/null"
次に作成したファイルにパーミッションを与え、サービス起動設定を行います。
$ chmod +x /etc/init.d/play
$ chkconfig --add /etc/init.d/play
$ chkconfig play on
これでシステム起動時にplayコマンドが実行されるようになりました。 もし明示的に実行したい場合、下記のようにserviceコマンドで実行します。
# service play start
# service play stop
# service play status
これでシステム起動時にplayアプリケーションが実行されるようになりました。 注意点として、play startの途中にstopを実行すると、プロセスが残ってstopコマンドでも停止できなくなるので注意してください。 ※もしそうなった場合はkillコマンドでプロセス番号を指定して停止