h1. 本番環境への準備

今回はブログエンジンを作成しました。Play アプリケーションを本番環境へセットアップするために一般的に必要な数ステップを見てみましょう。

h2. <a>フレームワーク ID の定義</a>

通常、開発版を作成するために使用していたコンピュータとは違うコンピュータ (サーバ) にアプリケーションをデプロイします。つまり、そこには別の Play インストール環境があります。

Play では、フレームワークのインストール環境ごとに異なる ID を割り当て、同じ @application.conf@ ファイルで異なる設定を管理することができます。ここでは @server01@ が本番環境アプリケーションをホストするとしましょう。

このサーバに Play フレームワークをインストールしたら、 @paly id@ コマンドを使用してフレームワーク ID を定義しましょう。以下のようにタイプしてください:

bc. $ play id

そして ID として @server01@ を割り当ててください。これで、アプリケーションがこのサーバ上で実行されるときにだけ使用される特別なキーを yabe 設定ファイルに定義することができます。

h2. <a>PROD モードアプリケーションの設定</a>

サーバデプロイ版に特別に設定したい最初のキーは @application.mode@ プロパティです。これまでは、動的に再ロードし、java ファイルを再コンパイルし、エラーが起こったときには詳細なメッセージを表示する **DEV** モードを使用しました。一方、 **PROD** モードでは Play はスタートアップ時にすべての java ソースとテンプレートをコンパイルし、二度と変更を確認しません。

@yabe/conf/application.conf@ ファイルにて、以下のように定義してください:

bc. %server01.application.mode=PROD

これで、yabe アプリケーションをこのサーバ上で実行した場合、アプリケーションは自動的に **PROD** モードで起動します。

h2. <a>MySQL サーバの設定</a>

本番環境では、これまで使用してきたインメモリ H2 データベースに代えて、MySQL をデータベースサーバとして使用します。Play には MySQL 用の JDBC ドライバが含まれているので、何もインストールする必要はありません。

@yabe/conf/application.conf@ ファイル中のデータベース設定を編集してください:

bc. %server01.db=mysql:root:secret@yabe

ここで、Hibernate がデータベーススキーマを管理する方法を少し調整します。Java モデルオブジェクトが変更されたときに Hibernate が自動的にデータベーススキーマを更新するのは、とても便利です。

@jpa.ddl@ 設定キーを以下のように変更してください:

bc. %server01.jpa.ddl=update

しかしながら、これは予期しない類のものであり、本番環境のデータベースにおいて摩訶不思議なことが実行されるのは良いことではありません。そのため、新しくデプロイする前には常にバックアップを取るべきです。Hibernate にデータベースを更新させたくない場合は、 @jpa.ddl@ 設定キーを @validate@ に変更してください:

bc. %server01.jpa.ddl=validate

h2. <a>フロント HTTP サーバの設定</a>

さて、現実的な本番サーバを立てるために、単に組込み HTTP サーバのデフォルトポートを 80 番に変更することができます。しかし、これには提供されたサーバにたったひとつの Play アプリケーションしかインストールできないという制限があります。通常、同じサーバにいくつかのアプリケーションを (ただし、異なる IP ホスト名を使って) インストールするので、リバースプロキシとしてフロント HTTP サーバを使う必要があります。

どのような HTTP サーバを選択し、リバースプロキシとして設定することができますが、"LIGHTTPD":http://www.lighttpd.net/ のような軽量で速いものを使用するのが一般的に良い選択です。

LIGHTTPD の正確な設定はこのチュートリアルの対象範囲外ですが、それは以下のようなものになるはずです:

bc. server.modules = (
      "mod_access",
      "mod_proxy",
      "mod_accesslog" 
)
…
$HTTP["host"] =~ "www.yabe.com" {
    proxy.balance = "round-robin" proxy.server = ( "/" =>
        ( ( "host" => "127.0.0.1", "port" => 9000 ) ) )
}

そして、 @application.conf@ ファイルに以下のキーを追加することで、このローカルリバースプロキシが Play アプリケーションに接続することを許可します:

bc. %server01.XForwardedSupport=127.0.0.1

h2. <a>これは始まりに過ぎません</a>

p(note). このチュートリアルを読んで理解したのであれば、今やあなたは熟練した Play 開発者です。あなたは Play アプリケーション開発をドライブする概念のほとんどを知っています。
 
ここまでくると、 %(next)"国際化と地域化":guide12% にてチュートリアルを続けたいと思うかもしれません。

まだまだ説明していない機能、特に Web サービスに関連する JSON もしくは XML と言った機能があります。Play には、より多くの機能を提供するたくさんのモジュールも含まれています。そして Play そのものが日々進化しています。

もし Play があなたの次の Java web アプリケーションにかかる時間を節約する助けになると確信しているのであれば、あなたはもう Play を始める準備ができています。そして、"Play Google Group":http://groups.google.com/group/play-framework 上で、どんな質問でも躊躇せずに私たちに尋ねてください。
 
**どうもありがとう!**