ども、cloudpack の かっぱ (@inokara) です。
はじめに
Play2 でアプリケーションを本番環境にデプロイする方法についてドキュメントを参考にしながら触ってみました。
参考
アプリケーションデプロイ二種
注意点
- デフォルトの設定はリクエストを非同期処理するようにアプリケーションをセットアップする
- アプリケーションがブロッキング呼び出し(同期処理?)を実行する場合にはスレッド数、タイムアウト値を増やすことが推奨されている
start コマンド
Play コンソールから start
コマンドを実行します。
[hoge] $ start
この場合に Ctrl+D で Play コンソールは終了するもののプロセスはバックグランドプロセスにて起動し続けます。
root 9059 1.1 7.5 1446496 77340 pts/1 Sl 05:47 0:03 java -Djline.esc.timeout=0 -Djava.runtime.name=OpenJDK Runtime Environment -Dsun.boot.library.path=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre/lib/amd64 -Djava.vm.version=24.65-b04 -Djava.vm.vendo
カレントディレクトリの RUNNING_PID には起動中の PID が記録されていますのでアプリケーションを停止したい場合には…
sudo kill `cat RUNNING_PID`
でアプリケーションを停止することが出来ます。
stage コマンド
デプロイを自動化したい場合には stage
コマンドを利用することで、必要なモジュールがダウンロードとコンパイルが行われて起動に必要なスクリプトまで自動で生成してくれます。尚、アプリケーションの動作に必要なファイル群は ${APP}/target/universal/stage/ 以下に全てコピーされます。
すげえ。
play clean stage
実行すると以下のように出力されます。
そして hoge アプリケーションを起動する場合には以下のように起動します。
cd hoge ./target/universal/stage/bin/hoge
以下のように出力されます。
アプリケーションを停止する場合には Ctrl+C で停止しましょう。(とりあえず)
./target/universal/stage/bin/hoge
はシェルスクリプトになっており、-h
でヘルプを確認することが出来ます。
Usage: [options] -h | -help print this message -v | -verbose this runner is chattier -d | -debug set sbt log level to debug -memset memory options (default: , which is -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m) -jvm-debug Turn on JVM debugging, open at the given port. # java version (default: java from PATH, currently java version "1.7.0_71") -java-home alternate JAVA_HOME # jvm options and output control JAVA_OPTS environment variable, if unset uses "" -Dkey=val pass -Dkey=val directly to the java runtime -J-X pass option -X directly to the java runtime (-J is stripped) In the case of duplicated or conflicting options, the order above shows precedence: JAVA_OPTS lowest, command line options highest.
最後に
Play で構築したアプリケーションを実際に公開する手順について試してみました。今までは run
しか知らなかったので、「これ、公開する際にどーすんぢゃい」と思っていましたが安心しました…。
start
と stage
のどちらを使うかは要件次第になるかと思いますが、デプロイの自動化等を考慮する場合には個人的には stage
なのかなと思っています。
元記事はこちらです。
「Play2 のアプリケーションデプロイについて」