寫在前面
網(wǎng)上已經(jīng)有很多關(guān)于如何整合Apache2與Tomcat的文章(有寫的不錯(cuò)的), 但有時(shí)看與實(shí)踐往往有些差距, 所謂實(shí)踐出真知. 要真的去做了, 才是真正的懂.
以下是昨天剛實(shí)踐的, 以此總結(jié), 以后少走彎路.
軟件及版本
Ubuntu 12.04(64位)
Apache 2.2.22
Tomcat 7.0.55
AJP13 mod_jk-1.2.31-httpd-2.2.x
僅在一臺(tái)機(jī)器上配置, 只有一個(gè)Tomcat(若有兩個(gè)及以上的Tomcat, 需要修改workers.properties).
整合步驟
1.安裝Apache2與OpenJDK
這兩個(gè)安裝只需要執(zhí)行下面的命令即可
安裝后在瀏覽器輸入http://ip_address 測(cè)試下是否正確
- apt-get install openjdk-7-jre-headless
安裝后執(zhí)行java -version 命令測(cè)試下JDK安裝是否正確
2.安裝Tomcat 7
到Tomcat 7的下載頁面http://tomcat.apache.org/download-70.cgi 去下載. 在Ubuntu系統(tǒng)中使用wget下載,命令如下
- wget http://apache.fayea.com/apache-mirror/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz
下載后使用tar命令解壓. 并運(yùn)行測(cè)試下.
此處使用默認(rèn)的8080端口與 AJP13的8009端口.
3.安裝AJP13并配置
AJP13是連接Apache2與Tomcat的連接器. 通過mod_jk來實(shí)現(xiàn),命令如下
- apt-get install libapache2-mod-jk
安裝后到/etc/libapache2-mod-jk目錄, 查看下有沒有workers.properties
使用vi workers.properties命令編輯該文件.
需要修改以下幾個(gè)地方
1). 修改workers.tomcat_home與workers.java_home的值為正確的路徑 (這一步是可選,但建議配置上)
2). 在worker.list后面添加jk-status,jk-manager的值, 配置后如下
- worker.list=ajp13_worker,jk-status,jk-manager
(若不加上這兩個(gè)值為在apache2啟動(dòng)后看到一些警告信息)
jk-status與jk-manager用于監(jiān)控mod_jk的運(yùn)行與管理(默認(rèn)只能在本機(jī)才能訪問)
其他的使用默認(rèn)值, 在這兒可以看到默認(rèn)已經(jīng)創(chuàng)建了一個(gè)名叫ajp13_worker 的worker. 記住這名字, 以后為用到.
修改后記得保存.
4.配置攔截規(guī)則
此處最重要,用于指定哪些URL由Apache處理, 哪些URL需要轉(zhuǎn)給Tomcat處理.(建議規(guī)則為: 所有靜態(tài)的資源由Apache處理,如圖片,JS,CSS, 動(dòng)態(tài)的轉(zhuǎn)給Tomcat處理,如加載數(shù)據(jù),業(yè)務(wù)處理部分)
進(jìn)入/etc/apache2/sites-available目錄.編輯default文件(命令vi default)
在</VirtualHost>標(biāo)簽之前與最后一個(gè)</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
- <pre code_snippet_id="344310" snippet_file_name="blog_20140514_7_6487905" name="code" class="html"> JkMount /*.jsp ajp13_worker</pre> JkMount /*.zsfz ajp13_worker
- <pre></pre>
- <p></p>
- <pre></pre>
- 應(yīng)該一看就明白了吧, JkUnMount 指定哪些匹配的URL由Apache處理, JkMount指定哪些匹配的URL轉(zhuǎn)給Tomcat處理,如此處配置所有以zsfz,jsp結(jié)束的URL轉(zhuǎn)給Tomcat處理. 記得之前叫記得的ajp13_worker有吧 , 在這兒用上了.
- <p></p>
- <p>除了使用JkUnMount與JkMount方式以外, 還有其他的方式. 這兒由讀者去擴(kuò)展學(xué)習(xí)下吧.</p>
- <p>最后修改好, 別忘了保存.</p>
- <p></p>
- <p></p>
- <p></p>
- <p>至此 , 整合配置完成, 下來是測(cè)試了. </p>
- <p>1.在Tomcat的Webapps目錄里先刪除之前所有的文件(與文件夾), 新建一個(gè)ROOT目錄, 在ROOT目錄里創(chuàng)建一個(gè)test.jsp文件, 里面隨便加點(diǎn)內(nèi)容.</p>
- <p>啟動(dòng)Tomcat 通過http://ip_address:8080/test.jsp訪問test.jsp,保證測(cè)試通過(注意這兒是直接訪問Tomcat)</p>
- <p>2.重啟Apache2, 命令 /etc/init.d/apache2 restart</p>
- <p>通過http://ip_address/test.jsp訪問,若能訪問成功并且內(nèi)容與之前直接訪問Tomcat的一致,則說明配置成功(注意: 此處不加端口)</p>
- <p>同理, 你可以放一張圖片到apache2的根目錄/var/www里, 并直接訪問看能成功否. </p>
- <p></p>
- <p>完</p>
- <p>---------------------------------------------------------------------</p>
- <p><strong>有用的擴(kuò)展</strong></p>
- <p>URL中對(duì)中文的支持.(若測(cè)試用中文的URL參數(shù)會(huì)出現(xiàn)亂碼, 這是字符編碼的問題), 通過設(shè)置UTF-8編碼來解決</p>
- <p>1.設(shè)置Apache默認(rèn)的字符編碼為UTF-8. 在安裝完成后進(jìn)入/etc/apache2/conf.d/目錄, 編輯charset文件, 將里面的AddDefaultCharset UTF-8 前面的#號(hào)取消并保存, 記得重啟.</p>
- <p>2.編輯Tomcat 的conf/server.xml文件, 將里面的AJP13的配置添加URIEncoding="UTF-8" 內(nèi)容. 添加后如下</p>
- <p></p>
- <pre code_snippet_id="344310" snippet_file_name="blog_20140514_8_8026614" name="code" class="html"><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" /></pre><br>
- OK, 支持中文參數(shù)了.
- <p></p>
- <p><br>
- </p>
- <p><br>
- </p>
- <p><br>
- </p>
- <p>參考文章</p>
- <p><a target="_blank" >http://www.cnblogs.com/junsong/archive/2012/07/03/2574447.html</a><br>
- </p>
- <p><br>
- </p>