HttpPlatformHandler 構成リファレンス
IIS チーム別
この記事では、HttpPlatformHandler の概要と、モジュールの構成について説明します。
機能の概要
HttpPlatformHandler は IIS 8 以降の IIS モジュールであり、次の 2 つの処理を行います。
- http リスナーのプロセス管理 - これは、http 要求のポートでリッスンできる任意のプロセスである可能性があります。 たとえば、 - Tomcat、Jetty、Node.exe、Ruby など。
- プロキシは、それが管理するプロセスに要求します。
HttpPlatformHandler の構成
HttpPlatformHandler は、サイトまたはアプリケーション web.config ファイルを介して構成され、system.webServer - httpPlatform 内に独自の構成セクションがあります。
構成属性
属性 | 説明 |
---|---|
processPath |
必須の属性です。 HTTP 要求をリッスンするプロセスを起動する実行可能ファイルまたはスクリプトへのパス。 v1.2 の相対パスがサポートされている時点で、パスが '.' で始まる場合、パスはサイト ルートに対する相対パスと見なされます。 既定値はありません |
arguments |
省略可能な文字列値。 processPath 設定で指定した実行可能ファイルまたはスクリプトの引数。 既定値はありません。 |
startupTimeLimit |
省略可能な整数属性 HttpPlatformHandler が実行可能ファイルまたはスクリプトがポートでリッスンしているプロセスを開始するまで待機する時間 (秒単位)。 この制限を超えた場合、HttpPlatformHandler はリッスン プロセスを強制終了し、startupRetryCount の回数、再起動しようとします。 既定値は 10 です。 |
startupRetryCount |
省略可能な整数属性 HttpPlatformHandler が processPath で指定されたプロセスを起動しようとする回数。 詳細については「 startupTimeLimit 」を参照してください。 既定値は 10 です。 |
rapidFailsPerMinute |
省略可能な整数属性 processPath で指定されているプロセスが 1 分間にクラッシュできる回数を指定します。 この制限を超えた場合、 HttpPlatformHandler は残りの分数、プロセスを起動しなくなります。 managedPipelineMode 属性には、次のいずれかの値を指定できます。 既定値は、10 です。 |
requestTimeout |
省略可能な期間属性。 でリッスンしているプロセスからの応答を HttpPlatformHandler が待機する期間を指定します %HTTP_PLATFORM_PORT% 。 既定値は "00:02:00" です。 |
stdoutLogEnabled |
省略可能なブール値属性。 true の場合、processPath 設定で指定されたプロセスの stdout と stderr は stdoutLogFile で指定されたファイルにリダイレクトされます。既定値は ですfalse 。 |
stdoutLogFile |
省略可能な文字列属性。 processPath で指定されたプロセスの stdout と stderr をログに記録する相対または絶対ファイル パスを指定します。 相対パスの基準はサイトのルートです。 v1.2 の時点で、'.' で始まるパスはサイト ルートに対して相対的になり、他のすべてのパスは絶対パスとして扱われます。 既定値は httpplatform-stdout. |
processesPerApplication |
省略可能な整数属性 アプリケーションごとにスピンアップできる processPath 設定で指定されたプロセスのインスタンスの数を指定します。 最大値は 100 です。 既定値は 1 です。 |
forwardWindowsAuthToken |
True または False。 v1.2 の新機能。 この設定が true に設定されている場合、トークンは要求ごとにヘッダー 'X-IIS-WindowsAuthToken' として %HTTP_PLATFORM_PORT% でリッスンしている子プロセスに転送されます。 要求ごとにこのトークンで CloseHandle を呼び出すのは、そのプロセスの責任です。 既定値は false です。 |
子要素
要素 | 説明 |
---|---|
environmentVariables | processPath 設定で指定されたプロセスの environmentVariables コレクションを構成します。 |
recycleOnFileChange | は、指定したリスト内の ファイル に変更が加えられたときにワーカー プロセスをリサイクルするファイル コレクションを構成します。 要素の構文 (例: <file path=".\touch.txt"/> または <file path="c:\file.txt"/> |
HttpPlatformHandler の構成例
さまざまなプロセスで多数のアプリケーションを実行するための構成例を次に示します。
Tomcat
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat"
arguments=""
stdoutLogEnabled="true"
stdoutLogFile="\\?c:\dev\javasites\log.txt">
<environmentVariables>
<environmentVariable name="JRE_HOME" value="%programfiles%\java\jdk1.8.0_25" />
<environmentVariable name="CATALINA_OPTS" value="-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value"/>
<environmentVariable name="CATALINA_HOME" value="c:\dev\javasites\bin\apache-tomcat-8.0.15" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
Jetty
<?xml version="1.0"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules ="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\Program Files\Java\jdk1.8.0_25\bin\java.exe"
arguments="-Djava.net.preferIPv4Stack=true -Djetty.port=%HTTP_PLATFORM_PORT% -Djetty.base="c:\dev\javasites\bin\jetty-distribution-9.2.6.v20141205" -jar "c:\dev\javasites\bin\jetty-distribution-9.2.6.v20141205\start.jar""
startupTimeLimit="20"
startupRetryCount="20"
stdoutLogEnabled="true"></httpPlatform>
</system.webServer>
</configuration>
サンプル コード
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetWebConfiguration("JavaSites");
ConfigurationSection httpPlatformSection = config.GetSection("system.webServer/httpPlatform");
httpPlatformSection["processPath"] = @"c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat";
httpPlatformSection["arguments"] = @"";
httpPlatformSection["stdoutLogFile"] = @"=""\\?c:\dev\javasites\log.txt";
ConfigurationElementCollection environmentVariablesCollection = httpPlatformSection.GetCollection("environmentVariables");
ConfigurationElement environmentVariableElement = environmentVariablesCollection.CreateElement("environmentVariable");
environmentVariableElement["name"] = @"JRE_HOME";
environmentVariableElement["value"] = @"=""%programfiles%\java\jdk1.8.0_25";
environmentVariablesCollection.Add(environmentVariableElement);
ConfigurationElement environmentVariableElement1 = environmentVariablesCollection.CreateElement("environmentVariable");
environmentVariableElement1["name"] = @"CATALINA_OPTS";
environmentVariableElement1["value"] = @"=""-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value";
environmentVariablesCollection.Add(environmentVariableElement1);
ConfigurationElement environmentVariableElement2 = environmentVariablesCollection.CreateElement("environmentVariable");
environmentVariableElement2["name"] = @"CATALINA_HOME";
environmentVariableElement2["value"] = @"c:\dev\javasites\bin\apache-tomcat-8.0.15";
environmentVariablesCollection.Add(environmentVariableElement2);
serverManager.CommitChanges();
}
}
}
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/JavaSites";
var httpPlatformSection = adminManager.GetAdminSection("system.webServer/httpPlatform", "MACHINE/WEBROOT/APPHOST/JavaSites");
httpPlatformSection.Properties.Item("processPath").Value = "c:\\dev\\javasites\\bin\\apache-tomcat-8.0.15\\bin\\startup.bat";
httpPlatformSection.Properties.Item("arguments").Value = "";
httpPlatformSection.Properties.Item("stdoutLogFile").Value = "=\"\\\\?c:\\dev\\javasites\\log.txt";
var environmentVariablesCollection = httpPlatformSection.ChildElements.Item("environmentVariables").Collection;
var environmentVariableElement = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement.Properties.Item("name").Value = "JRE_HOME";
environmentVariableElement.Properties.Item("value").Value = "=\"%programfiles%\\java\\jdk1.8.0_25";
environmentVariablesCollection.AddElement(environmentVariableElement);
var environmentVariableElement1 = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement1.Properties.Item("name").Value = "CATALINA_OPTS";
environmentVariableElement1.Properties.Item("value").Value = "=\"-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value";
environmentVariablesCollection.AddElement(environmentVariableElement1);
var environmentVariableElement2 = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement2.Properties.Item("name").Value = "CATALINA_HOME";
environmentVariableElement2.Properties.Item("value").Value = "c:\\dev\\javasites\\bin\\apache-tomcat-8.0.15";
environmentVariablesCollection.AddElement(environmentVariableElement2);
adminManager.CommitChanges();
コマンド ライン (AppCmd)
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /processPath:"c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat" /arguments:"" /stdoutLogFile:"="""\\?c:\dev\javasites\log.txt"
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /+"environmentVariables.[name='JRE_HOME',value='="""%programfiles%\java\jdk1.8.0_25']"
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /+"environmentVariables.[name='CATALINA_OPTS',value='="""-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value']"
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /+"environmentVariables.[name='CATALINA_HOME',value='c:\dev\javasites\bin\apache-tomcat-8.0.15']"
PowerShell
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform" -name "processPath" -value "c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform" -name "arguments" -value ""
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform" -name "stdoutLogFile" -value "="""\\?c:\dev\javasites\log.txt"
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform/environmentVariables" -name "." -value @{name='JRE_HOME';value='="""%programfiles%\java\jdk1.8.0_25'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform/environmentVariables" -name "." -value @{name='CATALINA_OPTS';value='="""-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform/environmentVariables" -name "." -value @{name='CATALINA_HOME';value='c:\dev\javasites\bin\apache-tomcat-8.0.15'}
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示