學(xué)海拾遺

          生活、技術(shù)、思想無(wú)處不在學(xué)習(xí)
          posts - 52, comments - 23, trackbacks - 0, articles - 3
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Apache和Tomcat整合

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

          試驗(yàn)軟件:
          Apache 2.2.10
          Tomcat 6.0.18

          1、加入Apache中的mod_proxy支持
          因?yàn)樵贏pache 2.2開(kāi)始,使用mod_proxy_ajp來(lái)支持Apache JServ Protocol version 1.3了。所以,在這里我們只需啟用此模塊。當(dāng)然為了更方便地進(jìn)行代理,也可以把mod_proxy_相關(guān)的一些其它模塊一起啟用,在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
          將這些項(xiàng)前面的#號(hào)去掉就可以了。

          2、在Tomcat中配置AJP監(jiān)聽(tīng)選項(xiàng)
          在Tomcat中,默認(rèn)就已經(jīng)開(kāi)放了AJP的監(jiān)聽(tīng)選項(xiàng),同時(shí)還開(kāi)放了一個(gè)監(jiān)聽(tīng)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的監(jiān)聽(tīng)端口在8009上,HTTP/1.1瀏覽器監(jiān)聽(tīng)在8080端口上。關(guān)于Connector的定義、配置及與其它元素之間的關(guān)系,大家可參考Apache Tomcat的官方文檔,有對(duì)結(jié)構(gòu)的完整描述[1]
          同時(shí),還需要設(shè)置jvmRoute來(lái)支持通過(guò)AJP的負(fù)載均衡,如下:
          <Engine?name="Catalina"?defaultHost="localhost"?jvmRoute="tomcat1">
          在上述位置加入粗體部分的內(nèi)容。

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

          4、設(shè)置完成后,重新啟動(dòng)Apache和Tomcat。
          這樣子就成功了。

          本次參考了大量的內(nèi)容,主要有如下:
          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負(fù)載均衡+Tomcat集群,http://weijie.blog.51cto.com/340746/68195,2008-03-26
          4、heavyz:Tomcat啟動(dòng)分析,http://docs.huihoo.com/apache/tomcat/heavyz/01-startup.html,2003-03-22
          還有很多參考沒(méi)辦法列出來(lái),在此對(duì)他們表示非常感謝。
          主站蜘蛛池模板: 栾川县| 淮滨县| 南川市| 遵义县| 饶平县| 临漳县| 龙里县| 东乌珠穆沁旗| 玉田县| 会东县| 中超| 香河县| 南昌县| 凤台县| 海伦市| 离岛区| 广河县| 元氏县| 临夏市| 资源县| 微山县| 博爱县| 镇江市| 溧水县| 余庆县| 定南县| 喀什市| 武隆县| 朝阳县| 凤翔县| 临沂市| 视频| 江山市| 子长县| 梅河口市| 红原县| 都兰县| 方正县| 南昌市| 巩义市| 上思县|