日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

tomcat和apache的结合   看最重要的   文档有点乱

發(fā)布時(shí)間:2024/1/17 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat和apache的结合   看最重要的   文档有点乱 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.



?????????????????????????????? tomcat的安裝
官網(wǎng)下載:tomcat
解壓,mv /apache-tomcat-7.0.69 /usr/local/tomcat
cp -pv? /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat
chmod 755 !$
chkconfig --add tomcat
chkconfig tomcat on
/etc/init.d/tomcat start????? tomcat先停在啟動(dòng)???? service tomcat stop;service tomcat start
在vi/etc/init.d/tomcat
#chkconfig: 2345 63 37
. /etc/init.d/functions
JAVA_HOME=/usr/local/jdk版本號(hào) 需大寫(xiě)否則會(huì)出現(xiàn)啟動(dòng)錯(cuò)誤
CATALINA_HOME=/usr/local/tomcat
tomcat配置新的主機(jī)
修改connector port 8080 為80? 需停止后啟動(dòng)才能生效
在</host>下添加新的主機(jī)?
<Host name="www.111.com網(wǎng)站名" appBase="/data/tomcatweb"??? jsp存放的目錄 "
?unpackWARs="false" autoDeploy="true" xmlValidation="false"
?xmlNamespaceAware="false">
?<Context path="" docBase="" debug="0" reloadable="true" crossContext="true"/>
?</Host>


#注意將docBase的路徑,這邊是放空的形式,表示根目錄在appBase指定的目錄下。切記:不可以為.或者./這樣的形式。
#<Context path="" docBase="" debug="0" reloadable="true" crossContext="true"/>
#里面的docBase 如果是直接放空的話(huà),那網(wǎng)站根目錄就是appBase所指向的路徑即"/data/tomcatweb" 如果指定為./ROOT #那就是/data/tomcatweb/ROOT。這樣你就要將相應(yīng)的網(wǎng)站腳本放到相應(yīng)的目錄中去。


測(cè)試腳本:
<html><body><center>
Now time is: <%=new java.util.Date()%>
</center></body></html>



resin的安裝
./configure --prefix=/usr/local/resin?? --with-java-home=/usr/local/jdk1.8.0_31
?make? && make install
?/etc/init.d/resin start
vim /usr/local/resin/conf/resin.xml
改配置文件
jdk的安裝:
vi /etc/profile.d/java.sh
JAVA_HOME=/usr/local/jdk版本號(hào)
JAVA_BIN=/usr/local/jdk版本號(hào)/bin
JRE_HOME=/usr/local/jdk版本號(hào)/jre
PATH=$PATH:/usr/local/jdk版本號(hào)/jre/bin:/usr/local/jdk版本號(hào)/bin
CLASSPATH=/usr/local/jdk版本號(hào)/jre/lib:/usrl/local/jdk版本號(hào)/lib:/usr/local/jdk版本號(hào)/jre/lib/charsets.jar
export java_home jave_bin jre_home path classpath


. /etc/profile.d/java.sh??? source /etc/profile.d/java.sh
java -version


在 Ubuntu 12.04 LTS 上通過(guò) Tomcat 部署 Solr 4 http://www.linuxidc.com/Linux/2012-09/71158.htm
Ubuntu下部署Solr(4.4)到Tomcat(7.0.53) http://www.linuxidc.com/Linux/2014-05/101443.htm
Linux下Apache與多個(gè)Tomcat 集群負(fù)載均衡 http://www.linuxidc.com/Linux/2012-01/51731.htm Nginx Tomcat
集群負(fù)載均衡解決筆記 http://www.linuxidc.com/Linux/2013-07/86827.htm
實(shí)例詳解Tomcat組件安裝+Nginx反向代理Tomcat+Apache使用mod_jk和mod_proxy反向代理和負(fù)載均衡 http://www.linuxidc.com/Linux/2013-06/85290.htm
Apache+Tomcat 環(huán)境搭建(JK部署過(guò)程) http://www.linuxidc.com/Linux/2012-11/74474.htm
Linux Resin 安裝配置 http://www.linuxidc.com/Linux/2013-06/86092.htm
Nginx+Resin高性能Java平臺(tái)搭建 http://www.linuxidc.com/Linux/2012-12/77078.htm
搭建Web服務(wù)器(JDK+Nginx+Resin整合) http://www.linuxidc.com/Linux/2012-08/69197.htm
Resin服務(wù)器使用cookie注意事項(xiàng) http://www.linuxidc.com/Linux/2012-09/70595.htm
CentOS 5 安裝 Resin 4 http://www.linuxidc.com/Linux/2012-08/67277.htm
tomcat自動(dòng)檢查并重啟腳本 http://www.lishiming.net/thread-797-1-2.html
處理tomcat不必要的日志 http://www.lishiming.net/thread-406-1-1.html
配置tomcat的內(nèi)置監(jiān)控 http://www.lishiming.net/thread-402-1-1.html
配置tomcat啟動(dòng)時(shí)的優(yōu)化參數(shù) http://www.lishiming.net/thread-401-1-1.html
配置tomcat的進(jìn)程數(shù)控制 http://www.lishiming.net/thread-400-1-1.html
配置tomcat容器的access.log訪(fǎng)問(wèn)日志

http://www.lishiming.net/thread-399-1-1.html






tomcat +apache

#./configure --prefix=/usr/local/apache2 \
?--enable-modules=most \
?--enable-mods-shared=all \?? 可以去掉all?? 表示全用靜態(tài)?? 不去掉? 表示所有模塊為動(dòng)態(tài)。
?--enable-so \

個(gè)人感覺(jué)編譯參數(shù)不是很明確? 加apache的編譯參數(shù)更好一些? 采取靜態(tài)編譯所有模塊


用此編譯啟動(dòng)Apache httpd服務(wù)時(shí),報(bào)錯(cuò):
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
原因可能是沒(méi)有加載相應(yīng)的apache模塊,在httpd.conf中添加如下指令可以規(guī)避該問(wèn)題:
LoadModule authz_host_module modules/mod_authz_host.so
也可能是Apache編譯時(shí)選擇了只是支持加載共享模塊的模式(--enable-so),單獨(dú)編譯共享模塊,通過(guò)配置指令LoadModule進(jìn)行動(dòng)態(tài)加載。
一個(gè)個(gè)查找并加載這些模塊比較麻煩,可以編譯一個(gè)靜態(tài)鏈接各內(nèi)置模塊的httpd版本,然后替換掉原來(lái)的/usr/sbin/httpd程序,
這樣不會(huì)出現(xiàn)類(lèi)似Invalid command 'Order', Invalid command 'AddType'這樣的錯(cuò)誤。當(dāng)然多進(jìn)程時(shí),共享模塊可節(jié)約內(nèi)存。


