• ベストアンサー

Apache-Tomcatを連携させる方法

Tomcat4.1.30とApache2.0.55の連携についての質問になります。 連携させたいのですがどうしても上手くいきません。 環境 OS:Red Hat Enterprise Linux 5 Tomcat:Ver4.1.30 Apache:Ver2.0.55 JAVA :Ver1.4.2.10 になります。 不足情報がありましたら追記しますので仰ってください。 環境作成 1.Apache、Java、Tomcatをインストールしました  (1)Apacheインストール手順  # tar zxvf httpd-2.0.55.tar.tar  # cd httpd-2.0.55  # ./configure --enable-module=so --prefix=/usr/local/apache  # make  # make install  (2)Javaインストール手順  # sh j2sdk-1_4_2_10-linux-i586-rpm.bin  # rpm –ivh j2sdk-1_4_2_10- fcs-linux-i586.rpm  (3)Tomcatインストール手順  # tar zxvf jakarta-tomcat-4.1.31.tar.gz 2.次にApache-tomcatを連携させるmod_jkをコンパイルしました  (1)手順  # tar zxvf jakarta-tomcat-connectors-current-src.tar.gz  # sh buildconf.sh  # ./configure --with-apxs=/usr/local/apache/bin/apxs --with-tomcat41=/usr/local/tomcat --with-java-home=/usr/java/j2sdk1.4.2_10  # make 3.apacheの設定にmod_jkを認識させるため下記ファイルを編集しました。  (1)httpd.confに以下内容を追記  途中に追記  # LoadModule jk_module module /mod_jk.so  # <IfModule mod_jk.c> #  JkWorkersFile conf/workers.properties  #  JkLogFile logs/mod_jk.log  #  JkLogLevel warn  #  JkMount /examples/* ajp13  #</IfModule>  最終行に追記  #  Alias /examples "/usr/local/tomcat/webapps/examples"  #  <Location "/examples/">  #   Options Indexes FollowSymLinks  #  </Location>  #  <Location "/examples/WEB-INF/">  #   AllowOverride None deny from all  #  </Location>  (2)workers.propertiesに以下内容を編集・追記  編集  #  worker.list=ajp13  # worker.ajp13.port=8009  # worker.ajp13.host=localhost  # worker.ajp13.type=ajp13      最終行に追記  #  [uri:/aquatech/servlet/*]  # [uri:/aquatech/*.jsp]   上記内容のように変更致しました。 以前作成したサーバは、これだけの手順でTomcatとApacheの連携はできています。 しかし、今回のサーバはなぜかエラーが発生しました。 エラーログ /usr/local/apache/logs/mod_jk.logより抜粋 [Fri Feb 06 18:09:47 2009] [error] ajp_validate::jk_ajp_common.c (1815): can't resolve tomcat address localhost [Fri Feb 06 18:09:47 2009] [error] ajp_validate::jk_ajp_common.c (1818): invalid host andport localhost 8009 [Fri Feb 06 18:09:47 2009] [error] wc_create_worker::jk_worker.c (158): validate failed for ajp13 [Fri Feb 06 18:09:47 2009] [error] build_worker_map::jk_worker.c (256): failed to create worker ajp13 これにより、ポート8080接続(http://localhost:8080/examples/index.jsp)は表示されますが、 80接続(http://localhost/examples/index.jsp)では、500 Internal Server Errorの画面が表示されます。 3.(1)に追記した、mod_jk.soのLoadModule郡を全てコメントにすると、 エラーログは発生されず、80接続(http://localhost/examples/index.jsp)を表示すると、 jspファイルのソース中身が丸出しになった状態で表示されました。 また、http://localhost/examplesへ移動すると、 tomcatのwebappsの中にあるexamplesディレクトリ構造が表示されてしまいました。 tomcatもapacheも起動はしていますが、mod_jk.soの認識がされてないと 考えているのですが、結局解決策が全くわからない状態です。 どなたか、ご教示願いますでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちわ。 [Fri Feb 06 18:09:47 2009] [error] ajp_validate::jk_ajp_common.c (1815): can't resolve tomcat address localhost ってことなのでlocalhostが名前解決できない? でも、「http://localhost:8080/examples/index.jsp」で表示できるんですよね。。。 試しに ping localhost とか nslookup localhost でlocalhostの名前解決ができてるか調べてみてはいかがでしょう?

sotbeoc
質問者

お礼

ご回答ありがとうございます。 ​http://localhost:8080/examples/index.jsp ←ですが・・・ 実際には、localhostの箇所は直接IPアドレスを入れてました。 紛らわしい記述してしまい申し訳ございません。 chomakichi様のおっしゃるとおり、ping localhostが全く返ってきませんでした。 盲点でした・・・ hostsに下記内容を記述して、ping localhostが返るようになりました。 # /etc/hosts # 127.0.0.1 localhost.localdomain localhost localhostを解決することで、ApacheとTomcatの連携ができました! 本当にありがとうございました。

その他の回答 (2)

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.2

server.xml を拝見させて頂きました。 ところ、 mod_jk2用のAJPコネクタが有効になっており、 mod_jk用のAJPコネクタは無効になっている様に見えます。 使用されているhttpd側のmod_jk.soのバージョンは合っているでしょうか? もしかすると、 tomcat側で、 mod_jk2用のAJPコネクタを無効に設定、 mod_jk用のAJPコネクタを有効に設定。 などすると、HttpdとTomcatの連携が出来たりしませんか? もう既に試されてます?

sotbeoc
質問者

お礼

ご解答ありがとうございます。 まだ試していませんでした。 今回はまさにmod_jkを使用しています。 バージョンで違いがあったんですね。 試すのは休み明けになってしまいますが・・・ また、動作確認後、報告致します。

sotbeoc
質問者

補足

上記内容、server.xmlの8009記述箇所をmod_jk用のAJPコネクタを有効に変更して、 動作確認を行ってみましたが、結局連携できませんでした。 問題は、回答番号:No.3のlocalhostが解決できていなかったことにありました。 localhostを記述してなんとか連携できました!

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

私の予想だと、 tomcat側で、AJP待ち受け用のポートが準備できてない気がします。 tomcat側のserver.xmlがどうなっているのか確認しましたか? ポート8009用の待ち受けポートの設定がコメントアウトされていたりしませんかね?

sotbeoc
質問者

お礼

回答有難うございます。 tomcat側のserver.xmlは以下のように設定しています。 <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8009" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="0" useURIValidationHack="false" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/> <!-- Define an AJP 1.3 Connector on port 8009 --> <!-- <Connector className="org.apache.ajp.tomcat4.Ajp13Connector" port="8009" minProcessors="5" maxProcessors="75" acceptCount="10" debug="0"/> --> ちなみに、netstat -a | grep LISTENを実行すると以下のようになっています。 tcp 0 0 *:8009 *:* LISTEN 設定と状態見る限り、ポートは大丈夫だと思うのですが、 でもエラー内容的に、ポートしか考えられない気もします。 本当よく解りません・・・

関連するQ&A