Windows Server 2008 R2 64 bit 版 IIS 7 と Tomcat 6 の連携

Windows Server 2008 R2 64 bit 版 の IIS 7 を Web サーバー、Tomcat 6 をアプリケーションサーバーにする方法を紹介する。

今回のケースでは、IIS と Tomcat は、物理的に別のサーバーで、クライアントからの HTTP アクセスを IIS が着信し、IIS から、Tomcat へ要求を AJP(Apache Jserv Protocol) でリダイレクトする。比較的一般的な Apache HTTP Server を Web サーバーとする構成ではなく、IIS を Web サーバーとする。

Tomcat では、"Tomcat Connector" という名称で、様々な Web サーバーとの連携を実現する Web サーバーのプラグインが提供されている。特に IIS と Tomcat との連携では、"IIS-Tomcat redirector" というモジュールが提供されている。"IIS-Tomcat redirector" は、ISAPI Filter、ISAPI Extention で作成されている。

http://tomcat.apache.org/ から、[Download] -> [Tomcat Connectors] -> [Tomcat Connectors JK 1.2] -> [Binary Releases] -> [win64] -> [jk-1.2.30] -> [amd64] -> [isapi_redirect-1.2.30.dll] を選択し、"isapi_redirect-1.2.30.dll" をダウンロードする。

ダウンロードしたファイルを任意のフォルダに配置する。筆者の評価環境では、"C:\Program Files\tomcat-connectors-1.2.30" フォルダを作成し、"isapi_redirect-1.2.30.dll" を配置した。

"C:\Program Files\tomcat-connectors-1.2.30" 直下に、以下の名称のテキストファイルを作成する。拡張子が .txt にならないように注意する。

  • isapi_redirect-1.2.30.properties
  • workers.properties
  • uriworkermap.properties

"isapi_redirect-1.2.30.properties" のファイル名は、DLL のファイル名と同じ文字列であることに注意する。DLL 名がこの例と異なる場合は、isapi_redirect-1.2.30.properties のファイル名も DLL 名と同じ文字列にする。

"isapi_redirect-1.2.30.properties" の記述例は、以下の通り。

# The path to the ISAPI Redirector Extension, relative to the website
# This must be in a virtual directory with execute privileges
extension_uri=/jakarta/isapi_redirect-1.2.30.dll
log_file=C:\Program Files\tomcat-connectors-1.2.30\isapi.log
log_level=debug
worker_file=C:\Program Files\tomcat-connectors-1.2.30\workers.properties
worker_mount_file=C:\Program Files\tomcat-connectors-1.2.30\uriworkermap.properties

"log_file" には、ログファイルの出力先パスを指定する。"log_level" には、出力ログレベル。"worker_file" には、"workers.properties" ファイルのパス、"worker_mount_file" には、"uriworkermap.properties" ファイルのパスを指定する。

"workers.properties" の記述例は、以下の通り。tomcatServerName には、Tomcat 6 をホストしているホスト名、もしくは IP アドレスを指定する。スタンドアロン環境であれば、localhost を指定する。

# workers.properties.minimal -
worker.list=ajp13w
#
# Defining a worker named ajp13w and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13w.type=ajp13
wworker.ajp13w.host=tomcatServerName
worker.ajp13w.port=8009

この例では、tomcatServerName へ AJP でポート 8009 で通信するよう設定している。Tomcat のデフォルトでは、  AJP でポート 8009 が公開されている。この時、Tomcat サーバー側にファイヤウォールがある場合は、TCP:8009 で通信できるように設定する。

CentOS でポートを開放する場合は、"system-config-securitylevel" ユーティリティーを利用するとよい。他の記事で一度紹介したことがある。"system-config-securitylevel" を起動し、[カスタマイズ] -> [受信を許可] -> [その他のポート] に "8009:tcp" と設定する。 [その他のポート] に複数の値を指定する場合は、半角スペースをセパレーターにする。

uriworkermap.properties に以下の文字列を記述する。iiswebservername.com には、IIS のホスト名を指定する。

# uriworkermap.properties - IIS
# The general syntax for this file is:
# [URL]=[Worker name]
/iiswebservername.com/*=ajp13w
/iiswebservername.com/=ajp13w

IIS の設定を行う。

[スタート] -> [管理 ツール] -> [インターネット インフォメーション サービス (IIS) マネージャ] を起動する。[サーバー名] ノードを選択し、[ISAPI および CGI の制限] を選択する。[追加...] で、[ISAPI または CGI の制限の追加] ダイアログを起動する。[ISAPI または CGI パス] には、"C:\Program Files\tomcat-connectors-1.2.30\isapi_redirect-1.2.30.dll"、[説明] には、任意の値 ("tomcat-connectors-1.2.30") を指定する。[拡張パスの実行を許可する] をチェック、[OK] でダイアログを閉じる。

[サーバー名] -> [サイト] -> [任意のサイト名 (iiswebservername.com)] を選択、[ISAPI フィルタ] をダブルクリック。[追加..] から、[ISAPI フィルタの追加] ダイアログを起動する。[フィルタ名] に "jakarta"、[実行可能ファイル] に "C:\Program Files\tomcat-connectors-1.2.30\isapi_redirect-1.2.30.dll" を指定する。[OK] でダイアログを閉じる。

[サーバー名] -> [サイト] ->[任意のサイト名 (iiswebservername.com)] を選択、[ ハンドラ マッピング ] をダブルクリック。[ モジュールマップの追加 ] で、[ モジュールマップの追加 ] ダイアログを起動する。[要求パス] には、"*.dll"、[モジュール] には、"IsapiModule"、[実行可能ファイル(オプション)] には、"C:\Program Files\tomcat-connectors-1.2.30\isapi_redirect-1.2.30.dll"、[名前] には、任意の値 ("isapi_redirect-1.2.30") を指定する。[要求の制限] ボタンから、[要求の制限] ダイアログを起動する。[マップ] タブを選択、[要求のマップ先が次の場合のみハンドラを呼び出す] をチェックし、[ファイル] を選択する。[アクセス] タブを選択、[実行] を選択する。[OK] -> [OK] でダイアログを閉じる。

[サーバー名] -> [サイト] -> [任意のサイト名 (iiswebservername.com)] を選択、右クリックメニューから、[仮想ディレクトリの追加...] を選択し、[仮想ディレクトリの追加] ダイアログを起動する。[エイリアス] には、"jakarta" を指定、[物理パス] には、"C:\Program Files\tomcat-connectors-1.2.30" を指定する。[OK] でダイアログを閉じる。

作成した "仮想ディレクトリ" の実行ユーザー (アプリケーション プールに設定したアカウント) に、"C:\Program Files\tomcat-connectors-1.2.30\" フォルダの "読み取りと実行" 権限があることを確認する。権限がなければ、フォルダに権限を付与する。

IIS を再起動する。コマンドラインから、iisreset を実行する。

ブラウザから、"iiswebservername.com" にアクセスし、Tomcat のコンテンツが正しく表示されていることを確認する。

 

コメント (0)

コメントの投稿