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)支持
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,如下:
同時(shí),還需要設(shè)置jvmRoute來(lái)支持通過(guò)AJP的負(fù)載均衡,如下:
3、Apache最后配置
通過(guò)上面的步驟,我們就是要確定使用Apache的反向代理,將請(qǐng)求轉(zhuǎn)至Tomcat的AJP監(jiān)聽(tīng)端口上來(lái)正確處理。在Apache的httpd.conf中更改如下:
同時(shí)可在最后加入如下內(nèi)容:
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ì)他們表示非常感謝。
在整合過(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)去掉就可以了。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監(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]。???????????????connectionTimeout="20000"?
???????????????redirectPort="8443"?/>
<Connector?port="8009"?protocol="AJP/1.3"?redirectPort="8443"?/>
同時(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è)。????DirectoryIndex?index.html?index.jsp
</IfModule>
同時(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)。ProxyPass?/?balancer://cluster/
<proxy?balancer://cluster>
????BalancerMember?ajp://127.0.0.1:8009?loadfactor=1?route=tomcat1
</proxy>
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ì)他們表示非常感謝。