Freigeben über


HttpPlatformHandler-Konfigurationsreferenz

von IIS-Team

Dieser Artikel enthält eine Übersicht über den HttpPlatformHandler und erläutert die Konfiguration des Moduls.

Übersicht über die Funktionalität

Der HttpPlatformHandler ist ein IIS-Modul für IIS 8+, das die folgenden beiden Aktionen ausführt:

  1. Prozessverwaltung von HTTP-Listenern – dies kann jeder Prozess sein, der auf einen Port für HTTP-Anforderungen lauschen kann. Beispiel: Tomcat, Jetty, Node.exe, Ruby usw.
  2. Proxyanforderungen an den Prozess, den er verwaltet.

HttpPlatformHandler-Konfiguration

Der HttpPlatformHandler wird über die web.config-Datei einer Website oder Anwendung konfiguriert und verfügt über einen eigenen Konfigurationsabschnitt innerhalb von system.webServer - httpPlatform.

Konfigurationsattribute

Attribut Beschreibung
processPath Erforderliches Attribut. Pfad zur ausführbaren Datei oder zum Skript, das einen Prozess startet, der auf HTTP-Anforderungen lauscht. Ab v1.2 werden relative Pfade unterstützt, wenn der Pfad mit "." beginnt, wird der Pfad als relativ zum Websitestamm betrachtet. Es gibt keinen Standardwert.
arguments Optionaler Zeichenfolgenwert. Argumente für die ausführbare Datei oder das Skript, die in der ProcessPath-Einstellung angegeben sind. Es gibt keinen Standardwert.
startupTimeLimit Optionales Ganzzahlattribut. Dauer in Sekunden, für die HttpPlatformHandler wartet, bis die ausführbare Datei/das Skript einen Prozess startet, der auf dem Port lauscht. Wenn dieses Zeitlimit überschritten wird, wird der Prozess von HttpPlatformHandler beendet und es wird versucht, ihn bis zu startupRetryCount-Mal erneut zu starten. Der Standardwert ist 10.
startupRetryCount Optionales Ganzzahlattribut. Häufigkeit, mit der httpPlatformHandler versucht, den in processPath angegebenen Prozess zu starten. Weitere Informationen finden Sie unter startupTimeLimit . Der Standardwert ist 10.
rapidFailsPerMinute Optionales Ganzzahlattribut. Gibt an, wie viele Abstürze des in ProcessPath angegebenen Prozesses pro Minute zulässig sind. Wenn dieser Grenzwert überschritten wird, beendet HttpPlatformHandler den Start des Prozesses für den Rest der Minute. Das attribut managedPipelineMode kann einen der folgenden möglichen Werte aufweisen. Der Standardwert lautet 10.
requestTimeout Optionales Zeitraum-Attribut. Gibt die Dauer an, für die der HttpPlatformHandler auf eine Antwort des Prozesses wartet, der auf %HTTP_PLATFORM_PORT% hört. Der Standardwert ist "00:02:00".
stdoutLogEnabled Optionales boolesches Attribut. Wenn "true", wird "stdout " und "stderr " für den in der ProcessPath-Einstellung angegebenen Prozess an die in stdoutLogFile angegebene Datei umgeleitet. Der Standardwert ist false.
stdoutLogFile Optionales Zeichenfolgeattribut. Gibt den relativen ODER absoluten Dateipfad an, für den stdout und stderr aus dem in processPath angegebenen Prozess protokolliert werden. Relative Pfade sind relativ zum Stamm der Site. Ab Version 1.2 wird jeder Pfad, der mit "." beginnt, relativ zum Websitestamm, und alle anderen Pfade werden als absolute Pfade behandelt. Der Standardwert ist httpplatform-stdout.
processesPerApplication Optionales Ganzzahlattribut. Gibt die Anzahl der Instanzen des Prozesses an, die in der ProcessPath-Einstellung angegeben sind und pro Anwendung hochgefahren werden können. Der Höchstwert ist 100. Der Standardwert ist 1.
forwardWindowsAuthToken Wahr oder Falsch. Neu für v1.2. Wenn diese Einstellung auf "true" festgelegt ist, wird das Token als Header "X-IIS-WindowsAuthToken" pro Anforderung an den untergeordneten Prozess weitergeleitet, der auf %HTTP_PLATFORM_PORT% hört. Es liegt in der Verantwortung dieses Prozesses, CloseHandle für dieses Token pro Anforderung aufzurufen. Der Standardwert ist false.

Untergeordnete Elemente

Element Beschreibung
environmentVariables Konfiguriert die EnvironmentVariables-Auflistung für den in der ProcessPath-Einstellung angegebenen Prozess.
recycleOnFileChange konfiguriert die Dateisammlung , die den Arbeitsprozess wiederverwendet, wenn Änderungen an der Datei in der angegebenen Liste vorgenommen werden. Elementsyntax, z. B. <Dateipfad=".\touch.txt"/> oder <Dateipfad="c:\file.txt"/>

HttpPlatformHandler-Konfigurationsbeispiele

Im Folgenden finden Sie Konfigurationsbeispiele zum Ausführen einer Reihe von Anwendungen mit verschiedenen Prozessen.

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=&quot;c:\dev\javasites\bin\jetty-distribution-9.2.6.v20141205&quot; -jar &quot;c:\dev\javasites\bin\jetty-distribution-9.2.6.v20141205\start.jar&quot;" 
                    startupTimeLimit="20" 
                    startupRetryCount="20" 
                    stdoutLogEnabled="true"></httpPlatform>
    </system.webServer>
</configuration>

Beispielcode

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();

Befehlszeile (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'}