§アプリケーションを本番モードで起動する
Play アプリケーションを本番モードで起動する方法はいくつかあります。まずは、ローカル環境に Play をインストールするという最も簡単な方法を試してみましょう。
本番環境では、play アプリケーション毎に異なる設定が必要であることに注意してください。デフォルトの設定は、リクエストを主に非同期で処理するようアプリケーションをセットアップします。アプリケーションが主にブロッキング呼び出しを実行する場合は、利用可能なスレッド数とタイムアウト値を増やすことをおすすめします。
§start コマンドを使う
アプリケーションを本番モードで起動する最も簡単な方法は、 Play コンソールから start
コマンドを実行することです。そのためには、サーバに予め Play をインストールしておく必要があります。
[My first application] $ start
run
コマンドは開発モードのためだけに用意されたものなので、本番環境では絶対に利用しないでください。開発モードの場合、リクエスト毎に sbt が全てのソースファイルの更新チェックを行ってしまいます。
start
コマンドを実行すると、 Play は JVM を新たにフォークして、標準の Netty HTTP サーバを起動します。そのとき、標準出力が Play コンソールにリダイレクトされるので、そこからアプリケーションの状態をモニタリングすることができます。
サーバの起動時にはサーバのプロセス ID が表示されると同時に、
RUNNING_PID
というファイルに書き込まれます。起動中の Play サーバを停止させるためには、単にそのプロセスにSIGTERM
シグナルを送信してアプリケーションを終了すればよいでしょう。
Ctrl+D
を入力すると、 Play コンソールは終了しますが、生成されたサーバ・プロセスはバックグラウンドで動作を続けます。そのとき、フォークした JVM の標準出力は閉じられてしまいますが、ログは logs/application.log
というファイルに出力され続けます。
Ctrl+C
を入力すると、Play コンソールとフォークした Play サーバの両方の JVM を終了します。
前述の方法の他に、 OS のコマンドプロンプトから play start
を直接実行しても、同じことができます。
$ play start
ノート: -Dhttp.port システム変数を渡すことで、 HTTP のポート番号を変更することができます。
§stage タスクを使う
start
コマンドはアプリケーションを対話的に起動するため、手作業が必要であり、また プロセスを切り離すために Ctrl+D
が必要です。つまり、この方法はデプロイを自動化するには向いていません。
こんなとき stage
タスクを利用すると、アプリケーションが後で即座に起動できるように、準備をすることができます。プロジェクトを後で即座に実行できるようにするための典型的なコマンドは次のようなものです。
$ play clean stage
このコマンドにより、アプリケーションのコンパイル時に生成された一時ファイルが削除され、改めてコンパイルが実行され、必要な依存モジュールがダウンロードされ、これら全てが target/universal/staged
ディレクトリへコピーされます。さらに、<start>
がプロジェクトの名前となる bin/<start>
スクリプトも生成されます。これは Play サーバを起動する Unix 系システム向けのスクリプトですが、 Windows 向けの bat
ファイルも同様に生成されます。
例えば、‘foo’ プロジェクトのアプリケーションをプロジェクトフォルダから起動する場合は、次のように起動することができます:
$ target/universal/stage/bin/foo
次のようにして、本番環境用の別の設定ファイルを指定することもできます:
$ target/universal/stage/bin/foo -Dconfig.file=/full/path/to/conf/application-prod.conf
完全な使い方の説明については、“-h” オプションを指定してこのスクリプトを起動してください。
Next: スタンドアローン版を作成する