コネクタを使用してApache-webserverからTomcatにアクセスしたい。私はドキュメントにこだわりました: http://Tomcat.Apache.org/connectors-doc/generic_howto/quick.html 私は、Debianで使用されているディレクトリ構造と一致するように少しだけ変更しました Squeeze )-システム。
そこで、以下を/etc/Apache2/httpd.confに追加しました。
# Load mod_jk module
# Update this path to match your modules location
#LoadModule jk_module libexec/mod_jk.so
# Declare the module for <IfModule directive> (remove this line on Apache 2.x)
#AddModule mod_jk.c
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/Apache2/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile /var/log/Apache2/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/Apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send everything for context /examples to worker named worker1 (ajp13)
JkMount /Tomcat7/* worker1
パッケージシステム(libapache2-mod-jk)を介してmod_jkをインストールした後で、モジュールのロードをコメントアウトしました。
私のworkers.propertiesは次のようになります:
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.Host=localhost
worker.worker1.port=8009
Tomcat 7は、Squeezeのパッケージではないため、Apacheのアーカイブから直接インストールされます。 Tomcat 7は実行中で、独自のポート(8180、パッケージシステムのTomcat6と衝突しない)で到達可能です。私が理解している限りでは、Tomcatサイトに---(http:// Host/Tomcat7 / が表示されているはずです。しかし、代わりに404が表示されます。なにが問題ですか?
量子がログレベルをデバッグに設定するようにほのめかした後(ありがとう)、それを行い、mod_jk.logに次のエラーメッセージを見つけました: 'jk_map_to_storage :: mod_jk.c(3585):176.9.9.55:/Tomcat7のURIマップがありません/ '。私はそれをググってみました http://old.nabble.com/mod_jk%2C-missing-uri-map-td23984359.html
したがって、httpd.confで設定されたオプションは、VirtualHostsでは使用されませんでした。 VirtualHostに「JkMountCopy On」を追加し、(httpd 404ではなく)最初にTomcat 404を取得しました。ここで問題は、マウントされたまったく同じURIにアクセスしようとするため、私の場合は/ Tomcat7です。代わりにマウントとしてwebappの名前を使用しましたが、すべて問題ありません。
次のことを確認してください。
server.xml
のポート8009でリッスンするAJP 1.3コネクタがあります。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
それでも機能しない場合は、デバッグをオンにしてmod_jk.log
を確認することをお勧めします。
編集:
使用する場合:
JkMount /Tomcat7/* worker1
http:// Host/Tomcat7 を介してアクセスすると、Apache 404エラーが表示されます。
必要な仮想ホストセクションでJkMount
を指定できます。
<VirtualHost *:80>
ServerName xx
ServerAdmin xx
JkMount /Tomcat7 worker1
JkMount /Tomcat7/* worker1
</VirtualHost>
同じ問題がありました。解決策は、JkMount /Tomcat7* worker1
をJkMount /your-servlet-app* worker1
に変更することです。 JkMount
はいくつでも持つことができます。
たとえば、JkMount /manager* worker1
を追加すると、http://Host/manager/html
にアクセスできるようになります
AJPとhttpの両方を試した後、この問題を見つけました。 /var/log/Tomcat7/localhost_access_log.txt
に次のアクセスログがありました
10.215.22.132 - - [04/Mar/2016:13:14:39 +0800] "GET /Tomcat-demo/manager/ HTTP/1.1" 404 1009
10.215.22.132 - - [04/Mar/2016:13:26:05 +0800] "GET /Tomcat-demo/manager/http/ HTTP/1.1" 404 1019
10.215.22.132 - - [04/Mar/2016:13:40:33 +0800] "GET /manager/ HTTP/1.1" 302 -
10.215.22.132 - - [04/Mar/2016:13:40:33 +0800] "GET /manager/html?org.Apache.catalina.filters.CSRF_NONCE=E68B5F7E6E96D09C75A8D6854ECE9092 HTTP/1.1" 401 2474
10.215.22.132 - yz [04/Mar/2016:13:40:35 +0800] "GET /manager/html?org.Apache.catalina.filters.CSRF_NONCE=E68B5F7E6E96D09C75A8D6854ECE9092 HTTP/1.1" 200 12405
最初の2つのログ行は、AJPを使用しているときに生成されました。最後の3つは、httpを使用してTomcatに直接アクセスしているときに生成されました。したがって、Apacheはjkmountプレフィックスを削除する代わりに、URL全体をTomcatに渡します。
可能であれば、代わりにmod_proxy_ajpまたはmod_proxy_httpを使用してください: http://httpd.Apache.org/docs/2.2/mod/mod_proxy_ajp.htmlhttp://httpd.Apache.org/docs/2.2/mod/mod_proxy_http.html