學海拾遺

          生活、技術、思想無處不在學習
          posts - 52, comments - 23, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Apache和Tomcat整合

          Posted on 2008-11-28 01:56 tanzek 閱讀(1409) 評論(0)  編輯  收藏 所屬分類: 技術學習
          在之前的日子里面,使用SSH架在TOMCAT上面寫了一個小項目,但是部門里最經常使用的是Apache+PHP,因此為了能夠不開放更多的端口,就想試驗下以前聽過的將Apache和Tomcat進行整合。
          在整合過程中,參考了很多內容,我都一一放在此文的末尾,供大家一起參閱。
          其實本文的目標比較小,經過一些簡單的了解后,可以使用Tomcat中的AJP監聽端口來進行整合。但是查閱后才得知,使用此種方法還可以進行均衡負載(load-balancing)、失效備援(failover)等,但這里因為我還沒有實踐成功過,因此僅將本次操作的部分進行總結。

          試驗軟件:
          Apache 2.2.10
          Tomcat 6.0.18

          1、加入Apache中的mod_proxy支持
          因為在Apache 2.2開始,使用mod_proxy_ajp來支持Apache JServ Protocol version 1.3了。所以,在這里我們只需啟用此模塊。當然為了更方便地進行代理,也可以把mod_proxy_相關的一些其它模塊一起啟用,在Apache中的httpd.conf如下:
          LoadModule?proxy_module?modules/mod_proxy.so
          LoadModule?proxy_ajp_module?modules
          /mod_proxy_ajp.so
          LoadModule?proxy_balancer_module?modules
          /mod_proxy_balancer.so
          LoadModule?proxy_connect_module?modules
          /mod_proxy_connect.so
          LoadModule?proxy_ftp_module?modules
          /mod_proxy_ftp.so
          LoadModule?proxy_http_module?modules
          /mod_proxy_http.so
          將這些項前面的#號去掉就可以了。

          2、在Tomcat中配置AJP監聽選項
          在Tomcat中,默認就已經開放了AJP的監聽選項,同時還開放了一個監聽non-SSL HTTP/1.1的Connector,如下:
          <Connector?port="8080"?protocol="HTTP/1.1"?
          ???????????????connectionTimeout
          ="20000"?
          ???????????????redirectPort
          ="8443"?/>
          <Connector?port="8009"?protocol="AJP/1.3"?redirectPort="8443"?/>
          在上面的配置中,就可以看出AJP的監聽端口在8009上,HTTP/1.1瀏覽器監聽在8080端口上。關于Connector的定義、配置及與其它元素之間的關系,大家可參考Apache Tomcat的官方文檔,有對結構的完整描述[1]。
          同時,還需要設置jvmRoute來支持通過AJP的負載均衡,如下:
          <Engine?name="Catalina"?defaultHost="localhost"?jvmRoute="tomcat1">
          在上述位置加入粗體部分的內容。

          3、Apache最后配置
          通過上面的步驟,我們就是要確定使用Apache的反向代理,將請求轉至Tomcat的AJP監聽端口上來正確處理。在Apache的httpd.conf中更改如下:
          <IfModule?dir_module>
          ????DirectoryIndex?index.html?index.jsp
          </IfModule>
          在上述元素節點中,加入粗體部分的文字內容,表示增加index.jsp作為默認首頁。
          同時可在最后加入如下內容:
          ProxyRequests?Off
          ProxyPass?
          /?balancer://cluster/
          <proxy?balancer://cluster>
          ????BalancerMember?ajp://127.0.0.1:8009?loadfactor=1?route=tomcat1
          </proxy>
          注意其中的8009是與第1步中的AJP監聽端口相對應,后面的route是與第1步中的jvmRoute相對應。

          4、設置完成后,重新啟動Apache和Tomcat。
          這樣子就成功了。

          本次參考了大量的內容,主要有如下:
          1、Apache Tomcat Architecture,http://tomcat.apache.org/tomcat-6.0-doc/architecture/index.html
          2、Graham King:High availability Tomcat - Connect Tomcat servers to Apache and to each other to keep your site running,http://www.roseindia.net/software-tutorials/detail/6135,JavaWorld.com,2004-12-20
          3、魏杰:Apache負載均衡+Tomcat集群,http://weijie.blog.51cto.com/340746/68195,2008-03-26
          4、heavyz:Tomcat啟動分析,http://docs.huihoo.com/apache/tomcat/heavyz/01-startup.html,2003-03-22
          還有很多參考沒辦法列出來,在此對他們表示非常感謝。
          主站蜘蛛池模板: 德州市| 邵阳县| 城口县| 龙山县| 福清市| 吴江市| 万源市| 平乐县| 垣曲县| 南安市| 建德市| 炎陵县| 鹤山市| 方城县| 东阿县| 和龙市| 高安市| 灌南县| 额敏县| 邻水| 霞浦县| 台南县| 凤冈县| 微山县| 隆安县| 达拉特旗| 浏阳市| 罗江县| 永丰县| 巧家县| 新河县| 鹤岗市| 沂南县| 富顺县| 谢通门县| 永德县| 陆河县| 沙坪坝区| 长葛市| 晋江市| 崇礼县|