Documentation

You are viewing the documentation for the 2.2.0 release in the 2.2.x series of releases. The latest stable release series is 2.4.x.

§アプリケーションを本番モードで起動する

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: スタンドアローン版を作成する