Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Команда IIS
В этой статье представлен обзор HttpPlatformHandler и объясняется конфигурация модуля.
Общие сведения о функциях
HttpPlatformHandler — это модуль IIS для IIS 8+, который выполняет следующие два действия:
- Управление прослушивателями HTTP- это может быть любой процесс, который может прослушивать порт для http-запросов. Например, Tomcat, Jetty, Node.exe, Ruby и т. д.
- Прокси-сервер перенаправляет запросы к процессу, которым он управляет.
Конфигурация HttpPlatformHandler
HttpPlatformHandler настраивается через файл сайта или приложений web.config и имеет собственный раздел конфигурации в system.webServer — httpPlatform.
Атрибуты конфигурации
| Атрибут | Описание |
|---|---|
processPath |
Обязательный атрибут. Путь к исполняемому файлу или скрипту, который запустит процесс прослушивания HTTP-запросов. C версии 1.2 поддерживаются относительные пути — если путь начинается с '.', он считается относительным по отношению к корню сайта. Значение по умолчанию отсутствует |
arguments |
Необязательное строковое значение. Аргументы исполняемого файла или скрипта, указанного в параметре processPath. Значение по умолчанию отсутствует. |
startupTimeLimit |
Необязательный целочисленный атрибут. Длительность в секундах, в течение которых HttpPlatformHandler будет ожидать, чтобы исполняемый файл или скрипт запустил процесс, который прослушивает порт. Если это ограничение времени превышено, HttpPlatformHandler убьет процесс и попытается запустить его еще раз при запускеRetryCount . Значение по умолчанию — 10. |
startupRetryCount |
Необязательный целочисленный атрибут. Количество раз HttpPlatformHandler попытается запустить процесс, указанный в processPath. Дополнительные сведения см. в разделе startupTimeLimit . Значение по умолчанию — 10. |
rapidFailsPerMinute |
Необязательный целочисленный атрибут. Указывает количество сбоев за минуту, которыми может завершиться процесс, указанный в processPath. Если это ограничение превышено, HttpPlatformHandler перестанет запускать процесс на оставшуюся часть минуты. Атрибут managedPipelineMode может быть одним из следующих возможных значений. Значение по умолчанию — 10. |
requestTimeout |
Необязательный атрибут временного интервала. Указывает длительность, в течение которой HttpPlatformHandler будет ожидать ответа от процесса прослушивания %HTTP_PLATFORM_PORT%. Значение по умолчанию — "00:02:00". |
stdoutLogEnabled |
Необязательный логический атрибут. Если значение true, stdout и stderr для процесса, указанного в параметре processPath , будет перенаправлено в файл, указанный в stdoutLogFile. Значение по умолчанию — false. |
stdoutLogFile |
Необязательный строковый атрибут. Указывает относительный ИЛИ абсолютный путь к файлу, для которого stdout и stderr из процесса, указанного в processPath, будут логироваться. Относительные пути задаются относительно корневого каталога веб-сайта. Начиная с версии 1.2, любой путь, начинающийся с '.', будет трактоваться относительно корня сайта; все остальные пути будут рассматриваться как абсолютные. Значение по умолчанию — httpplatform-stdout.. |
processesPerApplication |
Необязательный целочисленный атрибут. Указывает количество экземпляров процесса, указанного в параметре processPath , которое можно спрягать на каждое приложение. Максимум — 100. Значение по умолчанию — 1. |
forwardWindowsAuthToken |
Верно или неверно. Новые возможности для версии 1.2. Если для этого параметра задано значение true, токен будет перенаправлен в дочерний процесс, прослушивающий %HTTP_PLATFORM_PORT%, в виде заголовка 'X-IIS-WindowsAuthToken' для каждого запроса. Этот процесс несет ответственность за вызов CloseHandle для этого токена по каждому запросу. Значение по умолчанию — false. |
Дочерние элементы
| Элемент | Описание |
|---|---|
| environmentVariables | Настраивает коллекцию environmentVariables для процесса, указанного в параметре processPath . |
| recycleOnFileChange | настраивает коллекцию файлов , которая перезапускает рабочий процесс при внесении изменений в файл в указанном списке. Синтаксис элемента, например <file path=".\touch.txt"/> or <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>
Пристани
<?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'}