§追加設定
アプリケーションを本番モードで実行するときに、任意の設定を上書きすることができます。このセクションでは、この「追加設定」のよくあるユースケースを紹介します。
追加設定は Java のシステムプロパティを使って指定します。Play によって生成された start
スクリプトを利用している場合、Java のシステムプロパテイを start
スクリプトに直接指定することができます。
§HTTP サーバーのアドレスとポートを指定する
HTTP ポートとアドレスの両方を指定することができます。デフォルトはポート 9000
、アドレス 0.0.0.0
(全てのアドレス)です。
$ start -Dhttp.port=1234 -Dhttp.address=127.0.0.1
この設定はデフォルトの組み込み Netty サーバだけが利用します。
§JVM の起動オプションを指定する
start
スクリプトに JVM の起動オプションを指定することができます。指定しなかった場合は、 JVM のデフォルト設定が利用されます。
$ start -Xms128M -Xmx512m -server
§代替の設定ファイルを指定する
デフォルトで読み込まれる設定ファイルはクラスパス上の application.conf
です。必要に応じて、別の設定ファイルを指定することができます。
§-Dconfig.resource
を使う
アプリケーションのクラスパスで代替の設定ファイルを検索します。(普通はこのような代替の設定ファイルを、パッケージング前にアプリケーションの conf/
ディレクトリに入れておくとよいでしょう。) Play は conf/
ディレクトリを検索するので conf/
を加える必要はありません。
$ start -Dconfig.resource=prod.conf
§-Dconfig.file
を使う
アプリケーションのバイナリにパッケージングされていない、ファイルシステム上の設定ファイルを指定することができます。
$ start -Dconfig.file=/opt/conf/prod.conf
§-Dconfig.url
を使う
任意の URL を指定して、設定ファイルをロードすることができます。
$ start -Dconfig.url=http://conf.mycompany.com/conf/prod.conf
このとき、
prod.conf
に次のようにinclude
命令を記述すると、元の設定ファイルを参照できます。include "application.conf" key.to.override=blah
§特定の設定キーを上書きする
設定ファイル全体を置き換えたいのではなく、いくつかの設定値キーを上書きできればよい、ということもあるでしょう。その場合は、 Java のシステムプロパティを利用して次のようにします。
$ start -Dapplication.secret=verysecretkey -Ddb.default.password=toto
§環境変数を使う
application.conf
から環境変数を参照することができます。
my.key = defaultvalue
my.key = ${?MY_KEY_ENV}
フィールドを上書きする my.key = ${?MY_KEY_ENV}
という記述をしました。これは、MY_KEY_ENV
という値がない場合は単に無かった事にされます。しかし、MY_KEY_ENV
という環境変数が設定されている場合は、環境変数の方が利用されます。
§logback の設定ファイルを変更する
§カスタムの logback 設定ファイルをアプリケーションにバンドルする
application-logger.xml
という代理の logback 設定ファイルを作成し <app>/conf
にコピーします。
システムプロパティを使って別の logback 設定ファイルを指定することができます。
§-Dlogger.resource
を使う
別の logback 設定ファイルをクラスパスから読み込みことができます。
$ start -Dlogger.resource=conf/prod-logger.xml
§-Dlogger.file
を使う
別の logback 設定ファイルをファイルシステムから読み込むことができます。
$ start -Dlogger.file=/opt/prod/prod-logger.xml
§-Dlogger.url
を使う
別の logback 設定ファイルを URL から読み込むことができます。
$ start -Dlogger.url=http://conf.mycompany.com/logger.xml
§RUNNING_PID のパスを変更する
起動したアプリケーションのプロセス ID を記載した、 RUNNING_PID ファイルのパスを変更する事ができます。通常このファイルは play プロジェクトのルートディレクトリに配置されます。
$ start -Dpidfile.path=instance1
これでルートフォルダからのディレクトリを変更します。絶対パスも指定することができます。このオプションによってRUNNING_PID ファイルを衝突 (実際には play は他のインスタンスは起動しません) させずに複数の play インスタンスを起動する事が可能になります。ディレクトリの作成を忘れないで下さい。