整合Apache和Tomcat
從網上查了不少資料,想了解一下如何整合Apache和Tomcat,以便讓Apache的httpd負責靜態內容,讓Tomcat負責動態內容的部分。
參考文章:
https://tomcat.apache.org/connectors-doc/generic_howto/quick.html
https://code-worker.javaeye.com/blog/246993
https://www.qqread.com/php/n652282101.html
https://tomcat.apache.org/connectors-doc/reference/workers.html
我自己試了一下,把具體過程記錄下來,以備今後查看。
1. 安裝Apache Http Server、Tomcat、Tomcat Connector(JK Module)
- Apache Httpd:從網上下載Apache Http Server 2.2.15的安裝版(貌似沒有免安裝壓縮版)。安裝時可以選擇將其安裝為係統服務或者每次手動啟動。我隻是測試,所以選擇了後者,但後者默認將會監聽8080端口,注意不要與Tomcat默認的8080端口衝突了。這一項可以稍後在配置文件中修改。
- Tomcat:可以選擇免安裝壓縮版(我用的是6.0.18版),很方便,可以注冊為係統服務。
- JK Module:從https://tomcat.apache.org/download-connectors.cgi找到binary下載,下載目前最新版1.2.30文件mod_jk-1.2.30-httpd-2.2.3.so,將其改名為mod_jk.so,置於Apache Http Server安裝目錄下的modules目錄中。
2. 新建workers.properties文件
可以參考:https://tomcat.apache.org/connectors-doc/generic_howto/quick.html
這個worker.properties可以置於任何目錄下,我把它直接放在了Apache Http Server的安裝目錄下。
# 為mod_jk模塊指明Tomcat的安裝路徑
workers.tomcat_home=D:/DevSoft/apache-tomcat-6.0.18
# 為mod_jk模塊指明JDK的安裝路徑
workers.java_home=C:/Program Files/Java/jdk1.6.0_20
# 添加一個worker到worker列表
worker.list=worker1
# 為worker1設定各個參數
# 工作端口,Tomcat的默認Connector監聽端口,可以查看Tomcat的Server.xml中有port="8009"
worker.worker1.port=8009
# Tomcat所在機器,如果安裝在與apache不同的機器則需要設置IP
worker.worker1.host=localhost
# worker的類型,允許的值為ajp13、ajp14、lb、status等;ajp13是mod_jk連接WebServer和Tomcat的首選方式(即使用socket作為通信渠道)
worker.worker1.type=ajp13
# 負載平衡因子
worker.worker1.lbfactor=1
注:worker.list中worker的名字應該是對應到Apache Http Server的httpd.conf配置文件中的JkMount的(後麵詳述)。
3. 修改Apache Http Server的httpd.conf配置文件
修改Apache Http Server安裝目錄下的conf目錄下的httpd.conf文件:
# 載入mod_jk模塊,注意模塊文件的路徑
LoadModule jk_module modules/mod_jk.so
# 聲明workers.properties文件的位置
JkWorkersFile "C:/Program Files/Apache Software Foundation/Apache2.2/workers.properties"
# 聲明mod_jk的日誌文件位置
JkLogFile "C:/Program Files/Apache Software Foundation/Apache2.2/logs/mod_jk.log"
# 聲明mod_jk的日誌級別(可選)
JkLogLevel info
# 聲明mod_jk的日誌的時間戳格式(可選)
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# 將/*.action和/*.jsp類型的請求都分配給Tomcat,其餘類型的有Apache Http Server自己處理
# 注意JkMount後麵的worker1即對應worker.properties文件中worker.list裏的worker的名稱
JkMount /*.action worker1
JkMount /*.jsp worker1
4. 修改DirectoryRoot
網上的文章大多隻寫到上麵就結束了,動態的內容交給Tomcat之一步算是完成了,但靜態內容的分配還需接著設置httpd.conf文件。
查找到DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"這一行,並將其值替換為Web應用的路徑:
DocumentRoot "D:/DevSoft/apache-tomcat-6.0.18/webapps"
查找到<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">這一行,並將其值替換為Web應用的路徑:
<Directory "D:/DevSoft/apache-tomcat-6.0.18/webapps">
至此,動態內容和靜態內容的請求分配,才基本完成。
最後更新:2017-10-24 00:34:32