■外部HTTPサーバー(Apache2)からTOMCATに連携ここではTOMCATとApache HTTPサーバー(Webサーバー)を連携させる方法について、手作業で設定ファイルを作成する方法を説明します。 確認をしたのはWindows2000 + Apache 2.2.11環境です。
ここの説明で対象としているのは、
このどちらの場合でも、設定をする対象はTOMCATではなく、Apacheに対してです。この点は注意しておいてください。 ■Tomcat Connecter(mod_jk)TOMCATとApacheを連携させるためにはTomcat Connecterというツールを使います。このApache用のConnecterツールの名前がmod_jkです。これのダウンロードについては「mod_jkのダウンロード」で説明していますので、そちらを参照してください。 ダウンロードしたファイルはApacheをインストールしたディレクトリのmodulesディレクトリ下(例:C:\Apache Software Foundation\Apache2.2\modules)にコピーし、mod_jk.so にリネームします。
■Apacheの設定◇1 Apacheの停止Apache HTTPサーバー本体の設定を始めます。もしApacheが動いているなら一度止めておいたほうが確実です。 ◇2 httpd.confの変更Apacheの設定で対象になるファイルは、Apacheをインストールしたディレクトリのconf下にある httpd.conf です(例:C:\Apache Software Foundation\Apache2.2\conf)。これをテキストエディタやメモ帳で開いて編集します。 このファイルの一番最後の方に次の2行を追加します。
これはTOMCAT連携用接続ツールである、mod_jkの設定ファイルをApacheに組み込む、という設定です。 ファイルパスのディレクトリ区切り文字は、\で無く/を使って指定します。 また以下の設定ファイルについても同じですが、先頭が#の行はコメント行です。 追加後のhttpd.confの、最後の部分のサンプルは
です。 これは接続ツールであるmod_jkをApaceに組み込む指定ではなく、mod_jk用の設定ファイルとその配置場所をApacheに通知する、という指定です。 ◇3 mod_jk.confの作成つづいて「2 httpd.confの変更」で追加した設定に対応する、mod_jk.confファイルを作成します。 作成場所はhttpd.confへの追加行で指定したパスで、このページではC:\Apache Software Foundation\Apache2.2\confにしています。 ここにテキストエディタやメモ帳で、mod_jk.confファイルを作成します。 このmod_jk.confの作成方法は、大きく分ければ2通りあります。最初にそのうちの手っ取り早い方法について説明します。手っ取り早いというのはmod_jk.confの中に全ての設定情報を詰め込むため、この1ファイルだけ作成すればよいからです。 ◇3−1 mod_jk.confの作成:パターン1
最初のLoadModule jk_moduleの指定で、接続ツールであるmod_jkの、実体ファイルであるmod_jk.soへのパスを指定しています。 このファイルについては「■mod_jkのダウンロード」で説明しています。 まずJkWorkerPropertyのworker.listで、転送先を定義します。 このサンプルではworker1、worker2と、2つの転送先TOMCATがある場合を例にしています。1つしか必要ないときはworker.listの引数で、,以降を削るだけです。 そしてJkMountで転送を行うURIパターンと、転送先の関連付けを定義します。 このサンプルではTOMCATのパッケージに含まれているサンプルのうち、「サーブレットサンプル」に対するリクエストは同一サーバー内のTOMCATに転送するようにしています。 これ以外の「JSPサンプル」や「ドキュメント」、「TOMCAT管理画面」に対するリクエストは、別サーバーのTOMCATに転送しています。
他の部分で
◇3−2 mod_jk.confの作成:パターン2次のパターンは比較的新しい(mod_jkのバージョンが1.2.9以降)設定方法です。mod_jk.confに全てを詰め込むのでなく、目的に応じた複数の設定ファイルを使います。 ここではそのためのmod_jk.conf設定内容を説明します。
最初のLoadModule jk_moduleの指定で、接続ツールであるmod_jkの、実体ファイルであるmod_jk.soへのパスを指定しています。 このファイルについては「■mod_jkのダウンロード」で説明しています。 そしてJkWokersFileで指定しているのが、「mod_jk.confの作成:パターン1」ではJkWorkerPropertyで指定していた、設定内容を定義してある定義ファイルです。 次のJkMountFileで指定しているのが、「mod_jk.confの作成:パターン1」ではJkMountで指定していた、転送用URIパターンを定義してある定義ファイルです。 ◇4 workers.propertiesの作成これはmod_jk.confを「3−2」のパターン2で作成した場合に必要な作業です。 このworkers.propertiesで転送先TOMCATの情報を設定します。そして転送先設定毎に名前を付けておきます。 ここで付けた転送先設定名を、後述するuriworkermap.propertiesで使います。
まずworker.listで、転送先を定義します。このサンプルではworker1、worker2と、2つの転送先TOMCATがある場合を例にしています。1つしか必要ないときはworker.listの引数で、,以降を削るだけです。 次が各転送先毎の詳細設定です。worker.転送先設定名.パラメータ名に対して値を設定します。 typeパラメータは、Apache側に設定した接続ツールと、転送先TOMCATの通信方式を指定します。ここは全て標準のajp13を指定しておきます。 hostパラメータで接続先設定名毎に、TOMCATが稼働している転送先を指定します。転送先のIPアドレスかHOST名を指定してください。 例ではworker1という接続先設定では、他のサーバーをIPアドレスで指定しています。worker2の接続先設定ではHOST名でlocalhostを指定しています。そのため同一サーバー内で稼働している、TOMCATへの転送設定です。 ◇5 uriwokermap.propertiesの作成これはmod_jk.confを「3−2」のパターン2で作成した場合に必要な作業です。 uriwokermap.propertiesではTOMCATに転送するURIパターンと、転送先の接続設定名(workers.propertiesで定義した接続設定の名前)を指定します。
この例ではTOMCATインストール時に一緒にインストールできるサンプルのうち、サーブレットサンプルに対するアクセスはworker2に転送しています。worker2はworkers.propertiesでlocalhost、同一サーバー内を指定しています。つまり同一サーバー内のTOMCATに転送されます。 同じサンプルでもJSPサンプルや、その他のリクエストやworker1に転送しています。worker1はworkers.propertiesでIPアドレスで別サーバーを指定しています。つまり別サーバーのTOMCATに転送されることになります。
また
またこのサンプルでは以上の説明とは逆に、TOMCATに転送しない設定も含んでいます。最後のほうにある、先頭が!で始まる行がそれです。先頭が!の行では転送除外パターンを指定します。 サンプルではファイルの拡張子が、html(HTMLファイル)、htm(HTMLファイル)、css(スタイルシートファイル)、js(JavaScriptファイル)といった、静的なもの(ファイル)は転送しない設定です。
画面のJavaScriptなら動的画面では、という意見もあるかもしれません。しかしJavaScriptで生成される結果画面は動的かもしれませんが、画面を生成するJavaScriptを定義したファイル自体は静的です(サーバー配置後は変化しないので)。
このサンプルでは/*でパターン指定しているので、全てのURIパターンで上記拡張子のリクエストが対象です。
そうでなく特定のURIパターン(ディレクトリ)に対するものだけを除外したいときは、上記例の最終行のようにしてください。例中ではコメントになっていますが、コメントを外すと
この場合はURIパターン(ディレクトリ)が/docs/以下の、拡張子がhtmlに対する全リクエストは転送しない、という設定です。
これの応用編で、特定の接続設定名への転送だけ除外する、という指定があります。
さてこの転送除外設定ですが、転送除外設定だけを指定しても意味はありません。 なぜなら明示的に転送設定をしない限りリクエストは転送されず、Apache内だけで処理されるからです。従って転送除外設定の意味は、特定URIパターンのリクエストはTOMCATに転送する。ただしあるパターンのときは転送しない。というものです。 別の言い方をすると転送除外設定に指定した条件(URIパターン)は、転送設定に指定した条件(URIパターン)を上書きします。 |