こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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の認識がされてないと
考えているのですが、結局解決策が全くわからない状態です。
どなたか、ご教示願いますでしょうか。
よろしくお願いします。

投稿日時 - 2009-02-06 19:07:57

QNo.4694901

困ってます

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

こんにちわ。

[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の名前解決ができてるか調べてみてはいかがでしょう?

投稿日時 - 2009-02-06 22:28:02

お礼

ご回答ありがとうございます。

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の連携ができました!
本当にありがとうございました。

投稿日時 - 2009-02-09 11:19:10

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

server.xml を拝見させて頂きました。
ところ、
mod_jk2用のAJPコネクタが有効になっており、
mod_jk用のAJPコネクタは無効になっている様に見えます。

使用されているhttpd側のmod_jk.soのバージョンは合っているでしょうか?

もしかすると、
tomcat側で、
mod_jk2用のAJPコネクタを無効に設定、
mod_jk用のAJPコネクタを有効に設定。
などすると、HttpdとTomcatの連携が出来たりしませんか?

もう既に試されてます?

投稿日時 - 2009-02-06 21:09:48

補足

上記内容、server.xmlの8009記述箇所をmod_jk用のAJPコネクタを有効に変更して、
動作確認を行ってみましたが、結局連携できませんでした。

問題は、回答番号:No.3のlocalhostが解決できていなかったことにありました。
localhostを記述してなんとか連携できました!

投稿日時 - 2009-02-09 11:07:37

お礼

ご解答ありがとうございます。
まだ試していませんでした。
今回はまさにmod_jkを使用しています。
バージョンで違いがあったんですね。

試すのは休み明けになってしまいますが・・・
また、動作確認後、報告致します。

投稿日時 - 2009-02-06 21:47:33

ANo.1

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

投稿日時 - 2009-02-06 19:26:13

お礼

回答有難うございます。
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

設定と状態見る限り、ポートは大丈夫だと思うのですが、
でもエラー内容的に、ポートしか考えられない気もします。
本当よく解りません・・・

投稿日時 - 2009-02-06 20:11:12