コードでの設定
Ktorでは、ホストアドレス、ポート、
embeddedServer または EngineMainembeddedServerを使用すると、必要なパラメータを関数に直接渡すことでサーバーを設定できます。 embeddedServer 関数は、
このセクションでは、embeddedServerを実行するいくつかの異なる例を見て、サーバーを有利に設定する方法を説明します。
基本設定
以下のコードスニペットは、Nettyエンジンと8080ポートを使用した基本的なサーバー設定を示しています。
portパラメータを0に設定すると、サーバーをランダムなポートで実行できることに注意してください。 embeddedServer関数はエンジンインスタンスを返すため、 ApplicationEngine.resolvedConnectors 関数を使用してコード内でポート値を取得できます。
エンジン設定
embeddedServer関数を使用すると、configureパラメータを介してエンジン固有のオプションを渡すことができます。このパラメータには、すべてのエンジンに共通し、 ApplicationEngine.Configuration クラスによって公開されるオプションが含まれます。
以下の例は、Nettyエンジンを使用してサーバーを設定する方法を示しています。configureブロック内で、ホストとポートを指定するためのconnectorを定義し、様々なサーバーパラメータをカスタマイズします。
connectors.add()メソッドは、指定されたホスト (127.0.0.1) とポート (8080) を持つコネクタを定義します。
これらのオプションに加えて、その他のエンジン固有のプロパティを設定できます。
Jetty
Jetty固有のオプションは、 JettyApplicationEngineBase.Configuration クラスによって公開されます。
Jettyサーバーは configureServer ブロック内で設定でき、そこから Server インスタンスにアクセスできます。
idleTimeoutプロパティを使用して、コネクションが閉じられる前にアイドル状態になり得る時間の長さを指定します。
カスタム環境
以下の例は、 ApplicationEngine.Configuration クラスで表現されるカスタム設定を使用して、複数のコネクタエンドポイントを持つサーバーを実行する方法を示しています。
完全な例については、 embedded-server-multiple-connectorsを参照してください。
TIP
カスタム環境を使用して HTTPSを提供する こともできます。
コマンドライン設定
Ktorでは、コマンドライン引数を使用してembeddedServerを動的に設定できます。これは、ポート、ホスト、タイムアウトなどの設定を実行時に指定する必要がある場合に特に役立ちます。
これを実現するには、 CommandLineConfig クラスを使用してコマンドライン引数を設定オブジェクトにパースし、設定ブロック内で渡します。
この例では、Application.Configurationの takeFrom() 関数が、portやhostなどのエンジン設定値を上書きするために使用されます。 loadCommonConfiguration() 関数は、タイムアウトなど、ルート環境から設定をロードします。
サーバーを実行するには、次のように引数を指定します。
TIP
静的な設定には、設定ファイルまたは環境変数を使用できます。 詳細については、 ファイルでの設定 を参照してください。