寫在前面
網(wǎng)上已經(jīng)有很多關于如何整合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
這兩個安裝只需要執(zhí)行下面的命令即可
安裝后在瀏覽器輸入http://ip_address 測試下是否正確
- apt-get install openjdk-7-jre-headless
安裝后執(zhí)行java -version 命令測試下JDK安裝是否正確
2.安裝Tomcat 7
到Tomcat 7的下載頁面http://tomcat./download-70.cgi 去下載. 在Ubuntu系統(tǒng)中使用wget下載,命令如下
- wget http://apache./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來實現(xiàn),命令如下
- 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用于監(jiān)控mod_jk的運行與管理(默認只能在本機才能訪問)
其他的使用默認值, 在這兒可以看到默認已經(jīng)創(chuàng)建了一個名叫ajp13_worker 的worker. 記住這名字, 以后為用到.
修改后記得保存.
4.配置攔截規(guī)則
此處最重要,用于指定哪些URL由Apache處理, 哪些URL需要轉給Tomcat處理.(建議規(guī)則為: 所有靜態(tài)的資源由Apache處理,如圖片,JS,CSS, 動態(tài)的轉給Tomcat處理,如加載數(shù)據(jù),業(yè)務處理部分)
進入/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
- <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>
- 應該一看就明白了吧, JkUnMount 指定哪些匹配的URL由Apache處理, JkMount指定哪些匹配的URL轉給Tomcat處理,如此處配置所有以zsfz,jsp結束的URL轉給Tomcat處理. 記得之前叫記得的ajp13_worker有吧 , 在這兒用上了.
- <p></p>
- <p>除了使用JkUnMount與JkMount方式以外, 還有其他的方式. 這兒由讀者去擴展學習下吧.</p>
- <p>最后修改好, 別忘了保存.</p>
- <p></p>
- <p></p>
- <p></p>
- <p>至此 , 整合配置完成, 下來是測試了. </p>
- <p>1.在Tomcat的Webapps目錄里先刪除之前所有的文件(與文件夾), 新建一個ROOT目錄, 在ROOT目錄里創(chuàng)建一個test.jsp文件, 里面隨便加點內容.</p>
- <p>啟動Tomcat 通過http://ip_address:8080/test.jsp訪問test.jsp,保證測試通過(注意這兒是直接訪問Tomcat)</p>
- <p>2.重啟Apache2, 命令 /etc/init.d/apache2 restart</p>
- <p>通過http://ip_address/test.jsp訪問,若能訪問成功并且內容與之前直接訪問Tomcat的一致,則說明配置成功(注意: 此處不加端口)</p>
- <p>同理, 你可以放一張圖片到apache2的根目錄/var/www里, 并直接訪問看能成功否. </p>
- <p></p>
- <p>完</p>
- <p>---------------------------------------------------------------------</p>
- <p><strong>有用的擴展</strong></p>
- <p>URL中對中文的支持.(若測試用中文的URL參數(shù)會出現(xiàn)亂碼, 這是字符編碼的問題), 通過設置UTF-8編碼來解決</p>
- <p>1.設置Apache默認的字符編碼為UTF-8. 在安裝完成后進入/etc/apache2/conf.d/目錄, 編輯charset文件, 將里面的AddDefaultCharset UTF-8 前面的#號取消并保存, 記得重啟.</p>
- <p>2.編輯Tomcat 的conf/server.xml文件, 將里面的AJP13的配置添加URIEncoding="UTF-8" 內容. 添加后如下</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" href="http://yr512656630./blog/933458">http://yr512656630./blog/933458</a><br>
- </p>
- <p><a target="_blank" >http://www.cnblogs.com/junsong/archive/2012/07/03/2574447.html</a><br>
- </p>
- <p><br>
- </p>
|