linux是最常用的web服務(wù)器,本節(jié)我們將通過(guò)整合apache和tomcat構(gòu)建一個(gè)java/jsp運(yùn)行平臺(tái),詳細(xì)介紹web服務(wù)器的搭建過(guò)程。
?一、? apache與tomcat整合的必要性
?Apache是最流行的Web服務(wù)器,開(kāi)放源代碼,支持跨平臺(tái)的應(yīng)用(可以運(yùn)行在幾乎所有的Linux、Unix、Windows系統(tǒng)平臺(tái)上),尤其對(duì)Linux的支持相當(dāng)完美。
?apache的優(yōu)點(diǎn)有:
?功能強(qiáng)大,apache自帶了很多功能模塊,可根據(jù)需求編譯自己需要的模塊。
?配置簡(jiǎn)單,apache的配置文件非常簡(jiǎn)單,通過(guò)簡(jiǎn)單的配置可實(shí)現(xiàn)強(qiáng)大功能。
?速度飛快,apache處理靜態(tài)頁(yè)面文件效率非常高,可以應(yīng)對(duì)大并發(fā)和高負(fù)荷訪(fǎng)問(wèn)請(qǐng)求。
?性能穩(wěn)定,apache在高負(fù)荷請(qǐng)求下性能表現(xiàn)卓越,執(zhí)行效率非常高。
?但是apache也有自身的缺點(diǎn):
?只支持靜態(tài)網(wǎng)頁(yè),對(duì)于jsp、php等動(dòng)態(tài)網(wǎng)頁(yè)不支持
?Apache是以進(jìn)程為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線(xiàn)程消耗更多的系統(tǒng)開(kāi)支,因此,不太適合于多處理器環(huán)境。
?Tomcat是Sun和Apache合作做出來(lái)的JSPServer,有如下優(yōu)點(diǎn):
?支持Servlet和JSP,可以很好的處理動(dòng)態(tài)網(wǎng)頁(yè)。
?跨平臺(tái)性好:Tomcat是Java程序,所以只要有JDK就可以使用,不需要考慮操作系統(tǒng)平臺(tái)。
?但是,tomcat也有自身缺點(diǎn):
?處理靜態(tài)頁(yè)面效率不高:Tomcat本身可以做為Web Server,但是tomcat在處理靜態(tài)頁(yè)面時(shí)沒(méi)有Apache迅速。
?可配置性不強(qiáng):tomcat不像Apache一樣配置簡(jiǎn)單,穩(wěn)定、強(qiáng)壯。
?綜上所述,通過(guò)相互的整合剛好彌補(bǔ)了各自的缺點(diǎn),通過(guò)整合可以實(shí)現(xiàn):
?客戶(hù)端請(qǐng)求靜態(tài)頁(yè)面時(shí),由Apache服務(wù)器響應(yīng)請(qǐng)求。
?客戶(hù)端請(qǐng)求動(dòng)態(tài)頁(yè)面時(shí),則是Tomcat服務(wù)器響應(yīng)請(qǐng)求。
?通過(guò)apache信息過(guò)濾,實(shí)現(xiàn)網(wǎng)站動(dòng)、靜頁(yè)面分離,保證了應(yīng)用的可擴(kuò)展性和安全性。
?既然要讓Apache和Tomcat協(xié)調(diào)工作,就必需有一個(gè)連接器把它們聯(lián)系起來(lái),這就是下面要提到的Connector,下個(gè)小節(jié)具體講述Connector的選擇和使用。


?二、 準(zhǔn)備文件
?JDK版本 jdk-8u31-linux-i586.tar.gz。
?到Apache官方網(wǎng)站下載所需要的文件:
?httpd-2.2.0.tar.gz
?apache-tomcat-5.5.12.tar.gz
?jakarta-tomcat-connectors-1.2.15-src.tar.gz
?其中httpd和jakarta-tomcat-connectors為源碼包,apache-tomcat為二進(jìn)制包。


?三、 Apache和Tomcat連接器
?Apache是模塊化的web服務(wù)器,這意味著核心中只包含實(shí)現(xiàn)最基本功能的模塊。擴(kuò)展功能可以作為模塊動(dòng)態(tài)加載來(lái)實(shí)現(xiàn)。為了讓apache和tomcat協(xié)調(diào)工作,開(kāi)源愛(ài)好者們開(kāi)發(fā)出了很多可以利用的模塊,在Apache2.2版本之前,一般有兩個(gè)模塊可供選擇:mod_jk2和mod_jk,mod_jk2模塊是比較早的一種連接器,在動(dòng)、靜頁(yè)面過(guò)濾上可以使用正則表達(dá)式,因此使用配置靈活,但是mod_jk2模塊現(xiàn)在已經(jīng)沒(méi)有開(kāi)發(fā)人員支持了,版本更新也就此停止。繼承jk2模塊的是mod_jk模塊,mod_jk模塊支持Apache 1.x和2.X系列版本,現(xiàn)在一般都使用mod_jk做Apache和Tomcat的連接器。
?在Apache2.2版本以后,又出現(xiàn)了兩種連接器可供選擇,那就是http-proxy和proxy-ajp模塊,apache的proxy(代理)模塊可以實(shí)現(xiàn)雙向代理,功能非常強(qiáng)大,從連接器的實(shí)現(xiàn)原理看,用http-proxy模塊實(shí)現(xiàn)也是很自然的事情,只需打開(kāi)tomcat的http功能,然后用apache的proxy代理功能將動(dòng)態(tài)請(qǐng)求交給tomcat處理,而靜態(tài)數(shù)據(jù)交給apache自身就可以了。proxy-ajp模塊是專(zhuān)門(mén)為tomcat整合所開(kāi)發(fā)的,通過(guò)ajp協(xié)議專(zhuān)門(mén)代理對(duì)tomcat的請(qǐng)求。根據(jù)官方的測(cè)試,proxy-ajp的執(zhí)行效率要比http-proxy高,因此在Apache2.2以后的版本,用proxy-ajp模塊作為apache和tomcat的連接器是個(gè)不錯(cuò)的選擇。
?需要說(shuō)明的是,這些連接功能的實(shí)現(xiàn),都是通過(guò)在apache中加載相應(yīng)的功能模塊實(shí)現(xiàn),比如上面提到的mod_jk、mod_jk2、proxy-ajp模塊,都要事先通過(guò)源碼編譯出對(duì)應(yīng)的模塊,然后通過(guò)apache配置文件動(dòng)態(tài)加載,實(shí)現(xiàn)連接器功能。這點(diǎn)也是apache的優(yōu)勢(shì)所在。
?在下面的講述中,我們將重點(diǎn)講述mod_jk作為連接器的安裝配置與實(shí)現(xiàn)。
?三、 Apache與tomcat以及JK模塊的安裝
?下面以cent os 6.7操作系統(tǒng)為例,詳細(xì)介紹apache+tomcat+jk的安裝過(guò)程。
?1.安裝apache
?Apache 目前有幾種主要版本,包括1.3.x、2.0.x以及2.2.x等等,在 1.3.x以前的版本中通常取名以apache開(kāi)頭,2.x以后版本則用httpd開(kāi)頭來(lái)命名。
?apache的官方地址為http://httpd.apache.org/,這里以源碼的方式進(jìn)行安裝,我們下載的版本是Apache2.2.0,下載后的壓縮包文件為httpd-2.2.0.tar.gz。
?下面是具體的編譯安裝過(guò)程:
[root@webserver ~]#tar -zxvf? httpd-2.2.0.tar.gz
?[root@webserver ~]#cd httpd-2.2.0
?[root@webserver ~]#./configure --prefix=/usr/local/apache2 \
?--enable-modules=most \
?--enable-mods-shared=all \
?--enable-so \
?[root@webserver ~]#make
?[root@webserver ~]#make install


