寫在前面
網上已經有很多關於如何整合Apache2與Tomcat的文章(有寫的不錯的), 但有時看與實踐往往有些差距, 所謂實踐出真知. 要真的去做了, 才是真正的懂.
以下是昨天剛實踐的, 以此總結, 以後少走彎路.
軟體及版本
Ubuntu 12.04(64位)
Apache 2.2.22
Tomcat 7.0.55
AJP13 mod_jk-1.2.31-httpd-2.2.x
僅在一台機器上配置, 只有一個Tomcat(若有兩個及以上的Tomcat, 需要修改workers.properties).
整合步驟
1.安裝Apache2與OpenJDK
這兩個安裝只需要執行下面的命令即可
apt-get install apache2
安裝後在瀏覽器輸入http://ip_address 測試下是否正確
apt-get install openjdk-7-jre-headless
安裝後執行java -version 命令測試下JDK安裝是否正確
2.安裝Tomcat 7
到Tomcat 7的下載頁面http://tomcat.apache.org/download-70.cgi 去下載. 在Ubuntu系統中使用wget下載,命令如下
wget http://apache.fayea.com/apache-mirror/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz
下載後使用tar命令解壓. 並運行測試下.
此處使用預設的8080連接埠與 AJP13的8009連接埠.
3.安裝AJP13並配置
AJP13是串連Apache2與Tomcat的連接器. 通過mod_jk來實現,命令如下
apt-get install libapache2-mod-jk
安裝後到/etc/libapache2-mod-jk目錄, 查看下有沒有workers.properties
使用vi workers.properties命令編輯該檔案.
需要修改以下幾個地方
1). 修改workers.tomcat_home與workers.java_home的值為正確的路徑 (這一步是可選,但建議配置上)
2). 在worker.list後面添加jk-status,jk-manager的值, 配置後如下
worker.list=ajp13_worker,jk-status,jk-manager
(若不加上這兩個值為在apache2啟動後看到一些警告資訊)
jk-status與jk-manager用於監控mod_jk的運行與管理(預設只能在本機才能訪問)
其他的使用預設值, 在這兒可以看到預設已經建立了一個名叫ajp13_worker 的worker. 記住這名字, 以後為用到.
修改後記得儲存.
4.配置攔截規則
此處最重要,用於指定哪些URL由Apache處理, 哪些URL需要轉給Tomcat處理.(建議規則為: 所有靜態資源由Apache處理,如圖片,JS,CSS, 動態轉給Tomcat處理,如載入資料,業務處理部分)
進入/etc/apache2/sites-available目錄.編輯default檔案(命令vi default)
在</VirtualHost>標籤之前與最後一個</Directory>之後添加,樣本如下
JkUnMount /*.js ajp13_worker JkUnMount /*.css ajp13_worker JkUnMount /*.htm ajp13_worker JkUnMount /*.png ajp13_worker JkUnMount /*.gif ajp13_worker JkUnMount /*.jpg ajp13_worker JkUnMount /*.jpeg ajp13_worker
JkMount /*.jsp ajp13_worker
JkMount /*.zsfz ajp13_worker
應該一看就明白了吧, JkUnMount 指定哪些匹配的URL由Apache處理, JkMount指定哪些匹配的URL轉給Tomcat處理,如此處配置所有以zsfz,jsp結束的URL轉給Tomcat處理. 記得之前叫記得的ajp13_worker有吧 , 在這兒用上了.
除了使用JkUnMount與JkMount方式以外, 還有其他的方式. 這兒由讀者去擴充學習下吧.
最後修改好, 別忘了儲存.
至此 , 整合配置完成, 下來是測試了.
1.在Tomcat的Webapps目錄裡先刪除之前所有的檔案(與檔案夾), 建立一個ROOT目錄, 在ROOT目錄裡建立一個test.jsp檔案, 裡面隨便加點內容.
啟動Tomcat 通過http://ip_address:8080/test.jsp訪問test.jsp,保證測試通過(注意這兒是直接存取Tomcat)
2.重啟Apache2, 命令 /etc/init.d/apache2 restart
通過http://ip_address/test.jsp訪問,若能訪問成功並且內容與之前直接存取Tomcat的一致,則說明配置成功(注意: 此處不加連接埠)
同理, 你可以放一張圖片到apache2的根目錄/var/www裡, 並直接存取看能成功否.
完
---------------------------------------------------------------------
有用的擴充
URL中對中文的支援.(若測試用中文的URL參數會出現亂碼, 這是字元編碼的問題), 通過設定UTF-8編碼來解決
1.設定Apache預設的字元編碼為UTF-8. 在安裝完成後進入/etc/apache2/conf.d/目錄, 編輯charset檔案, 將裡面的AddDefaultCharset UTF-8 前面的#號取消並儲存, 記得重啟.
2.編輯Tomcat 的conf/server.xml檔案, 將裡面的AJP13的配置添加URIEncoding="UTF-8" 內容. 添加後如下
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
OK, 支援中文參數了.
參考文章
http://yr512656630.iteye.com/blog/933458
http://www.cnblogs.com/junsong/archive/2012/07/03/2574447.html