天天看點

Apache與Tomcat整合,實踐操作版

一.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命名不帶字尾的話,将無法被識别,也就無法進行處理。

八.結束語

在查閱了不少文章之後,我仔細的了解了下這兩者進行整合的過程,網上很多文章講的整合應該不算是真正意義上面的整合,希望此文章能夠為正為這些問題苦惱的同行們解決一點小困難……。