?Apache安裝步驟以及選項(xiàng)的含義已經(jīng)在第五章有詳細(xì)的介紹,這里不在詳述,這里我們?cè)O(shè)定apache的安裝路徑為/usr/local/apache2,“--enable-modules=most”表示將大部分模塊靜態(tài)編譯到httpd二進(jìn)制文件中,“--enable-mods-shared=all”表示動(dòng)態(tài)加載所有模塊,如果去掉-shared話(huà),是靜態(tài)加載所有模塊。
?2. 安裝GDK
?下載jdk? 官網(wǎng)地址:http://www.oracle.com/technetwor ... nloads-2133151.html 我們?cè)谶@里下載jdk-8u31-linux-i586.tar.gz
?百度網(wǎng)盤(pán)下載地址:? http://pan.baidu.com/s/1bnfb4ez
?下載后解壓:
tar zxvf? jdk-8u31-linux-i586.tar.gz
?mv jdk1.8.0_31?? /usr/local/jdk1.8.0_31
?vim /etc/profile.d/java.sh?? //加入如下配置
?JAVA_HOME=/usr/local/jdk1.8.0_31
?JAVA_BIN=/usr/local/jdk1.8.0_31/bin
?JRE_HOME=/usr/local/jdk1.8.0_31/jre
?PATH=$PATH:/usr/local/jdk1.8.0_31/bin:/usr/local/jdk1.8.0_31/jre/bin
?CLASSPATH=/usr/local/jdk1.8.0_31/jre/lib:/usr/local/jdk1.8.0_31/lib:/usr/local/jdk1.8.0_31/jre/lib/charsets.jar


?. /etc/profile.d/java.sh


?如果以上配置成功,則下面的命令可以看到j(luò)ava的版本:
?java? -version?



?3. 安裝tomcat
?Tomcat 官網(wǎng)tomcat.apache.org
cd /usr/local/src/
?wget?? http://apache.fayea.com/tomcat/t ... omcat-7.0.57.tar.gz
?tar zxvf apache-tomcat-7.0.57.tar.gz
?mv apache-tomcat-7.0.57? /usr/local/tomcat
?cp -pv /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat
?vim /etc/init.d/tomcat? //從第二行加入
?# chkconfig: 2345 63 37
?# description: tomcat server init script
?# Source Function Library
?. /etc/init.d/functions
?JAVA_HOME=/usr/local/jdk1.8.0_31
?CATALINA_HOME=/usr/local/tomcat
?chmod 755 /etc/init.d/tomcat
?chkconfig --add tomcat
?chkconfig tomcat on
?service tomcat start
?ps aux |grep tomcat
?瀏覽器輸入? http://ip:8080? 可以看到tomcat的歡迎頁(yè)




?4.安裝JK模塊
?為了更靈活的使用mod_jk連接器,這里我們采用源碼方式編譯出所需要的JK模塊,JK的源碼可以從這個(gè)地址去下載,http://archive.apache.org/dist/jakarta/tomcat-connectors/jk/,但是不保證此連接永久有效,這里采用的JK版本為jk-1.2.15。
?下載后的JK源碼壓縮包文件為jakarta-tomcat-connectors-current-src.tar.gz,這里也將此壓縮包放到/usr/local下,具體安裝步驟如下:
[root@webserver ~]# cd /usr/local/
?[root@webserver local]# tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz
?[root@webserver local]# cd jakarta-tomcat-connectors-1.2.15-src/jk/native
?[root@webserver native]#chmod 755 buildconf.sh
?[root@webserver native]# ./buildconf.sh?? 生成文件如出錯(cuò)?? 表示缺少libtool庫(kù)?? 需安裝
?[root@webserver native]#./configure \ --with-apxs=/usr/local/apache/bin/apxs? #這里指定的是apache安裝目錄中apxs的位置? 編譯時(shí)如出現(xiàn)/bin/rm: cannot remove `libtoolT’: No such file or directory? 需打開(kāi) configure,把 $RM “$cfgfile” 那行注釋掉,重新再運(yùn)行 ./configure 就可以了
?[root@webserver native]# make
?[root@webserver native]# make install
?[root@webserver native]# cd apache-2.0
?[root@webserver native]#ll mod_jk.so
?-rwxr-xr-x 1 root root 477305 Oct? 9 08:49 mod_jk.so


?可以看到有mod_jk.so文件生成,這就是我們需要的JK連接器,默認(rèn)情況下JK模塊會(huì)自動(dòng)安裝到/usr/local/apache2/modules目錄下,如果沒(méi)有自動(dòng)安裝到此目錄,手動(dòng)拷貝此文件到modules目錄即可。




?四、 apache與tomcat整合配置
?本節(jié)詳細(xì)講述apache和tomcat整合的詳細(xì)配置過(guò)程,這里假定web服務(wù)器的IP地址為192.168.60.198,測(cè)試的jsp程序放置在/webdata/www目錄下,如果沒(méi)有此目錄,需要首先創(chuàng)建這個(gè)目錄,因?yàn)樵谙旅媾渲眠^(guò)程中,會(huì)陸續(xù)用到/webdata/www這個(gè)路徑。
?1.創(chuàng)建Tomcat workers
?Tomcat worker是一個(gè)服務(wù)于web server、等待執(zhí)行servlet/JSP的Tomcat實(shí)例,創(chuàng)建tomcat workers需要增加3個(gè)配置文件,分別是Tomcat workers配置文件workers.properties,URL映射文件uriworkermap.properties和JK模塊日志輸出文件mod_jk.log,mod_jk.log文件會(huì)在apache啟動(dòng)時(shí)自動(dòng)創(chuàng)建,這里只需創(chuàng)建前兩個(gè)文件即可。
?(1)tomcat workers配置文件
?定義Tomcat workers的方法是在apache的conf目錄下編寫(xiě)一個(gè)名為“workers.properties”的屬性文件,使其作為apache的插件來(lái)發(fā)揮作用,下面講述workers.properties配置說(shuō)明。
?worker.list用來(lái)定義Workers列表,當(dāng)apache啟動(dòng)時(shí),workers.properties作為插件將初始化出現(xiàn)在worker.list列表中的workers。
?定義worker類(lèi)型的格式:
?worker.worker名字.type=
?例如:
?定義一個(gè)名為“tomcat12”的worker,其使用ajp12協(xié)議與tomcat 進(jìn)程通訊:
?  worker.tomcat12.type=ajp12
?定義一個(gè)名為“tomcat13”的worker,其使用ajp13協(xié)議與tomcat 進(jìn)程通訊:
?  worker.remote.type=ajp13
?  定義一個(gè)名為“tomcatjni”的worker,其使用JNI的方式與tomcat 進(jìn)程通訊
?  worker.tomcatjni.type=jni
?  定義一個(gè)名為“tomcatloadbalancer”的worker,作為對(duì)多個(gè)tomcat進(jìn)程的負(fù)載平衡使用:
?  worker.tomcatloadbalancer.type=lb
?設(shè)置worker屬性的格式為:
?worker.worker名字.屬性=
?這里只說(shuō)明ajp13協(xié)議支持的幾個(gè)常用屬性:
?Host:監(jiān)聽(tīng)ajp13請(qǐng)求的的tomcat worker主機(jī)地址
?Port:tomcat worker主機(jī)監(jiān)聽(tīng)的端口。默認(rèn)情況下tomcat在ajp13協(xié)議中使用的端口為8009。
?lbfactor:當(dāng)tomcat用作負(fù)載均衡時(shí),此屬性被使用,表示此tomcat worker節(jié)點(diǎn)的負(fù)載均衡權(quán)值。
?下面是我們的workers.properties文件內(nèi)容:



