ども、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

実行すると以下のように出力されます。

Play Framework: stage コマンドの実行結果

そして hoge アプリケーションを起動する場合には以下のように起動します。

cd hoge
./target/universal/stage/bin/hoge

以下のように出力されます。

Play Framework: stage コマンド実行後、アプリケーション起動後の出力

アプリケーションを停止する場合には 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
  -mem      set 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 しか知らなかったので、「これ、公開する際にどーすんぢゃい」と思っていましたが安心しました…。

startstage のどちらを使うかは要件次第になるかと思いますが、デプロイの自動化等を考慮する場合には個人的には stage なのかなと思っています。

元記事はこちらです。
Play2 のアプリケーションデプロイについて