JK2をRedhat Linux9のRPMで提供されているhttpdと連携させるためのビルド方法を調べました。
現在使っているTomcatが4.1.27なので、jakarta-tomcat-connectors-4.1.27-src.tar.gz をダウンロードしました。最新版は4.1.29なので早目にバージョンアップしたいところですが、まずはJK2のコンパイルオプションを確認したかったので、このバージョンを使いました。
展開して、jakarta-tomcat-connectors-4.1.27-src/jk/native2 をカレントディレクトリにします。
$ sh buildconf.sh libtoolize –force –automake –copy aclocal automake –copy –add-missing configure.in: installing `scripts/build/unix/install-sh’ configure.in: installing `scripts/build/unix/mkinstalldirs’ configure.in: installing `scripts/build/unix/missing’ autoconf $ |
configureファイルが作成されるので、どんなオプションがあるか調べてみて(./configure –help)、次のようなオプションがつかえることがわかりました。
./configure –with-apxs2=/usr/sbin/apxs \ –with-apache2=/usr/src/redhat/SOURCES/httpd-2.0.40 \ –with-apache2-include=/usr/include/httpd \ –with-apache2-lib=/usr/lib \ –with-tomcat41=/usr/local/tomcat \ –with-apr=/usr/src/redhat/SOURCES/httpd-2.0.40/srclib/apr \ –with-apr-include=/usr/src/redhat/SOURCES/httpd-2.0.40/srclib/apr/include \ –with-apr-lib=/usr/lib \ –with-java-home=/usr/local/jdk \ –with-jni |
としたかったが、なぜか can’t locate エラーが何か所かでおきるため、最終的には次のようにしてみた。
./configure –with-apxs2=/usr/sbin/apxs \ –with-tomcat41=/usr/local/tomcat \ –with-apr=/usr/src/redhat/SOURCES/httpd-2.0.40/srclib/apr \ –with-apr-lib=/usr/lib \ –with-java-home=/usr/local/jdk \ –with-jni |
これで jakarta-tomcat-connectors-4.1.27-src/jk/build のなかに so ファイルができあがるので、これを /usr/lib/httpd/modules/ へコピーして、/etc/httpd/conf/httpd.conf, /etc/httpd/conf/workers2.properties, /usr/local/tomcat/conf/server.conf を編集して設定をすれば良い。
で、結論から言うと、やっぱり Internal Error が発生しまくる。RPM版はあきらめようかなぁ。
どうもです。4.1.29版へ移行するときの参考にさせてもらいます。
たぶん、そのことと、今回のInternal errorはちょっと関係なさそうです。4.1.27版を使っているので。8080を生かして使うと問題ないですから、httpdかJK2の問題だと思っています。それで両方とも自前でコンパイルしたのに変えたら嘘のようにエラーがでなくなりました。謎。
こちらで試してみたところ、
jakarta-tomcat-connectors-4.1.29-src.tar.gzは
ワーカへのリクエストフォワード指定が正しく働かないという
不具合がありました。ご参考まで。