CentOS5.5でのApache2.2とTomcat5.5の連携
はじめに
CentOS5.5では、標準でApacheとTomcatをインストールすると、Apacheは2.2系、Tomcatは5.5系がインストールされます。またTomcat4やRedHat9の時代のように複雑な設定をしなくても、すぐにApache2.2とTomcat5.5のproxy_ajpモジュールでの連携が可能です。
まず、Apache2.2は/etc/httpd/conf/httpd.confにServerNameなど適切に設定し起動できるようにします。これはCentOS5.5とApache2.2をキーワードにGoogle検索を行えばすぐにやり方が分かると思います。その後、/etc/httpd/conf.d/proxy_ajp.confのコメントアウトされているProxyPass部分を修正します。/etc/httpd/conf.d内のconfigファイルはApache2.2の起動時に読み込まれるのでProxyPassの修正のみです。
これで設定は終わりです。Tomcat4の時代とは異なりかなり簡単になっていますね。またCentOS5.5ではTomcat5.5は標準で8009番で連携を行うようになっているため特に設定する必要はありません。(/etc/tomcat5/server.xmlの102行目)
修正前
#ProxyPass /tomcat/ ajp://localhost:8009/
#ProxyPass /examples/ ajp://localhost:8009/jsp-examples/
修正後
ProxyPass /tomcat/ ajp://localhost:8009/
ProxyPass /examples/ ajp://localhost:8009/jsp-examples/
設定後はTomcat5とApache2を順に起動すればhttp://あなたのIPアドレス/tomcat/で連携ができます。
起動
/etc/init.d/tomcat5 start
/etc/init.d/httpd start
トラブルシューティング
また、開発などで8080ポートを使う時に通信ができない場合は、ファイヤウォールがブロックしている可能性があります。その場合はroot権限でsystem-config-securitylevelでiptablesの設定を行います。カスタマイズでwebcache:tcpまたは、8080:tcpと入力すればポートが解放されます。またiptables --listでどのポートが解放されているのか分かるのでトラブルシューティングに役立つと思います。
バーチャルホスト(VirtualHost)でのApache2.2とTomcat5.5連携
Apache2.2では、設定ファイルが機能単位に分離されています。WEBサーバの基本的設定は、/etc/httpd/conf/httpd.confでおこない、mod_perlの読み込みは、/etc/httpd/conf.d/perl.conf。Subversionとの連携は、/etc/httpd/conf.d/subversion.conf。このように、conf.dディレクトリ内の.conf拡張子のファイルをアルファベット順に読み込んで起動時の初期化をします。
それで、Tomcatとの連携が書かれているファイルは、proxy_ajp.confで、バーチャルホストの設定が書かれているファイルは、virtualhost.confになります。そのため、proxy_ajp.conf内で設定をしてしまうと、バーチャルホストのすべてのURLから、Tomcatが見えてしまうことになります。
そのため、対応するには、proxy_ajp.confはデフォルト設定のままにする。
virtualhost.confの対象<VirtualHost>ディレクティブ内にProxyPass設定を記述します。ちょうど以下のような感じです。
<VirtualHost *:80>
ServerName www.yourhost.com
ProxyPass /tomcat/ ajp://localhost:8009/
ProxyPass /examples/ ajp://localhost:8009/jsp-examples/
</VirtualHost>
Apache2.0.xとTomcat4.0.xの連携
はじめに
ここでは、Apache2.0.47とTomcat4.0.27をjk2で連携させる手順を説明します。設定の詳細は説明しません。接続することが目的です。設定ファイルをviなどで手入力せずに、コピー&ペーストして設定してください。私自身viで実際に書いてみる主義ですが、今回は結構痛い目にあいました。妥協できない方が多くいると思いますがたまには楽しましょう。シンタックスエラーで躓くのではなく、設定ファイルがどのように構成されているかを解析するのに時間を使ってもらいたいと思います。
対象読者
- Apache2.0.47とTomcat4.0.27をjk2で連携させる手順を探し回っている方
- apache2.0.47とtomcat4.0.27をダウンロードして動作確認した方
注意:上記は、問題なくできている事が前提です。これらについては説明しません。理解できる方が読者対象となります。
動作環境
- Red Hat Linux release 9 (Shrike)
- Apache 2.0.47
- Tomcat 2.0.27
- JK2 Connector version 2.0.2
OSは特に意識しなくても良いと思います。Solarisなどでも問題ないと思います。それよりもApache,Tomcat, JK2のバージョンの違いで動作できない事が発生しやすいです。
コネクタのダウンロード
注意:JK2コネクタのバージョンに気をつけてください。今回使用するのはv2.0.2です。実際に他のサイトなどを参考にapache+tomcat連携を行ったときにv1.0.xでJK2の設定を行って泥沼に陥りました。 http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/release/v2.0.2/src/のリンクを張っておきます。release1のディレクトリと 紛らわしいのでくどいようですが、注意してください。
コンパイル
tarを展開すると、buildconf.shが確認できますので、権限(Permission)を変更して実行してください。
$ tar -xvzf jakarta-tomcat-connectors-jk2-2.0.2-src.tar.gz
$ cd jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
$ chmod 777 buildconf.sh
$ ./buildconf.sh
次にコンパイルしますが、$APACHE_HOMEに自分のAPACHEのディレクトリを記述してください。
$ ./configure --with-apxs2=$APACHE_HOME/bin/apxs
$ make
make installはありません。以下のようにコピーします。
cp ../build/jk2/apache2/mod_jk2.so $APACHE_HOME/modules/.
これでプロキシ用のモジュールを配置しました。後は設定ファイルの修正だけです。設定ファイルはapacheと tomcat用に2つ存在します。
Apacheの設定
httpd.confの最後にmod_jk2.soの場所を指定します。
LoadModule jk2_module modules/mod_jk2.so
$APACHE_HOME/conf/workers2.propertiesを作成します。(小文字のsが入りますので注意してください。設定は以下のようになります。
[logger.file:0]
level=ERROR
file=${serverRoot}/logs/jk2.log
[channel.socket:localhost:8009]
host=XX.XX.XX.XX
[uri:/examples/*]
[status:]
[uri:/jkstatus/*]
group=status:
[shm:]
disabled=1
Apache側の設定はこれで終了です。
Tomcatの設定
jk2.propertyの設定はしません。デフォルトではポート8080番を利用しているので$CATALINA_HOME/conf/server.xmlの設定からコメントアウトします。91行目付近からのタグです。
アクセス確認
自分のIPアドレスでアクセスしてみてください。正常にapacheから呼べれば成功です。
http://localhost/examples/jsp/index.html
更新履歴
- 土 7 5 02:24:42 JST 2008
