play frameworkの自動起動設定

簡単なplayのアプリケーションを作ってさくっとデプロイして本番運用していたが、本番機のロードアベレージが常に1を上回るようになってびっくり。調べると、playのプロセスがCPUを専有していた。単純にplay runで起動していたが、これを変更。

プロジェクト内で

$ play clean compile stage

を実行して、target/startファイルが作る。このとき自動起動の環境が整えられるらしい。あとは/etc/init.d/playなどに、

	cd /usr/local/play/name_of_project
target/start -server -Xms128m -Xmx128m &

などとするとよい。終了用には

	cd /usr/local/play/name_of_project
kill -TERM `cat RUNNING_PID`

play-2.2.3で変更があったもよう。startコマンドはtarget直下ではなく、

target/universal/stage/bin/name_of_project

に変更になった。コマンド名もstartではなくなった。起動スクリプトには以下のように書くべし。

	cd /usr/local/play-2.2.3/name_of_project
target/universal/stage/bin/name_of_project -Dhttp.port=9001 > /dev/null 2>&1 &


停止時に使うRUNNING_PIDもtarget直下からtarget/universal/stageに移動した。