Tomcat 4.0+apache 1.3完美整合
板橋里人 jdon.com 2001/10
1.Tomcat缺省的jsp文件必須放置在examples目錄下,難道jsp文件只能放在examples下嗎?
2. 訪問(wèn)jsp只能用xxxx.com:8080訪問(wèn)嗎?
本文討論如何結(jié)合Tomcat和Apache及其他腳本程序如PHP混合使用情況,如果一臺(tái)服務(wù)器只運(yùn)行jsp,那解決辦法很簡(jiǎn)單:只要將server.xml中8080端口改成80就可以,或?qū)pache中的httpd.conf的80改成8080也可以.可以參考: Using Apache Tomcat 4
Tomcat 3.23中很好做,相關(guān)文章介紹不少,Tomcat 4.0就不一樣了,本人經(jīng)過(guò)試驗(yàn),摸索出解決這兩個(gè)問(wèn)題的簡(jiǎn)單方式,這種方式可以和apache結(jié)合在一起,假設(shè)域名主機(jī)是sign.jdon.com 可以實(shí)現(xiàn)http://sign.jdon.com/訪問(wèn)所有JSP文件,這一結(jié)果是很多朋友希望達(dá)到的,我下面介紹一下.
分兩步: 配置server.xml 和 配置httpd.conf:
配置server.xml
首先介紹一下tomcat conf下的server.xml 我們的動(dòng)作主要是在這里面操作:
server.xml有兩部分組成:
1. service=Tomcat-Standalone 這是Tomcat標(biāo)準(zhǔn)啟動(dòng)服務(wù),使用端口8080訪問(wèn)
2. service=Tomcat-Apache 這是和apache整合部分,使用80008端口訪問(wèn) ,同時(shí)需要在httpd.conf中加載mod_webapp.so
在上面兩個(gè)service段中加入(在哪個(gè)service加入取決于你需要是以sign.jdon.com:8080 還是以sign.jdon.com/訪問(wèn)):
我們是想以后者訪問(wèn),就在service=Tomcat-Apache中加入:
<Host name="虛擬主機(jī)域名" debug="0" appBase="應(yīng)用基本目錄" unpackWARs="true"> <Context path="容器URL路徑" docBase="容器目錄" debug="0" reloadable="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="自己的log文件名." suffix=".txt" timestamp="true"/> </Context> </Host> |
1. reloadable="true"確保你每次上傳bean或servlet到WEB-INF/classes時(shí),系統(tǒng)自動(dòng)裝載最新的.
2. docBase="" 是你自己jsp目錄的實(shí)際位置 ,如果是winNT, 可以是c:/jserv
3. Logger 是用來(lái)將/jserv的啟動(dòng)狀態(tài)單獨(dú)輸出一個(gè)log文件中 這里是localhost_jserv_log,這個(gè)文件在Tomcat 的logs目錄下。可以用來(lái)監(jiān)視你的/jserv啟動(dòng)了沒(méi)有。
4.欠缺servlet或bean是放置在自己目錄下的WEB-INF/classes中,建議你將eamples目錄下的WEB-INF原封不動(dòng)的拷貝過(guò)來(lái),省事。你要修改這個(gè),就修改web.xml 這些 上面推薦的英文文章中有介紹.
我的server.xml是這樣:
<Service name="Tomcat-Apache">
<Connector className="org.apache.catalina.connector.warp.WarpConnector" port="8008" minProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="10" debug="0"/>
<!-- Replace "localhost" with what your Apache "ServerName" is set to --> <Engine className="org.apache.catalina.connector.warp.WarpEngine" name="Apache" debug="0" appBase="webapps">
<!-- Global logger unless overridden at lower levels --> <Logger className="org.apache.catalina.logger.FileLogger" prefix="apache_log." suffix=".txt" timestamp="true"/>
<!-- Because this Realm is here, an instance will be shared globally --> <Realm className="org.apache.catalina.realm.MemoryRealm" />
<!--下面是我加入的--> <Host name="sign.jdon.com" debug="0" appBase="/home/bqlr" unpackWARs="true"> <Context path="/" docBase="/home/bqlr/sign" debug="0" reloadable="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="jdon.com_log." suffix=".txt" timestamp="true"/> </Context> </Host>
</Engine>
</Service> |
配置httpd.conf
設(shè)定sign.jdon.com 對(duì)應(yīng)我的目錄/home/bqlr/sign/ sign.jdon.com是虛擬主機(jī)名,我的部署方法可以為特定虛擬主機(jī)域名提供JSP功能:
在自己的apache 的conf下的httpd.conf加入:
LoadModule webapp_module libexec/mod_webapp.so AddModule mod_webapp.c WebAppConnection conn warp sign.jdon.com:8008
<VirtualHost 61.119.57.108> ServerAdmin webmaster@jdon.com DocumentRoot /home/bqlr/sign ServerName sign.jdon.com # WebAppDeploy examples conn /examples/ WebAppDeploy sign conn / </VirtualHost>
|
1.本方法是適合apache 1.3版本的 適合glibc2.1 我在RedHat 7.2 7.1 7.0 6.2 6.1都測(cè)試通過(guò)
2.如果你的linux安裝的是glibc2.1 就要自己下載mod_webapp.src自己編譯,編譯前,要先安裝其目錄下的APR.
這里是我編譯好正在使用的 mod_webapp.so ,可以下載直接copy到apache的libexec目錄下
3.使用httpd configtest 測(cè)試httpd.conf可否啟動(dòng),如果出現(xiàn)無(wú)效LoadModule提示 是因?yàn)槟愕腶pache沒(méi)有使用module=so編譯,重新編譯apache 網(wǎng)絡(luò)上其他有介紹.
4.在/home/bqlr/sign下安裝WEB-INF/classes目錄 最簡(jiǎn)單的辦法是copy -R tomcat/wepapps/examples/WEB-INF 到/home/bqlr/sign下,以后自己編譯的bean或servlet放在這個(gè)目錄下 以后我有空 我公布我的jsp/bean的編程舉例.
最后 重新啟動(dòng)Tomcat 和 apache 你可以使用sign.jdon.com訪問(wèn)所有的Jsp 和servlet了.