一.Apache與Tomcat介紹
Apache是目前使用最為廣泛的WWW伺服器軟體,具有相當強大的靜态HTML處理的能力。
Tomcat伺服器是一個免費的開放源代碼的Web應用伺服器,它是Apache軟體基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和 其他一些公司及個人共同開發而成。由于有了Sun的參與和支援,最新的Servlet和JSP 規範總是能在Tomcat中得到展現,Tomcat5支援最新的Servlet 2.4和JSP 2.0規範。因為Tomcat技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟體開發商的認可,成為目前比較流行的Web應用伺服器。
Tomcat和IIS、Apache等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式。
二.為什麼需要整合
整合的最主要原因是為了在現有的硬體條件下提供最大的負載。
如果單獨使用Tomcat做JSP伺服器,在工作效率上會存在問題,Tomcat處理靜态HTML的能力不如Apache,并且所能承受的最大并發連接配接數也有一定的限制;
在測試中,當并發連接配接較多時,Tomcat就會處于“僵死”狀态,對後繼的請求連接配接失去響應。是以現在提出一個“整合”解決方案:将html與 jsp的功能部分進行明确分工,讓tomcat隻處理jsp部分,其它的由apache這個web server處理。Apache與Tomcat各司其職,那麼伺服器的整體效率就能夠得到提升。
三.整合的基本原理
作為Apache下面的子項目,Tomcat 與 Apache之間有着天然的聯系。在實際操作中,主要是Apache作為主伺服器運作,當監聽到有jsp或者servlet的請求時,将請求轉發給 tomcat伺服器,由tomcat伺服器進行解析後,發回apache,再由apache發回使用者。
在tomcat中有兩個監聽的端口,一個是8080用于提供web服務,一個是8009用于監聽來自于apache的請求。當apache收到 jsp或者servlet請求時,就向tomcat 的8009端口發送請求,交由tomcat處理後,再傳回給apache,由apache傳回給客戶。
四.安裝Apache與Tomcat伺服器
作業系統環境:Windows xp home
安裝檔案:apache-tomcat-6.0.14.exe apache_2.2.6-win32-x86-openssl-0.9.8e.msi mod_jk-apache-2.2.4.so
到apache 與tomcat 的官方網站上面下載下傳apache 與tomcat,安裝apache與tomcat
到http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32下載下傳 mod_jk-apache-2.2.4.so
将mod_jk-apache-2.2.4.so拷貝到apache安裝目錄下面的modules目錄中。
五.修改Tomcat設定
在tomcat的conf目錄下建一個workers.properties的文本檔案,添加如下配置
workers.tomcat_home="tomcat安裝目錄"
#讓mod_jk子產品知道Tomcat的安裝路徑
workers.java_home="java安裝目錄"
#讓mod_jk子產品知道jdk路徑
ps="
#ps的用途不清楚,不知道是幹嘛的
worker.list=ajp13
#這裡是關鍵,名字要和httpd.conf的一緻。如果這裡改了httpd.conf也要改。
worker.ajp13.port=8009
#工作端口,tomcat的jk監聽端口,可以檢視Server.xml中有port="8009"
worker.ajp13.host=localhost
#Tomcat所在機器,如果安裝在與apache不同的機器則需要設定IP
worker.ajp13.type=ajp13
#類型,好像不能改,會出問題
worker.ajp13.lbfactor=1
#負載平衡因子
六.修改Apache設定
修改apache安裝目錄下conf目錄下的httpd.conf,增加如下配置
打開d:\Apache\Apache2\conf下的httpd.conf,在最後加入下面這段代碼并儲存。
#設定Apache與Tomcat之間的連接配接,讓Apache遇到jsp檔案時,在背景将其交由Tomcat去處理
LoadModule jk_module modules/mod_jk_2.0.55.so
#此處mod_jk的檔案為你下載下傳的檔案
JkWorkersFile "d:/Tomcat/conf/workers.properties"
#指定tomcat監聽配置檔案位址
JkLogFile "d:/Tomcat/logs/mod_jk2.log"
#指定日志存放位置
JkLogLevel info
#指定日志輸出的級别為:INFO級别
#設定虛拟主機
<VirtualHost localhost>
ServerAdmin localhost
DocumentRoot d:/test1
#您的站點項目所在路徑,應與tomcat中的目錄設定相同
ServerName localhost
DirectoryIndex index.html index.htm index.jsp
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /servlet/* ajp13
#讓Apache支援對servlet傳送,用以Tomcat解析
JkMount /*.jsp ajp13
#讓Apache支援對jsp傳送,用以Tomcat解析
JkMount /*.do ajp13
#讓Apache支援對.do傳送, 用以Tomcat解析
</VirtualHost>
七.整合操作說明
mod_jk-apache-2.2.4.so相當于是apache與tomcat之間的橋梁一樣,是以在apache的配置檔案下面加上LoadModule jk_module modules/mod_jk-apache-2.2.4.so 将此子產品載入。
JkWorkersFile "tomcat安裝目錄/conf/workers.properties" 說明了mod_jk-apache-2.2.4.so 如何工作,當出現要轉發時,将請求發送到那裡進行處理,代表了一系列的工作參數。
JkLogFile "apache安裝目錄/logs/mod_jk.log" 設定日志的位址。
JkMount 說明了将什麼樣的URL進行發送到tomcat進行處理。JkMount /*.jsp ajp13 說明了要将jsp請求發到tomcat,JkMount /*.do ajp13說明了要将.do型的servlet發到tomcat進行處理。在實際的分發中,如果servlet命名不帶字尾的話,将無法被識别,也就無法進行處理。
八.結束語
在查閱了不少文章之後,我仔細的了解了下這兩者進行整合的過程,網上很多文章講的整合應該不算是真正意義上面的整合,希望此文章能夠為正為這些問題苦惱的同行們解決一點小困難……。