Documentation

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

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

Play アプリケーションを本番モードで起動する方法はいくつかあります。まずは、ローカル環境に Play をインストールするという最も簡単な方法を試してみましょう。

§start コマンドを使う

アプリケーションを本番モードで起動する最も簡単な方法は、 Play コンソールから start コマンドを実行することです。そのためには、サーバに予め Play 2.0 をインストールしておく必要があります。

[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 compile stage

このコマンドにより、アプリケーションのコンパイル時に生成された一時ファイルが削除され、改めてコンパイルが実行され、必要な依存モジュールがダウンロードされ、これら全てが target/staged ディレクトリへコピーされます。さらに、 Play サーバを起動するための target/start というスクリプトも生成されます。

アプリケーションは次のように起動できます。

$ target/start

生成された start スクリプトはとてもシンプルです。実際のところ、このスクリプトを使わず java コマンドにより直接アプリケーションを起動してもいいくらいです。

もし Play がサーバにインストールされていないのであれば、同じことを行うために sbt を使ってもよいでしょう。

$ sbt clean compile stage