如何讓 Tomcat AJP 連接器正常工作?
我想使用連接器通過 Apache-webserver 訪問 Tomcat。我堅持使用文件: http: //tomcat.apache.org/connectors-doc/generic_howto/quick.html 我只對其進行了一些修改以匹配我的 Debian-(Squeeze)-System 上使用的目錄結構。
所以我在 /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 直接從 Apache 的存檔中安裝,因為它不是 Squeeze 中的包。Tomcat 7 在它自己的埠(8180,不與包系統中的 tomcat6 衝突)下執行並且可以訪問。據我了解,我現在應該看到帶有http://host/tomcat7/的 tomcat 站點。但我得到了一個 404。怎麼了?
在 quanta 提示將日誌級別設置為調試之後(謝謝),我這樣做了,並在 mod_jk.log 中發現了以下錯誤消息:‘jk_map_to_storage::mod_jk.c (3585): missing uri map for 176.9.9.55:/tomcat7 /’。我搜尋了一下,發現http://old.nabble.com/mod_jk%2C-missing-uri-map-td23984359.html
所以在 httpd.conf 中設置的選項並沒有在 VirtualHosts 中使用。我將“JkMountCopy On”添加到我的 VirtualHost - 並首先獲得了 Tomcat 404(而不是 httpd 404)。這裡的問題是,他試圖訪問安裝的完全相同的 URI,所以在我的例子中是 /tomcat7。我改用 webapp 的名稱作為 mount,一切對我來說都很好。
確保:
- 你輸入一個斜杠http://host/tomcat7/,而不是 http://host/tomcat7。
- 您有一個 AJP 1.3 連接器在埠 8009 上偵聽
server.xml
:<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>