Apache+Tomcat+mod_jk配置教程


0.說明

首先我們要弄明白mod_jk的作用是反向代理,而其實使用httpd.conf中的<VirtualHost>標簽就可以實現反向代理,為什么還要多搞個mod_jk那么麻煩做反向代理。

原因是<VirtualHost>標簽是http協議反向代理到8080端口,mod_jk是ajp協議反向代理到8009端口;http協議tcp只保持短時間連接要經常進行tcp三次握手四次揮手,ajp協議tcp保持長時間連接反向代理開銷就比較小。

 

1.下載

apache--yum install httpd -y

tomcat下載鏈接--http://tomcat.apache.org/

mod_jk下載鏈接--http://tomcat.apache.org/download-connectors.cgi

本文以httpd-2.2.15+tomcat-8.5.14+mod_jk-1.2.42為例

httpd通過yum安裝配置全為默認(由於最后一步驗證中我使用php進行驗證所以多裝了php,最簡lamp配置可參考鏈接;不需要apache解析php的話可以不用管php的,apache功能沒什么必要驗證)

tomcat直接下載接壓也未修改配置,安裝目錄/usr/myapp/apache-tomcat-8.5.14/,這兩者就不多輟述了。

 

2.mod_jk安裝配置

首先要清楚“Apache+Tomcat+mod_jk配置”到底要做什么,一是編譯生成mod_jk模塊,二是在apache中加載mod_jk並對其進行配置,三是在tomcat中修改配置以使其能接受mod_jk的轉發。

2.1編譯生成mod_jk模塊

編譯生成mod_jk.so,然后將其復制到httpd加載模塊默認的目錄/etc/httpd/modules

yum install httpd-devel -y    #編譯生成apache擴展依賴apxs,如未安裝先安裝
wget
http://mirrors.hust.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz tar -zxf tomcat-connectors-1.2.42-src.tar.gz cd tomcat-connectors-1.2.42-src/native/ ./configure --with-apxs=/usr/sbin/apxs make cp ./apache-2.0/mod_jk.so /etc/httpd/modules/

 

2.2在apache中加載mod_jk並對其進行配置

cd /etc/httpd/conf.d/
cat > mod_jk.conf << EOF
# Load mod_jk module
LoadModule    jk_module  modules/mod_jk.so
# Add the module (activate this lne for Apache 1.3)
# AddModule     mod_jk.c
# Where to find workers.properties
JkWorkersFile conf.d/workers.properties
# Where to put jk shared memory
JkShmFile     log/httpd/mod_jk.shm
# Where to put jk logs
JkLogFile     log/httpd/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel    info
# Send requests for context /examples to worker named worker1
JkMount  /examples/* tomcat1
EOF

LoadModule行--加載mod_jk模塊
JkWorkersFile行--worker連接配置文件所在路徑,文件需要自己創建。路徑繼承了ServerRoot,所以完整路徑為/etc/httpd/conf.d/workers.properties;當然也可以使用決對路徑指定為其他任意位置。后邊幾個配置同此。
JkShmFile行--mod_jk共享內存文件在放位置,文件不需要自己創建
JkLogFile行--mod_jk日志存放位置,文件不需要自己創建
JkLogLevel行--mod_jk日志記錄級別
JkMount行--將/examples/開頭的請示都轉由tomcat1處理

 JkWorkersFile行我們指定了worker的連接配置文件路徑,所謂worker就是在這里就是tomcat。所以我們要創建/etc/httpd/conf.d/workers.properties文件,並寫入tomcat的連接信息

cd /etc/httpd/conf.d
cat > workers.properties << EOF
# Define 1 real worker using ajp13
worker.list=tomcat1
# Set properties for worker1 (ajp13)
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=8009
EOF

worker.list行--worker列表。如有多個使用逗號(半角)隔開。

worker.tomcat1.type行--連接tomcat1使用的協議及版本。如果配置其他worker,將tomcat1改成相應worker名即可。

worker.tomcat1.host行--tomcat1的域名(包括/etc/hosts)或ip地址。如果配置其他worker,將tomcat1改成相應worker名即可。

worker.tomcat1.port行--tomcat1的ajp端口,默認8009。(tomcat監聽8009端口的意義就在這 里)。

說明:已驗證如上所述來配置多個worker是可以了,為了簡潔起見這里就不演示了。

 

2.3 tomcat配置jvmRoute

在workers.properties中我們指定了woker名為tomcat1,但在tomcat一側並不知道tomcat1就是指它。就比如別人給你起代號9527沒通知你,然后到你家跟你說找9527,你並不知道就是找你一樣。

我們需要找到$CATALINA_HOME/conf/server.xml中的Engine標簽,配置其jvmRoute屬性值為worker名(這里就是tomcat1)

 

2.4重啟apache和tomcat使配置生效

service httpd restart
cd /usr/myapp/apache-tomcat-8.5.14/bin   #根據自己tomcat目錄修改路徑
./shutdown.sh
./startup.sh

 

3 功能實現驗證

驗證apache功能正常--創建經典的phpinfo.php並訪問,如果正常顯示則說明apache原先的功能都正常。

驗證tomcat轉發成功--上邊mod_jk.conf中我們配置了/examples/開頭的請示都轉由tomcat1處理,如果我們訪問http://127.0.0.1/examples/其結果是tomcat顯示其webapps/examples目錄的內容則說明轉發成功。

3.1驗證apache功能正常

cd /var/www/html     #進入apache默認主目錄
cat > phpinfo.php << EOF
<?php
        phpinfo()
?>
EOF

 

 3.2驗證tomcat轉發成功

 

參考:

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

http://tomcat.apache.org/connectors-doc/common_howto/loadbalancers.html

https://stackoverflow.com/questions/3666649/apache-httpd-2-2-x-mod-jk-1-2-30-tomcat-6-error-could-not-find-worker-with


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM