項目部署 Apache+Tomcat

Apache+tomcat組合配置(總結以利提高系列)
客戶請求通過Apache過濾轉發到tomcat服務器,對於一些靜態頁面的請求,包括請求的Html文件,靜態頁面或者動態頁面中的圖片都直接由Apache處理,採用另外一種說法就是,對於用戶發出的對動態頁面的請求,如jsp、servlet,由Apache轉發給Tomcat處理,可以有效提高服務器性能。下面記錄配置過程。
環境配置:JDK1.4、Tomcat5.0.28、Apache2.0.58、mod_jk-apache-2.0.59.so(下載地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.25/
Tomcat配置:
在conf/server.xml中有
<Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3"/>,通過8009端口接收AJP13請求
增加一個配置文件,命名爲worker.properties。內容如下
workers.tomcat_home=D:/developEnv/server/Tomcat528
workers.java_home=D:/developEnv/JDK/j2sdk1.4.2_05
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
看key能明白每行配置的具體意思。這裏的ajp13.port的值和上面server.xml中的Connector Port值一致,host根據實際情況,Apache所在機器地址
對於部署在Tomcat上的應用不需要任何變動,不論是直接將war放置在webapp裏面,還是將應用的配置文件放在在conf/catalina/localhost/裏面。至此Tomcat配置完畢。

Apache的配置:
修改Apache的httpd.xml文件
首先需要確認兩個參數,Listen是指Apache的監聽端口,不能和現已使用的端口衝突,否則Apache啓動失敗,在設置過程中,如果出現Apache啓動失敗的情況時,可以將同目錄下的httpd.default.conf文件內容覆蓋過來,這裏存放的是Apache的默認配置。
另外一個參數是DocumentRoot,這是你的應用放置的起始位置,後面對於想通過Apache轉發到Tomcat的應用,其靜態內容的存放位置都是相對於該目錄的。
在httpd.xml的最後增加如下內容
#加載mod_jk模塊
      LoadModule jk_module modules/mod_jk.so
      #指向之前生成的Tomcat中conf目錄下的workers.properties文件絕對路徑
     JkWorkersFile "D:/developEnv/server/Tomcat528/conf/workers.properties"
     #模塊工作日誌存放文件
     JKLogFile "d:/tmp/jkLog.log"
     #日誌記錄級別,debug爲最低級別,使用該級別時,系統日誌量非常大,可以採用info、error
     JKLogLevel error
      ServerAdmin [email protected]
      ServerName localhost
       DirectoryIndex index.html index.htm index.jsp
       #設置轉發的請求url,這裏設置對於jsp請求或者servlet請求都通過jkModule轉發給Tomcat,如果設置JKMount /* Apache將不做任何工作,完全由Tomcat接替Apache,這樣就沒有整合的意義了,只是起到請求轉發的功能,所有的客戶請求還是交由Tomcat處理
       JKMount /servlet/* ajp13
       JKMount /*.jsp ajp13
 可以使用 apache -t測試配置文件是否正確,如果錯誤會提示錯誤原因。

 應用系統需要做一些相應的變動:
 1、將系統中的一些靜態內容按照目錄結構移動到apache 的DocumentRoot的相應應用文件夾中,只有那些

 問題以及問題解決:
 1、問題:通過上面方法設置之後,可以通過Apache訪問到JSP頁面,測試表明靜態內容是直接由Apache處理。但是訪問server內容時,卻不能解析,報404頁面不能訪問錯。
    解決:儘管JKMount /servlet/* ajp13已經設置了滿足這種格式的請求由Tomcat處理,但是不能工作,目前的解決方法有2個,一個是重新銀蛇server到一個url,並帶上後綴,然後在JKMount中類似jsp那樣設置,第二個方法是換用Apache2.2,Apache2.2已經支持Tomcat,採用Proxy方式。有知道解決訪問虛擬目錄訪問請留言.

針對有多個應用的需求,設置虛擬主機
LoadModule jk_module modules/mod_jk.so
JkWorkersFile "D:/developEnv/server/Tomcat528/conf/workers.properties"    
<VirtualHost *:81>
     JKLogFile "d:/tmp/jkLog.log"
     JKLogLevel info
     DocumentRoot d:/data/apache/www
      ServerAdmin [email protected] 
       ServerName hzCB
       DirectoryIndex index.html index.htm index.jsp
       JKMount /*.srv ajp13
       JKMount /*.jsp ajp13
 </VirtualHost>
 
 <VirtualHost *:82>
    ServerAdmin [email protected]
    DocumentRoot d:/data/apache/www
    ServerName hzPB
    ErrorLog logs/pb.log
    CustomLog logs/pbAccess.log common
</VirtualHost>

 <VirtualHost *:83>
    ServerAdmin [email protected]
    DocumentRoot d:/data/apache/www
    ServerName hzIM
    ErrorLog logs/im.log
    CustomLog logs/imAccess.log common
</VirtualHost>


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章