§追加設定
アプリケーションを本番モードで実行するときに、任意の設定を上書きすることができます。このセクションでは、この「追加設定」のよくあるユースケースを紹介します。
これらすべての追加設定は Java のシステムプロパティを使って指定しているため、Play によって生成された起動スクリプトを利用している場合は、そのまま使用することができます。
§HTTP サーバーのアドレスとポートを指定する
HTTP ポートとアドレスの両方を指定することができます。デフォルトはポート 9000
、アドレス 0.0.0.0
(全てのアドレス)です。
$ /path/to/bin/<project-name> -Dhttp.port=1234 -Dhttp.address=127.0.0.1
この設定はデフォルトの組み込み Netty サーバだけが利用します。
§JVM の起動オプションを指定する
start
スクリプトに JVM の起動オプションを指定することができます。指定しなかった場合は、 JVM のデフォルト設定が利用されます。
$ /path/to/bin/<project-name> -J-Xms128M -J-Xmx512m -J-server
便宜上、メモリの最小値、最大値、パーマネント領域や ReservedCodeCacheSize を一度に設定することもできます; これらの値は (メモリの最大値を表す) 与えられた引数を元に計算式を使って決定されます:
$ /path/to/bin/<project-name> -mem 512 -J-server
§代替の設定ファイルを指定する
デフォルトで読み込まれる設定ファイルはクラスパス上の application.conf
です。必要に応じて、別の設定ファイルを指定することができます。
§-Dconfig.resource
を使う
アプリケーションのクラスパスで代替の設定ファイルを検索します。(普通はこのような代替の設定ファイルを、パッケージング前にアプリケーションの conf/
ディレクトリに入れておくとよいでしょう。) Play は conf/
ディレクトリを検索するので conf/
を加える必要はありません。
$ /path/to/bin/<project-name> -Dconfig.resource=prod.conf
§-Dconfig.file
を使う
アプリケーションのバイナリにパッケージングされていない、ファイルシステム上の設定ファイルを指定することができます。
$ /path/to/bin/<project-name> -Dconfig.file=/opt/conf/prod.conf
§-Dconfig.url
を使う
任意の URL を指定して、設定ファイルをロードすることができます。
$ /path/to/bin/<project-name> -Dconfig.url=http://conf.mycompany.com/conf/prod.conf
Note that you can always reference the original configuration file in a new
prod.conf
file using theinclude
directive, such as:include "application.conf" key.to.override=blah
§特定の設定キーを上書きする
設定ファイル全体を置き換えたいのではなく、いくつかの設定値キーを上書きできればよい、ということもあるでしょう。その場合は、 Java のシステムプロパティを利用して次のようにします。
$ /path/to/bin/<project-name> -Dapplication.secret=abcdefghijk -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 設定ファイルを指定することができます。設定ファイルが指定されなかった場合、play は本番モードにおいてデフォルトの logger.xml
を使用することを覚えておいてください。これは application.conf にて設定したあらゆるログレベルが上書きされることを意味しています。常に自身の application-logger.xml
を指定するのが良いプラクティスです。
§-Dlogger.resource
を使う
別の logback 設定ファイルをクラスパスから読み込みことができます。
$ /path/to/bin/<project-name> -Dlogger.resource=conf/prod-logger.xml
§-Dlogger.file
を使う
別の logback 設定ファイルをファイルシステムから読み込むことができます。
$ /path/to/bin/<project-name> -Dlogger.file=/opt/prod/prod-logger.xml
§-Dlogger.url
を使う
別の logback 設定ファイルを URL から読み込むことができます。
$ /path/to/bin/<project-name> -Dlogger.url=http://conf.mycompany.com/logger.xml
§RUNNING_PID のパスを変更する
起動したアプリケーションのプロセス id を含むファイルのパスを変更することができます。通常、このファイルは play プロジェクトのルートディレクトリに配置されますが、/var/run
のような再起動時に自動的にクリアされる場所に配置するのが賢明です:
$ /path/to/bin/<project-name> -Dpidfile.path=/var/run/play.pid
このディレクトリが存在し、Play アプリケーションを実行しているユーザーが書き込み権限を持っていることを確認してください。
このファイルを使うことで、例えば以下のようにして kill
コマンドを使ってアプリケーションを停止することができます:
$ kill $(cat /var/run/play.pid)
§Advanced HTTP server configuration
The Play HTTP server can be tuned in a number of ways via system properties.
Note: You cannot use
application.conf
to configure the HTTP server properties.
The following HTTP protocol options are supported:
http.netty.maxInitialLineLength
- The maximum length for the initial line of an HTTP request, defaults to 4096
http.netty.maxHeaderSize
- The maximum size for the entire HTTP header, defaults to 8192
http.netty.maxChunkSize
- The maximum size that Netty will buffer body chunks before splitting them, defaults to 8192
Play also allows configuring the full list of TCP socket options that Netty supports, by prefixing them with http.netty.option
. Note that socket options that should be applied to sockets of accepted connections should have an additional child
prefix before the option. Here are some common ones:
http.netty.option.child.keepAlive
- Set to true/false to turn on/off TCP keep alive
http.netty.option.backlog
- Configure the maximum size for queued incoming connections
For a full list of supported options, see the following Netty documentation:
Next: フロントエンド HTTP サーバの設定
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。