今回はブログエンジンを作成しました。Play アプリケーションを本番環境へセットアップするために一般的に必要な数ステップを見てみましょう。
通常、開発版を作成するために使用していたコンピュータとは違うコンピュータ (サーバ) にアプリケーションをデプロイします。つまり、そこには別の Play インストール環境があります。
Play では、フレームワークのインストール環境ごとに異なる ID を割り当て、同じ application.conf
ファイルで異なる設定を管理することができます。ここでは server01
が本番環境アプリケーションをホストするとしましょう。
このサーバに Play フレームワークをインストールしたら、 paly id
コマンドを使用してフレームワーク ID を定義しましょう。以下のようにタイプしてください:
$ play id
そして ID として server01
を割り当ててください。これで、アプリケーションがこのサーバ上で実行されるときにだけ使用される特別なキーを yabe 設定ファイルに定義することができます。
サーバデプロイ版に特別に設定したい最初のキーは application.mode
プロパティです。これまでは、動的に再ロードし、java ファイルを再コンパイルし、エラーが起こったときには詳細なメッセージを表示する DEV モードを使用しました。一方、 PROD モードでは Play はスタートアップ時にすべての java ソースとテンプレートをコンパイルし、二度と変更を確認しません。
yabe/conf/application.conf
ファイルにて、以下のように定義してください:
%server01.application.mode=PROD
これで、yabe アプリケーションをこのサーバ上で実行した場合、アプリケーションは自動的に PROD モードで起動します。
本番環境では、これまで使用してきたインメモリ H2 データベースに代えて、MySQL をデータベースサーバとして使用します。Play には MySQL 用の JDBC ドライバが含まれているので、何もインストールする必要はありません。
yabe/conf/application.conf
ファイル中のデータベース設定を編集してください:
%server01.db=mysql:root:secret@yabe
ここで、Hibernate がデータベーススキーマを管理する方法を少し調整します。Java モデルオブジェクトが変更されたときに Hibernate が自動的にデータベーススキーマを更新するのは、とても便利です。
jpa.ddl
設定キーを以下のように変更してください:
%server01.jpa.ddl=update
しかしながら、これは予期しない類のものであり、本番環境のデータベースにおいて摩訶不思議なことが実行されるのは良いことではありません。そのため、新しくデプロイする前には常にバックアップを取るべきです。Hibernate にデータベースを更新させたくない場合は、 jpa.ddl
設定キーを validate
に変更してください:
%server01.jpa.ddl=validate
さて、現実的な本番サーバを立てるために、単に組込み HTTP サーバのデフォルトポートを 80 番に変更することができます。しかし、これには提供されたサーバにたったひとつの Play アプリケーションしかインストールできないという制限があります。通常、同じサーバにいくつかのアプリケーションを (ただし、異なる IP ホスト名を使って) インストールするので、リバースプロキシとしてフロント HTTP サーバを使う必要があります。
どのような HTTP サーバを選択し、リバースプロキシとして設定することができますが、"LIGHTTPD":http://www.lighttpd.net/ のような軽量で速いものを使用するのが一般的に良い選択です。
LIGHTTPD の正確な設定はこのチュートリアルの対象範囲外ですが、それは以下のようなものになるはずです:
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 アプリケーションに接続することを許可します:
%server01.XForwardedSupport=127.0.0.1
このチュートリアルを読んで理解したのであれば、今やあなたは熟練した Play 開発者です。あなたは Play アプリケーション開発をドライブする概念のほとんどを知っています。
ここまでくると、 国際化と地域化 にてチュートリアルを続けたいと思うかもしれません。
まだまだ説明していない機能、特に Web サービスに関連する JSON もしくは XML と言った機能があります。Play には、より多くの機能を提供するたくさんのモジュールも含まれています。そして Play そのものが日々進化しています。
もし Play があなたの次の Java web アプリケーションにかかる時間を節約する助けになると確信しているのであれば、あなたはもう Play を始める準備ができています。そして、"Play Google Group":http://groups.google.com/group/play-framework 上で、どんな質問でも躊躇せずに私たちに尋ねてください。
どうもありがとう!