Play frameworkメモ -Linux環境での自動起動

2011.12.27

この記事は公開されてから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コマンドでプロセス番号を指定して停止