HttpPlatformHandler を使用する
適用対象: Azure Pack Windows
HttpPlatformHandler は、次のことに使用できるインターネット インフォメーション サービス (IIS) モジュールです。
HTTP 要求のポートをリッスンできる任意のプロセス (Tomcat、Jetty、node.exe、Ruby など) を管理する。
管理しているプロセスにプロキシ要求を送信する。
HttpPlatformHandler と Java Web アプリケーション
HttpPlatformHandler は、Windows Azure Pack: Web サイトと共に使用して、Java やその他のプロセスをホストできます。
JAVA ベースの Web サイトは、FTP、Git、Kudu、および Web サイトの統合された SCM 機能を使用してデプロイできます。
WebDeploy はプロトコルとして機能します。 Java は Visual Studio で開発されていないため、WebDeploy は Java Web アプリケーションのデプロイ事例には適していません。
カスタム Java Web アプリケーションの構成ガイドライン
Azure のカスタム Java Web アプリケーションには次の設定が必要です。
Java プロセスで使用される HTTP ポートは、環境変数 HTTP_PLATFORM_PORT に動的に割り当てられます。 HTTP リスナーは、このポートを使用する必要があります。
1 つの HTTP リスナー ポートを除くすべてのリスナー ポートを無効にする必要があります。 Tomcat の場合、シャットダウン ポート、HTTPS ポート、AJP ポートが含まれます。
コンテナーは IPv4 トラフィック専用に構成する必要があります。
アプリケーションのスタートアップ コマンドは、構成で設定する必要があります。
書き込み可能なディレクトリを必要とするアプリケーションは、Windows Azure Pack: Web サイト (D:\home) のコンテンツ ディレクトリに配置する必要があります。 環境変数 HOME は D:\home を表します。
環境変数は Web.config ファイルで設定できます。
web.config の httpPlatform の構成
HttpPlatformHandler は、アプリケーションの Web.config ファイルで次のスキーマを使用します。
<configSchema>
<sectionSchema name="system.webServer/httpPlatform">
<attribute name="processPath" type="string" expanded="true"/>
<attribute name="arguments" type="string" expanded="true" defaultValue=""/>
<attribute name="startupTimeLimit" type="uint" defaultValue="10" validationType="integerRange" validationParameter="0,3600"/> <!-- in seconds -->
<attribute name="startupRetryCount" type="uint" defaultValue="10" validationType="integerRange" validationParameter="0,100"/>
<attribute name="rapidFailsPerMinute" type="uint" defaultValue="10" validationType="integerRange" validationParameter="0,100"/>
<attribute name="requestTimeout" type="timeSpan" defaultValue="00:02:00" validationType="timeSpanRange" validationParameter="0,2592000,60"/>
<attribute name="stdoutLogEnabled" type="bool" defaultValue="false" />
<attribute name="stdoutLogFile" type="string" defaultValue="httpplatform-stdout" expanded="true"/>
<attribute name="processesPerApplication" type="uint" defaultValue="1" validationType="integerRange" validationParameter="1,100"/>
<element name="environmentVariables">
<collection addElement="environmentVariable" clearElement="clear">
<attribute name="name" type="string" required="true" validationType="nonEmptyString"/>
<attribute name="value" type="string" required="true"/>
</collection>
</element>
</sectionSchema>
</configSchema>
引数 (既定値 = ""): processPath 属性によって識別される HTTP リスナーに送信される引数。
例 (processPath も表示):
processPath="%HOME%\site\wwwroot\bin\tomcat\bin\catalina.bat"
arguments="start"
processPath="%JAVA_HOME\bin\java.exe"
arguments="-Djava.net.preferIPv4Stack=true -Djetty.port=%HTTP\_PLATFORM\_PORT% -Djetty.base="%HOME%\site\wwwroot\bin\jetty-distribution-9.1.0.v20131115" -jar "%HOME%\site\wwwroot\bin\jetty-distribution-9.1.0.v20131115\start.jar""
processPath:HTTP リスナーの実行可能ファイルまたはスクリプトへのパス。
例 :
processPath="%JAVA_HOME%\bin\java.exe"
processPath="%HOME%\site\wwwroot\bin\tomcat\bin\startup.bat"
processPath="%HOME%\site\wwwroot\bin\tomcat\bin\catalina.bat"
rapidFailsPerMinute (既定値 = 10):HTTP リスナー プロセスに許可されている 1 分あたりのクラッシュの回数。 この制限を超えた場合、HttpPlatformHandler はその 1 分が経過するまでの間、プロセスの起動を停止します。
requestTimeout (既定値 = "00:02:00"):HttpPlatformHandler が %HTTP_PLATFORM_PORT% でリッスンしているプロセスからの応答を待機する時間。
startupRetryCount (既定値 = 10):HttpPlatformHandler が HTTP リスナー プロセスを起動しようとする回数。
startupTimeLimit (既定値 = 10 秒):HTTP リスナーによるポートのリッスン プロセスの起動を HttpPlatformHandler が待機する時間。 この制限時間を超えた場合、HttpPlatformHandler は HTTP リスナーを停止し、startupRetryCount に設定された値に基づいて再起動しようとします。
stdoutLogEnabled (既定値 = "true"):true の場合、HTTP リスナーの stdout と stderr は、stdoutLogFile で指定されるファイルにリダイレクトされます。
stdoutLogFile (既定値 = "d:\home\LogFiles\httpPlatformStdout.log"):HTTP リスナーからの stdout と stderr を記録するログ ファイルの絶対パス。
注意
%HTTP_PLATFORM_PORT% は、引数属性または httpPlatformEnvironmentVariables リストの 一部として指定する必要がある特殊なプレースホルダーです。 HttpPlatformHandler は、HTTP リスナーがポートをリッスンできるように、この変数を動的にポートに置き換えます。
アプリケーション構成の例
次の Tomcat と Jetty の例では、サンプル Web.config ファイルとアプリケーション構成で、Windows Azure Pack: Web サイトで Java アプリケーションを有効にする方法を示します。
Tomcat
次の例は、Java 仮想マシンへの Tomcat のインストールを示しています。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%HOME%\site\wwwroot\bin\tomcat\bin\startup.bat"
arguments="">
<environmentVariables>
<environmentVariable name="CATALINA_OPTS" value="-Dport.http=%HTTP_PLATFORM_PORT%" />
<environmentVariable name="CATALINA_HOME" value="%HOME%\site\wwwroot\bin\tomcat" />
<environmentVariable name="JRE_HOME" value="%HOME%\site\wwwroot\bin\java" /> <!-- optional, if not specified, this will default to %programfiles%\Java -->
<environmentVariable name="JAVA_OPTS" value="-Djava.net.preferIPv4Stack=true" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
Tomcat の構成も変更する必要があります。 サーバー xml の設定を次のように編集する必要があります。
シャットダウン ポート = -1
HTTP コネクタ ポート = ${port.http}
HTTP コネクタ アドレス = "127.0.0.1"
HTTPS と AJP のコネクタをコメントアウト
IPv4 設定は catalina.properties ファイルでも設定でき、そこで java.net.preferIPv4Stack=true を追加できます。
Windows Azure Pack: Web サイトでは、Direct3D 呼び出しはサポートされていません。 アプリケーションでこのような呼び出しを行う場合は、-Dsun.java2d.d3d=false という Java オプションを追加して無効にします。
Jetty
Jetty の完全インストールを実行する構成の例は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httppPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
arguments="-Djava.net.preferIPv4Stack=true -Djetty.port=%HTTP_PLATFORM_PORT% -Djetty.base="%HOME%\site\wwwroot\bin\jetty-distribution-9.1.0.v20131115" -jar "%HOME%\site\wwwroot\bin\jetty-distribution-9.1.0.v20131115\start.jar""
startupTimeLimit="20"
startupRetryCount="10"
stdoutLogEnabled="true">
</httpPlatform>
</system.webServer>
</configuration>
Jetty 構成は、java.net.preferIPv4Stack=true のように、開始 INI ファイルで変更する必要があります。
HttpPlatformHandler を使用した Java アプリケーションのホスト
HttpPlaftormHandler を使用して Java アプリケーションをホストするには、次の手順に従います。
テナント用管理ポータルを使用して、空の Web サイトを作成します。
Tomcat のコピー (たとえば、from http://tomcat.apache.org/) をダウンロードし、開発用コンピューター上のフォルダーに zip ファイルを抽出します (例: c:\dev\javasites\bin\apache-tomcat-8.0.15)。
Java Development Kit のコピーを Tomcat と同じフォルダー (例: c:\dev\javasites\bin\jdk1.7.0_79) に追加します。
上で説明した Tomcat の例のように Tomcat の構成を変更します。
使用する Java アプリケーションのコピー ( Pebble ブログ ツールなど) を webapps フォルダーにダウンロードします。
テキスト エディターを使用して新しい Web.config ファイルを作成し、Web サイト フォルダー (例: c:\dev\javasites\web.config) に追加します。
Web.config ファイルを編集して、次のように HttpPlatformHandler 構成を追加します。 この構成では、Tomcat サーバーと JDK ディレクトリの場所の指定、Catalina の設定、Pebble で必要な ${user.home} 変数の定義を行います。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" /> </handlers> <httpPlatform processPath="%HOME%\site\wwwroot\bin\apache-tomcat-8.0.15\bin\startup.bat" arguments=""> <environmentVariables> <environmentVariable name="JRE_HOME" value="%HOME%\site\wwwroot\bin\jdk1.7.0_79" /> <environmentVariable name="CATALINA_OPTS" value="-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value" /> <environmentVariable name="CATALINA_HOME" value="%HOME%\site\wwwroot\bin\apache-tomcat-8.0.15" /> <environmentVariable name="JAVA_OPTS" value="-Duser.home=%HOME%/site/wwwroot/user_home"/> </environmentVariables> </httpPlatform> </system.webServer> </configuration>
手順 1. で作成した Web サイトの wwwroot フォルダーに c:\dev\javasites の内容をアップロードします。
Pebble Java アプリケーションを参照するには、ルート URL に /pebble を追加します (例: http://javawebsite.awbl-s.redant.selfhost.corp.microsoft.com/pebble/)。