[root@localhost ~]#vi /usr/local/apache2/conf/workers.properties
?worker.list=tomcat1
?worker.tomcat1.port=8009
?worker.tomcat1.host=localhost
?worker.tomcat1.type=ajp13
?worker.tomcat1.lbfactor=1



?(2)URL過(guò)濾規(guī)則文件uriworkermap.properties
?也就是URI 映射文件,用來(lái)指定哪些 URL 由 Tomcat 處理,也可以直接在 httpd.conf 中配置這些 URI,但是獨(dú)立這些配置的好處是 JK 模塊會(huì)定期更新該文件的內(nèi)容,使得我們修改配置的時(shí)候無(wú)需重新啟動(dòng) Apache 服務(wù)器。
?下面是我們的一個(gè)映射文件的內(nèi)容:



[root@localhost ~]#vi? /usr/local/apache2/conf/uriworkermap.properties
?/*=tomcat1
?!/*.jpg=tomcat1
?!/*.gif=tomcat1
?!/*.png=tomcat1
?!/*.bmp=tomcat1
?!/*.html=tomcat1
?!/*.htm=tomcat1
?!/*.swf=tomcat1
?!/*.css= tomcat1
?!/*.js= tomcat1



?在上面的配置文件中,“/*=tomcat1”表示將所有的請(qǐng)求都交給tomcat1來(lái)處理,而這個(gè)“tomcat1”就是我們?cè)趙orkers.properties文件中由worker.list指定的。這里的“/”是個(gè)相對(duì)路徑,表示存放網(wǎng)頁(yè)的根目錄,這里是上面假定的/webdata/www目錄。
?“!/*.jpg=tomcat1”則表示在根目錄下,以“*.jpg”結(jié)尾的文件都不由JK進(jìn)行處理,其它設(shè)置含義類(lèi)似,也就是讓apache處理圖片、js文件、css文件以及靜態(tài)html網(wǎng)頁(yè)文件。
?特別注意,這里有個(gè)先后順序的問(wèn)題,JK模塊在處理網(wǎng)頁(yè)根目錄文件的時(shí)候,會(huì)首先過(guò)濾掉不讓自己處理的設(shè)定,剩下的設(shè)定自己全部處理。
?例如上面的設(shè)定中,JK模塊會(huì)首先在/webdata/www目錄過(guò)濾掉所有圖片、flash、js文件、css文件和靜態(tài)網(wǎng)頁(yè),將剩下的文件類(lèi)型自己全部處理。
?2.Apache的配置
?(1)apache的目錄結(jié)構(gòu)
?上面我們通過(guò)源碼方式把a(bǔ)pache安裝到了/usr/local/apache2下,詳細(xì)的目錄結(jié)構(gòu)如下所示:


?目錄名稱(chēng) 目錄作用
?bin Apache二進(jìn)制程序及服務(wù)程序目錄
?lib 庫(kù)文件目錄
?conf 主配置文件目錄
?logs 日志文件目錄
?htdocs 默認(rèn)web應(yīng)用根目錄
?cgi-bin 默認(rèn)的cgi目錄
?modules 動(dòng)態(tài)加載模塊目錄,上面生成的JK模塊,就放在了這個(gè)目錄下。
?manual Apache使用文檔目錄
?man Man幫助文件目錄
?error 默認(rèn)的錯(cuò)誤應(yīng)答文件目錄
?include 包含頭文件的目錄
?icons Apache圖標(biāo)文件目錄
?(2)apache的配置文件
?/usr/local/apache2/conf/httpd.conf(apache主要配置文件)
?httpd.conf是包含若干指令的純文本文件,配置文件的每一行包含一個(gè)指令,指令是不區(qū)分大小寫(xiě)的,但是指令的參數(shù)卻對(duì)大小寫(xiě)比較敏感,“#”開(kāi)頭的行被視為注解并被忽略,但是,注解不能出現(xiàn)在指令的后邊。配置文件中的指令對(duì)整個(gè)web服務(wù)器都是有效的。
?/usr/local/apache2/bin/apachectl (apache啟動(dòng)/關(guān)閉程序)
?可以通過(guò)“/usr/local/apache2/bin/apachectl start/stop/restart”的方式啟動(dòng)/關(guān)閉/重啟apache進(jìn)程。apachectl其實(shí)是個(gè)shell腳本,它可以自動(dòng)檢測(cè)httpd.conf的指令設(shè)定,讓apache在最優(yōu)的方式下啟動(dòng)。
?/usr/local/apache2/bin/httpd
?httpd是一個(gè)啟動(dòng)apache的二進(jìn)制文件。
?/usr/local/apache2/modules
?Apache是模塊化的web服務(wù)器,所有編譯的模塊默認(rèn)都會(huì)放到這個(gè)目錄下,然后可以在httpd.conf文件中指定模塊位置,動(dòng)態(tài)加載!
?/usr/local/apache2/logs/access_log
?/usr/local/apache2/logs/error_log
?這兩個(gè)分別為apache的訪(fǎng)問(wèn)日志文件和錯(cuò)誤日志文件,通過(guò)監(jiān)測(cè)這兩個(gè)文件,我們可以了解apache的運(yùn)行狀態(tài)。
?(3)httpd.conf基本設(shè)定
?httpd.conf配置文件有3個(gè)部分組成,分別是:全局變量、配置主服務(wù)器、配置虛擬主機(jī)。
?下面我們?cè)斀庵v述下/usr/local/apache2/conf/httpd.conf文件各個(gè)指令的含義。
?[root@webserver ~]#vi /usr/local/apache2/conf/httpd.conf
?全局變量配置部分
?ServerRoot "/usr/local/apache2"
?ServerRoot用于指定守護(hù)進(jìn)程httpd的運(yùn)行目錄, httpd在啟動(dòng)之后自動(dòng)將進(jìn)程的當(dāng)前目錄切換到這個(gè)指定的目錄下,可以使用相對(duì)路徑和絕對(duì)路徑。
?PidFile logs/httpd.pid
?PidFile指定的文件將記錄httpd守護(hù)進(jìn)程的進(jìn)程號(hào),由于httpd能自動(dòng)復(fù)制其自身,因此apache啟動(dòng)后,系統(tǒng)中就有多個(gè)httpd進(jìn)程,但只有一個(gè)進(jìn)程為最初啟動(dòng)的進(jìn)程,它為其他進(jìn)程的父進(jìn)程,對(duì)父進(jìn)程發(fā)送信號(hào)將影響所有的httpd進(jìn)程。
?Timeout 300
?Timeout用來(lái)定義客戶(hù)端和服務(wù)器端程序連接的超時(shí)間隔,單位為秒,超過(guò)這個(gè)時(shí)間間隔,服務(wù)器將斷開(kāi)與客戶(hù)端的連接。
?KeepAlive On
?KeepAlive用來(lái)定義是否允許用戶(hù)建立永久連接,On為允許建立永久連接,Off表示拒絕用戶(hù)建立永久連接,例如,要打開(kāi)一個(gè)含有很多圖片的頁(yè)面,完全可以建立一個(gè)tcp連接將所有信息從服務(wù)器傳到客戶(hù)端即可,而沒(méi)有必要對(duì)每個(gè)圖片都建立一個(gè)tcp連接。此選項(xiàng)建議設(shè)置為On。
?MaxKeepAliveRequests 100
?? MaxKeepAliveRequests用來(lái)定義一個(gè)tcp連接可以進(jìn)行HTTP請(qǐng)求的最大次數(shù),設(shè)置為0代表不限制請(qǐng)求次數(shù),這個(gè)選項(xiàng)與上面的KeepAlive相互關(guān)聯(lián),當(dāng)KeepAlive設(shè)定為On,這個(gè)設(shè)置開(kāi)始起作用。
?KeepAliveTimeout 15
?? KeepAliveTimeout用來(lái)限定一次連接中最后一次請(qǐng)求完成后延時(shí)等待的時(shí)間,如果超過(guò)了這個(gè)等待時(shí)間,服務(wù)器就斷開(kāi)連接。
?<IfModule prefork.c>
?ServerLimit? 300
?StartServers???????? 5
?MinSpareServers????? 5
?MaxSpareServers???? 20
?MaxClients???????? 300
?MaxRequestsPerChild? 2000
?</IfModule>


?<IfModule worker.c>
?StartServers???????? 2
?MaxClients???????? 150
?MinSpareThreads???? 25
?MaxSpareThreads???? 75
?ThreadsPerChild???? 25
?MaxRequestsPerChild? 0
?</IfModule>
?上面的兩段指令其實(shí)是對(duì)web服務(wù)器的使用資源進(jìn)行的設(shè)置,apache可以運(yùn)行在prefork和worker兩種模式下,可以通過(guò)/usr/local/apache2/bin/httpd –l來(lái)確定當(dāng)前apache運(yùn)行在哪種模式,在編譯apache時(shí),如果指定“--with-mpm=MPM”參數(shù),那么apache默認(rèn)運(yùn)行在prefork模式下,如果指定的是“--with-mpm=worker”參數(shù),那么默認(rèn)運(yùn)行在worker模式下。如果沒(méi)有做任何模式指定,那么apache默認(rèn)也運(yùn)行在prefork模式下。
?prefork采用預(yù)派生子進(jìn)程方式,用單獨(dú)的子進(jìn)程來(lái)處理不同的請(qǐng)求,進(jìn)程之間彼此獨(dú)立。
?StartServers表示在啟動(dòng)apache時(shí),就自動(dòng)啟動(dòng)的進(jìn)程數(shù)目。
?MinSpareServers設(shè)置了最小的空閑進(jìn)程數(shù),這樣可以不必在請(qǐng)求到來(lái)時(shí)再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開(kāi)銷(xiāo)以增加性能。
?MaxSpareServers設(shè)置了最大的空閑進(jìn)程數(shù),如果空閑進(jìn)程數(shù)大于這個(gè)值,apache會(huì)自動(dòng)關(guān)閉這些多余進(jìn)程,如果這個(gè)值設(shè)置的比小MinSpareServers,則Apache會(huì)自動(dòng)把其調(diào)整為 MinSpareServers+1。
?MaxRequestsPerChild設(shè)置了每個(gè)子進(jìn)程可處理的最大請(qǐng)求數(shù),也就是一個(gè)進(jìn)程能夠提供的最大傳輸次數(shù),當(dāng)一個(gè)進(jìn)程的請(qǐng)求超過(guò)此數(shù)目時(shí),程序連接自動(dòng)關(guān)閉。0意味著無(wú)限,即子進(jìn)程永不銷(xiāo)毀。這里我們?cè)O(shè)置為2000,已經(jīng)基本能滿(mǎn)足中小型網(wǎng)站的需要。
?MaxClients設(shè)定Apache可以同時(shí)處理的請(qǐng)求數(shù)目。是對(duì)Apache性能影響最大的參數(shù),默認(rèn)值150對(duì)于中小網(wǎng)站基本夠了,但是對(duì)于大型網(wǎng)站,是遠(yuǎn)遠(yuǎn)不夠的,如果請(qǐng)求總數(shù)已達(dá)到這個(gè)值,那么后面的請(qǐng)求就必須排隊(duì),這就是系統(tǒng)資源充足而網(wǎng)站訪(fǎng)問(wèn)卻很慢的主要原因。理論上這個(gè)值設(shè)置的越大,可以處理的請(qǐng)求的越多,但是apache默認(rèn)限制不能超過(guò)256,如果要設(shè)置的值大于256,可以直接使用ServerLimit指令加大MaxClients。這里我們?cè)O(shè)置的值是300。
?相對(duì)于prefork,worker是全新的支持多線(xiàn)程和多進(jìn)程的混合模型,由于是使用線(xiàn)程來(lái)處理請(qǐng)求,所以可以處理更多的請(qǐng)求,對(duì)系統(tǒng)資源的使用開(kāi)銷(xiāo)也比較小。
?MinSpareThreads設(shè)置了最少的空閑線(xiàn)程數(shù)。
?MaxSpareThreads設(shè)置了最多的空閑線(xiàn)程數(shù)。
?MaxClients設(shè)定同時(shí)連入客戶(hù)端的最大數(shù)。如果現(xiàn)有子進(jìn)程中的線(xiàn)程總數(shù)不能滿(mǎn)足請(qǐng)求的負(fù)載,控制進(jìn)程將派生出新的子進(jìn)程。默認(rèn)最大子進(jìn)程數(shù)是16,加大時(shí)需要通過(guò)ServerLimit來(lái)進(jìn)行聲明,ServerLimit最大值為20000,注意,如果指定了ServerLimit,那么此值乘以ThreadsPerChild必須大于等于MaxClients,而MaxClients必須是ThreadsPerChild的整數(shù)倍,否則 Apache將會(huì)自動(dòng)調(diào)節(jié)到一個(gè)相應(yīng)值。
?ThreadsPerChild設(shè)定每個(gè)子進(jìn)程的工作線(xiàn)程數(shù),此選項(xiàng)在worker模式下與性能密切相關(guān),默認(rèn)最大值為64,如果系統(tǒng)負(fù)載很大,不能滿(mǎn)足需求的話(huà),需要使用 ThreadLimit指令,此指令默認(rèn)最大值為20000,Worker模式下所能同時(shí)處理請(qǐng)求總數(shù)由子進(jìn)程數(shù)乘以ThreadsPerChild值來(lái)確定,保證大于等于MaxClients的設(shè)定值。
?Listen 80
?此指令是設(shè)置apache的監(jiān)聽(tīng)端口,默認(rèn)的http服務(wù)都是運(yùn)行在80端口下,當(dāng)然也可以修改為其它端口。
LoadModule jk_module modules/mod_jk.so
?加載mod_jk模塊,上面我們已經(jīng)生成了JK模塊,并且放到了modules目錄下,這里這需指定加載即可。
?……以下省略……
?配置主服務(wù)器
?User nobody
?Group nobody
?這里是設(shè)定執(zhí)行httpd的用戶(hù)和組,默認(rèn)是nobody用戶(hù)啟動(dòng)apache,這里將組也設(shè)置為nobody。
?ServerAdmin you@example.com
?這里指定的是網(wǎng)站管理員的郵件地址,如果apache出現(xiàn)問(wèn)題,會(huì)發(fā)信到這個(gè)郵箱。
?ServerName www.example.com:80
?這里是指定系統(tǒng)的主機(jī)名,如果沒(méi)有指定,會(huì)以系統(tǒng)的hostname為依據(jù)。特別注意,這里設(shè)定的主機(jī)名一定要能找到對(duì)應(yīng)的IP地址(主機(jī)名和IP的對(duì)應(yīng)關(guān)系可以在/etc/hosts設(shè)置)。
?UseCanonicalName Off
?設(shè)定是否使用標(biāo)準(zhǔn)的主機(jī)名,如果設(shè)置為On,則以ServerName指定的主機(jī)名為主。如果web主機(jī)有多個(gè)主機(jī)名,請(qǐng)?jiān)O(shè)置為Off。
?DocumentRoot "/usr/local/apache2/htdocs"
?此指令非常重要,是用來(lái)放置網(wǎng)頁(yè)的路徑,apache會(huì)默認(rèn)到這個(gè)路徑下尋找網(wǎng)頁(yè),并顯示在瀏覽器上。
?<Directory />
?#這里的“/”是相對(duì)路徑,表示DocumentRoot指定的目錄。
?Options FollowSymLinks
?AllowOverride None
?</Directory>
?<Directory "/usr/local/apache2/htdocs">
?Options Indexes FollowSymLinks
?Order allow,deny
?Allow from all
?</Directory>
?上面這段信息是對(duì)DocumentRoot指定目錄的權(quán)限設(shè)定,有3個(gè)必須知道的參數(shù):
?Options 表示在這個(gè)目錄內(nèi)能夠執(zhí)行的操作,主要有5個(gè)可設(shè)定的值:
?Indexes:此參數(shù)表示,如果在DocumentRoot指定目錄下找不到以index打頭的文件時(shí),就將此目錄下所有文件列出來(lái),很不安全,不建議使用這個(gè)參數(shù)。
?FollowSymLinks:表示在DocumentRoot指定目錄下允許符號(hào)鏈接到其它目錄。
?ExecCGI:表示允許在DocumentRoot指定的目錄下執(zhí)行cgi操作。
?Includes:準(zhǔn)許SSI(Server-side Includes)操作。
?MultiViews:不常用,根據(jù)語(yǔ)言的不同顯示不通的信息提示。
?AllowOverride 通過(guò)設(shè)定的值決定是否讀取目錄中的.htaccess文件,來(lái)改變?cè)瓉?lái)所設(shè)置的權(quán)限,其實(shí)完全可以在httpd.conf中設(shè)置所有的權(quán)限,但是這樣對(duì)apache使用者的其它用戶(hù)如果要修改一些權(quán)限的話(huà),就比較麻煩了,因此apache預(yù)設(shè)可以讓用戶(hù)以自己目錄下的. htaccess文件復(fù)寫(xiě)權(quán)限,常用的選項(xiàng)有兩個(gè):
?All:表示可以讀取.htaccess文件的內(nèi)容,修改原來(lái)的訪(fǎng)問(wèn)權(quán)限。
?None:表示不讀取.htaccess文件,權(quán)限統(tǒng)一控制。
?Order 用來(lái)控制目錄和文件的訪(fǎng)問(wèn)授權(quán),常用的組合有2個(gè):
?Deny,Allow:表示先檢查禁止的設(shè)定,沒(méi)有禁止的全部允許。
?Allow,Deny:表示先檢查允許的設(shè)定,沒(méi)有允許的全部禁止。
?DirectoryIndex index.html index.htm index.jsp index.html.var
?這里是對(duì)apache打開(kāi)網(wǎng)站默認(rèn)首頁(yè)的設(shè)定,apache在打開(kāi)網(wǎng)站首頁(yè)時(shí)一般會(huì)查找index.*之類(lèi)的網(wǎng)頁(yè)文件,DirectoryIndex指令就是設(shè)置apache依次尋找能打開(kāi)網(wǎng)站首頁(yè)的順序,例如我們要打開(kāi)www.ixdba.net網(wǎng)站,apache會(huì)首先在DocumentRoot指定的目錄下尋找index.html,也就是www.ixdba.net/index.html,如果沒(méi)有找到index.html網(wǎng)頁(yè),那么apache會(huì)接著查找index.htm,如果找到就執(zhí)行www.ixdba.net/index.htm打開(kāi)首頁(yè),以此類(lèi)推。
?UserDir public_html
?UserDir用于設(shè)定用戶(hù)個(gè)人主頁(yè)存放的目錄,默認(rèn)為“public_html”目錄,例如有個(gè)用戶(hù)為ixdba,如果他的根目錄為/home/ixdba,那么他的默認(rèn)主頁(yè)存放路徑為/home/ixdba/public_html。
?AccessFileName .htaccess
?定義每個(gè)用戶(hù)目錄下的訪(fǎng)問(wèn)控制文件的文件名,默認(rèn)為.htaccess,
?TypesConfig conf/mime.types
?TypesConfig用來(lái)定義在哪里查詢(xún)mime.types文件
?HostnameLookups Off
?用來(lái)指定apache在日志中記錄訪(fǎng)問(wèn)端地址是ip還是域名,如果為Off,則記錄IP地址,如果是On,記錄域名信息,建議設(shè)置為Off。
?ErrorLog logs/error_log
?指定錯(cuò)誤日志文件的位置
?CustomLog logs/access_log common
?指定apache訪(fǎng)問(wèn)日志文件的位置和記錄日志的模式。
?ServerTokens Full
?這個(gè)指令定義包含在HTTP回應(yīng)頭中的信息類(lèi)型,默認(rèn)為“Full”,表示在回應(yīng)頭中將包含操作系統(tǒng)類(lèi)型和編譯信息,可以設(shè)為Full|OS|Minor|Minimal|Major|Prod列各值中的一個(gè),Full包含的信息最多,而Prod最少。
?ServerSignature On
?此指令有3個(gè)選項(xiàng),On、Off和Email,On選項(xiàng)表示在apache的出錯(cuò)頁(yè)面會(huì)顯示apache版本以及加載的模塊信息,Email選項(xiàng)與On相同,但是還會(huì)多出一個(gè)包含管理員郵件地址的mailto連接。Off表示不顯示任何上面信息。
?Alias /icons/ "/usr/local/apache2/icons/"
?< Directory "/usr/local/apache2/icons">
???? Options Indexes MultiViews
???? AllowOverride None
???? Order allow,deny
???? Allow from all
?< /Directory>
?上面這段信息是apache中對(duì)別名的設(shè)定,當(dāng)訪(fǎng)問(wèn)http://ip或域名/icons時(shí),由于Alias的原因,apache不會(huì)去DocumentRoot指定的目錄查找文件,而是直接訪(fǎng)問(wèn)/usr/local/apache2/icons 目錄下對(duì)應(yīng)的文件信息。而<Directory>標(biāo)簽就是對(duì)這個(gè)目錄權(quán)限的設(shè)定。
?ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
?< Directory "/usr/local/apache2/cgi-bin">
???? AllowOverride None
???? Options None
???? Order allow,deny
???? Allow from all
?< /Directory>



?這段信息和上面的Alias設(shè)定類(lèi)似,只不過(guò)這個(gè)是設(shè)置cgi腳本的執(zhí)行權(quán)限而已,apache默認(rèn)在/usr/local/apache2/cgi-bin目錄下具有cgi腳本執(zhí)行權(quán)限。
JkWorkersFile /usr/local/apache2/conf/workers.properties
?JkMountFile?? /usr/local/apache2/conf/uriworkermap.properties
?JkLogFile /usr/local/apache2/logs/mod_jk.log
?JkLogLevel info
?JkLogStampformat "[%a %b %d %H:%M:%S %Y]"



?上面這5行是對(duì)JK連接器屬性的設(shè)定,第一、二行指定Tomcat workers配置文件以及對(duì)網(wǎng)頁(yè)的過(guò)濾規(guī)則,第三行指定JK模塊的日志輸出文件,第四行指定日志輸出級(jí)別,最后一行指定日志輸出格式。
?虛擬主機(jī)的設(shè)定
?NameVirtualHost *:80
?表示啟用虛擬主機(jī),如果開(kāi)啟虛擬主機(jī),上面DocumentRoot指令指定的配置將失效,以虛擬主機(jī)中指定的DocumentRoot為主。
?<VirtualHost *:80>
???? ServerAdmin webmaster@xxxx.net
???? DocumentRoot /webdata/www
???? ServerName 192.168.6.13
???? ErrorLog logs/error_log
???? CustomLog logs/access_log common
?JkMountFile? conf/uriworkermap.properties
?< /VirtualHost>
?


上面這段是添加一個(gè)虛擬主機(jī),其實(shí)虛擬主機(jī)是通過(guò)不同的ServerName 來(lái)區(qū)分的,這里為了演示方便,使用IP代替域名。我們經(jīng)常看到在一個(gè)web服務(wù)器上有很多個(gè)網(wǎng)站,并且每個(gè)站點(diǎn)都不相同,這就是通過(guò)虛擬主機(jī)技術(shù)實(shí)現(xiàn)的。
?每個(gè)虛擬主機(jī)用<VirtualHost>標(biāo)簽設(shè)定,各個(gè)字段含義如下:
?ServerAdmin:表示虛擬主機(jī)的管理員郵件地址。
?DocumentRoot:指定虛擬主機(jī)站點(diǎn)文件路徑。
?ServerName:虛擬主機(jī)的站點(diǎn)域名
?ErrorLog:指定虛擬主機(jī)站點(diǎn)錯(cuò)誤日志輸出文件。
?CustomLog:指定虛擬主機(jī)站點(diǎn)訪(fǎng)問(wèn)日志輸出文件。
?JkMountFile:指定對(duì)此虛擬主機(jī)的URL映射文件。
?例如,我們要在一個(gè)服務(wù)器上建立3個(gè)網(wǎng)站,只需配置下面3個(gè)虛擬主機(jī)即可:
?<VirtualHost *:80>
???? ServerAdmin webmaster_www@ixdba.net
???? DocumentRoot /webdata/html
???? ServerName www.ixdba.net
???? ErrorLog logs/www.error_log
???? CustomLog logs/www.access_log common
?< /VirtualHost>
?< VirtualHost *:80>
???? ServerAdmin webmaster_bbs@ixdba.net
???? DocumentRoot /webdata/bbs
???? ServerName bbs.ixdba.net
???? ErrorLog logs/bbs.error_log
???? CustomLog logs/bbs.access_log common
?< /VirtualHost>
?< VirtualHost *:80>
???? ServerAdmin webmaster_mail@ixdba.net
???? DocumentRoot /webdata/mail
???? ServerName mail.ixdba.net
???? ErrorLog logs/mail.error_log
???? CustomLog logs/mail.access_log common
?< /VirtualHost>
?這樣,就建立了3個(gè)虛擬主機(jī),對(duì)應(yīng)的站點(diǎn)域名分別是www.ixdba.net、bbs.ixdba.net、mail.ixdba.net,接下來(lái)的工作就是將這3個(gè)站點(diǎn)域名對(duì)應(yīng)的IP全部解析到一臺(tái)web服務(wù)器即可。
?3.Tomcat的配置
?(1)tomcat的目錄機(jī)構(gòu)
?在上面的操作中,Tomcat安裝在了/usr/local/tomcat5.5.12下,tomcat每個(gè)目錄的含義如下所示:


?目錄名稱(chēng) 目錄作用
?bin 存放各種平臺(tái)下啟動(dòng)和關(guān)閉Tomcat的腳本文件
?comm 存在Tomcat服務(wù)器及所有的web應(yīng)用程序可以訪(fǎng)問(wèn)的JAR文件
?conf 存放Tomcat的各種配置文件,最重要的是 server.xml和web.xml
?logs 存放Tomcat日志文件
?server 此目錄又包含lib和webapps 2個(gè)主要目錄,webapps存放Tomcat自帶的兩個(gè)WEB應(yīng)用admin應(yīng)用和manager應(yīng)用,lib存放Tomcat服務(wù)器所需的各種JAR文件
?shared 此目錄又包含lib目錄,lib目錄主要存放所有web應(yīng)用都可以訪(fǎng)問(wèn)的jar文件(但是不能被Tomcat服務(wù)器訪(fǎng)問(wèn))
?webapps Tomcat的主要Web發(fā)布目錄,默認(rèn)情況下把Web應(yīng)用文件放于此目錄
?work 存放JSP編譯后產(chǎn)生的class文件
?


(2)server.xml的配置
?server.xml是tomcat的核心配置文件,為了支持與apache的整合,在tomcat中也需要配置虛擬主機(jī),server.xml是一個(gè)有標(biāo)簽組成的文本文件,找到默認(rèn)的<Host>標(biāo)簽,在此標(biāo)簽結(jié)尾,也就是</Host>后面增加如下虛擬主機(jī)配置:
?<Host name="192.168.6.13" debug="0" appBase="/webdata/www" unpackWARs="true">
???? <Context path="" docBase="" debug="1"/>
?< /Host>


?其中:
?name:指定虛擬主機(jī)名字,這里為了演示方便,用IP代替。
?debug:指定日志輸出級(jí)別
?appBase:存放Web應(yīng)用程序的基本目錄,可以是絕對(duì)路徑或相對(duì)于$CATALINA_HOME的目錄,默認(rèn)是$CATALINA_HOME/webapps。
?unpackWARs:如果為true,則tomcat會(huì)自動(dòng)將WAR文件解壓后運(yùn)行,否則不解壓而直接從WAR文件中運(yùn)行應(yīng)用程序。
?autoDeploy:如果為true,表示Tomcat啟動(dòng)時(shí)會(huì)自動(dòng)發(fā)布appBase目錄下所有的Web應(yīng)用(包括新加入的Web應(yīng)用)
?path:表示此Web應(yīng)用程序的url入口,如為“/jsp”,則請(qǐng)求的URL為http://localhost/jsp/
?docBase:指定此Web應(yīng)用的絕對(duì)或相對(duì)路徑,也可以為WAR文件的路徑。
?這樣tomcat的虛擬主機(jī)就創(chuàng)建完成了。
?注意:tomcat的虛擬主機(jī)一定要和apache配置的虛擬主機(jī)指向同一個(gè)目錄,這里統(tǒng)一指向到/webdata/www目錄下,所以接下來(lái)只需在/webdata/www中放置jsp程序即可。
?在server.xml中,還需要注意的幾個(gè)標(biāo)簽有:
???? <Connector port="8080" maxHttpHeaderSize="8192"
?maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
?enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
?這是tomcat對(duì)http訪(fǎng)問(wèn)協(xié)議的設(shè)定,http默認(rèn)的監(jiān)聽(tīng)端口為8080,在apache和tomcat整合的配置中,是不需要開(kāi)啟tomcat的http監(jiān)聽(tīng)的,為了安全期間,建議注釋掉此標(biāo)簽,關(guān)閉http默認(rèn)的監(jiān)聽(tīng)端口。
?????? <Connector port="8009"
??????????????? enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
?上面這段是tomcat對(duì)ajp13協(xié)議的設(shè)定,ajp13協(xié)議默認(rèn)的監(jiān)聽(tīng)端口為8009,整合apache和tomcat必須啟用該協(xié)議,JK模塊就是通過(guò)ajp協(xié)議實(shí)現(xiàn)apache和tomcat協(xié)調(diào)工作的。
?(3)配置tomcat啟動(dòng)腳本
?Tomcat的bin目錄主要存放各種平臺(tái)下啟動(dòng)和關(guān)閉tomcat的腳本文件,在linux下主要有catalina.sh、startup.sh和shutdown.sh 3個(gè)腳本,而startup.sh和shutdown.sh其實(shí)都用不同的參數(shù)調(diào)用了catalina.sh腳本。
?Tomcat在啟動(dòng)的時(shí)候會(huì)去查找jdk的安裝路徑,因此,我們需要配置系統(tǒng)環(huán)境變量,這里詳細(xì)講述下linux下環(huán)境變量的設(shè)定。
?/etc/profile:是配置系統(tǒng)全局環(huán)境變量,系統(tǒng)中所有應(yīng)用都可以使用這個(gè)環(huán)境變量。
?~/.bash_profile:是用戶(hù)環(huán)境變量,每個(gè)用戶(hù)可以通過(guò)配置這個(gè)文件而設(shè)定不同的環(huán)境變量。
?


針對(duì)java環(huán)境變量的設(shè)置,可以在/etc/profile中指定JAVA_HOME,也可以在啟動(dòng)tomcat的用戶(hù)環(huán)境變量.bash_profile中指定JAVA_HOME,這里我們?cè)赾atalina.sh腳本中指定java環(huán)境變量,編輯catalina.sh文件,添加如下內(nèi)容:
?# OS specific support.? $var _must_ be set to either true or false.
?JAVA_HOME=/usr/local/jdk1.6.0_07
?export JAVA_HOME
?cygwin=false
?os400=false



?上面加粗部分是新加內(nèi)容,其它為catalina.sh文件原有內(nèi)容。通過(guò)JAVA_HOME指定了JDK的安裝路徑,然后通過(guò)export設(shè)置生效。
?4.測(cè)試apache與tomcat整合
?到這里為止,apache與tomcat整合配置已經(jīng)完畢了,接下來(lái)我們通過(guò)添加jsp程序來(lái)測(cè)試整合的結(jié)果,看是否達(dá)到了預(yù)期的效果。
?這里我們將/usr/local/tomcat5.5.12/webapps/ROOT/目錄下的所有文件拷貝到/webdata/www下,然后啟動(dòng)tomcat與apache服務(wù),執(zhí)行步驟如下:
?[root@localhost~]#cp –r /usr/local/tomcat5.5.12/webapps/ROOT/*? /webdata/www
?[root@localhost ~]# /usr/local/tomcat5.5.12/bin/startup.sh
?[root@localhost ~]# /usr/local/apache2/bin/apachectl start
?啟動(dòng)服務(wù)完畢,就可以訪(fǎng)問(wèn)站點(diǎn)了,輸入http://192.168.60.198,如果能訪(fǎng)問(wèn)到tomcat默認(rèn)的jsp頁(yè)面,表示tomcat解析成功,接著,在/webdata/www下建立一個(gè)test.html的靜態(tài)頁(yè)面,內(nèi)容如下:
?<html>
???? <head>
?< meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
???? <title>Administration</title>
?< /head>
?< body>
?apache and tomcat sussessful,
?This is html pages!
?< /body>
?< /html>
?通過(guò)訪(fǎng)問(wèn)http://192.168.60.198/test.html,應(yīng)該出現(xiàn):
?apache and tomcat sussessful ,This is html pages!
?則表示靜態(tài)頁(yè)面也可以正確解析。
?由于tomcat也能處理靜態(tài)的頁(yè)面和圖片等資源文件,那么如何才能確定這些靜態(tài)資源文件都是由apache處理了呢,知道這個(gè)很重要,因?yàn)樽鯽pache和tomcat集成的主要原因就是為了實(shí)現(xiàn)動(dòng)、靜資源分離處理。
?一個(gè)小技巧,可以通過(guò)apache和tomcat提供的異常信息報(bào)錯(cuò)頁(yè)面的不同來(lái)區(qū)分這個(gè)頁(yè)面或者文件是被誰(shuí)處理的,例如輸入http://192.168.60.198/test.html,則顯示了頁(yè)面內(nèi)容,那么隨便輸入一個(gè)網(wǎng)頁(yè)http://192.168.60.198/test1.html,服務(wù)器上本來(lái)是不存在這個(gè)頁(yè)面的,因此會(huì)輸出報(bào)錯(cuò)頁(yè)面,根據(jù)這個(gè)報(bào)錯(cuò)信息就可以判斷頁(yè)面是被apache或者tomcat處理的。同理,對(duì)于圖片、js文件和css文件等都可以通過(guò)這個(gè)方法去驗(yàn)證。



轉(zhuǎn)載于:https://blog.51cto.com/10856468/1826215

總結(jié)

以上是生活随笔為你收集整理的tomcat和apache的结合   看最重要的   文档有点乱的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。