Apache Tomcat コネクタの設定
Apache Tomcat に内蔵の HTTP サーバではなく,Apache HTTP サーバと Apache Tomcat を連携させて動かします. そのためには,「コネクタ」と呼ばれるプログラムを使う. Apache Tomcat にはすでに主要ないくつかのコネクタが搭載済みです. Apache HTTP サーバ側には,コネクタの設定を行う必要がある。 コネクタにはいくつか種類がありますが、 最善だと判断される mod_proxy_ajp モジュールを使う。
お断り
Apache HTTP サーバのインストールについては、 XAMPPでインストールする方法や 単体でインストールする方法があります インストール法の説明は別の Webページに移しました.
jk, jk2 コネクタについての記述は、別の Webページ に移しました。
XAMPP を使っている場合。 Tomcat 5.5 でなく、Tomcat 6 でよいという場合には、この Web ページの手順に従わず、XAMPP の Web ページで配布されている Tomcat アドオンを使うという方法もあります (Tomcat アドオンを使うと、Tomcat 6 が自動的にインストールされます。 Tomcat アドオンを使って Tomcat 5.5 をインストールするのは難しい)。
準備事項
Apache HTTP サーバのインストールが済んでいること. XAMPPでインストールする方法や 単体でインストールする方法があります.
Tomcat インストール が済んでいること.
Apache の httpd.conf ファイルの場所と,Tomcat インストールディレクトリを調べておくこと。この資料では,次のように書く.
- Apache の httpd.conf ファイルの場所:
このページでは,C:\Program Files\Apache Group\Apache Software Foundation\Apache2.2\conf\httpd.conf と書く.
XAMPP を使っている場合には, C:\xampp\apache\conf\httpd.conf と読み替えてください.
- Tomcat インストールディレクトリ: c:\tomcat55 (Windows の場合), /usr/local/apache-tomcat-5.5.23(Linux の場合)
Apache mod_proxy_ajp モジュールの設定
httpd.conf の設定
C:\Program Files\Apache Group\Apache Software Foundation\Apache2.2\confにあるhttpd.conf に次のような2行があるので書き換える. (XAMPP を使っている場合には,C:\xampp\apache\conf\httpd.conf と読み替えてください. )
【変更前】 # LoadModule proxy_module modules/mod_proxy.so # LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 【変更後】 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
httpd.conf の末尾に、次の1行を書き加える。 これは、tomcat 関係の設定を 別のファイル(httpd-proxy.conf)に書きたいための設定。
Include conf/extra/httpd-proxy.conf
httpd-proxy.conf の作成
httpd.conf があるディレクトリに、extra というサブディレクトリが、すでにあるはず。 そこに(extra下に)、httpd-proxy.conf というファイルを作る。 ファイルの中身は次のようにする。
<Location /servlets-examples/> ProxyPass ajp://localhost:8009/servlets-examples/ </Location>
XAMPP を使っている場合の追加設定
XAMPP を使っている場合は,まだ,このままでは動かないようです. httpd.conf に次の設定を書き加えてください(tomcat インストールディレクトリを C:\tomcat55 としている).
Alias /servlets-examples "C:/tomcat55/webapps/servlets-examples" <Directory "C:/tomcat55/webapps/servlets-examples"> Options Indexes AllowOverride None Order Allow,Deny Allow from all </Directory>
* なぜ,私は tomcat プラグインを使っていないのか? (答) tomcat バージョン5(バージョン6でなく)を使いたいから. * なぜ,tomcat バージョン5なのか? (答) tomahawk を使いたいから.
server.xml の設定
C:\tomcat55\conf\server.xml 内にある AJP の設定と,Tomcat の設定を一致させる. そのために,
- AJP の設定: <Connector port="8009" .../> の属性
- Tomcat の設定: <Connector port="8080" .../> の属性
を見比べる.AJP の設定には,足りない属性があるので、足りない属性とその属性値を AJP の設定に補う.
* つまり,port="8080" ... の属性値をコピーアンドペースト.
Tomcat での 8080 ポートの抑止
C:\tomcat55\conf\server.xml 内にある port="8080" についての記述をコメ ントにする。 これで、Tomcat と 8080 ポートで通信することはできなくなり、 Apache 経由での Tomcat との通信のみが許されることになる。
【変更前】 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 【変更後】 <!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->
テスト実行
Tomcat に付属のサンプルファイルを使ってテスト
- Tomcat の再起動:
C:\tomcat55\bin\tomcat5w.exe を使用して、Tomcat を再起動する
- apache httpd の再起動:
httpd.conf を書き換えたので、再起動が必要。
- 下記の URL を使い、servlets-examples のページを開く.
「:8080」を付けていないので、Tomcat に直接アクセスするのでなく、Web サー バにアクセスしていることになる。
http://localhost/servlets-examples
下記のように表示されれば OK.
(オプション) リクエストについての設定
今後、Tomcat の c:\tomcat55\webapps\WEB-INF\classes\ ディレクトリには、Java プログラムファイルが多数置かれることになる。 Web の http://ほにゃらら、という URL へのアクセスがあると、これらクラスの doGet メソッドが起動されるという仕組みになっている。 そのために、URL へのリクエストを、Tomcat 側のどこのディレクト リに飛ばすかを、個々の URL ごとに設定することになる。その設定 を行ってみる(なお、Tomcat 側のどこのディレクトリと、クラスとのマッピングは、 Tomcat の web.xml の設定。混同しないこと)。
ここでは、試しに、 http://localhost/hello に対するアクセスを、Tomcat 側の hello に飛ばすように設定してみます。
conf/extra/httpd-proxy.conf を次のように書く。 Order と Allow の行は、「127.0.0.1」からのアクセスだけを許すという設定です。
<Location /hello/> ProxyPass ajp://localhost:8009/hello/ Order allow,deny Allow from 127.0.0.1 </Location>
上記の設定をテストするためには、 Tomcat のプログラム の Web ページに記載した HelloWorldExample.java プログラムを参考にして ください。
httpd.conf を書き換えたので、apahce httpd をリスタートすること。