前段時間因為一點關系,接觸到apache動態(tài)進負載均衡的實驗,很自然想到apache配合其他軟件使用完成需求,網(wǎng)上找了下,還是比較多的apache整合tomcat的。所以我就將做到這個實驗從頭到尾思路都寫出來,分享下心得,也希望各位大拿們指導下~
因為生產(chǎn)環(huán)境不可能隨時變化,所以管理員們只能不斷去優(yōu)化,所以在真不改變硬件的情況下最大程度利用資源就會導致許多新的技術(shù)誕生,apache整合tomcat也是就是其中之一。
目的:現(xiàn)有硬件條件下實現(xiàn)更大的負載
選用的原因:
Apache優(yōu)勢有:
--功能強大:apache為模塊化的設計,通過擴展模塊可以擴展很多功能。
--配置簡單:apache的配置文件也比較簡單易懂
--速度較快:處理靜態(tài)頁面效率搞,并且應對大規(guī)模并發(fā)連接請求
--性能穩(wěn)定:apache在搞負載請求下性能表現(xiàn)依舊不俗。
但是apache的缺點:
--只能支持靜態(tài)頁面,對jsp,php等不支持
但是作為市場份額超過半數(shù)的選擇,選擇apache并不奇怪。
Tomcat的優(yōu)勢:
--作為apache軟件基金會和sun支持的項目,有著最純真的sun更新代碼的體現(xiàn), serlet和jsp的容器,對于動態(tài)頁面支持非常好
--跨平臺性非常好,只要有JDK的支持就可以運行
Tomcat缺點:
--支持靜態(tài)頁面效率不如apache
--可配置型,穩(wěn)定性都不如apache
綜上將apache和tomcat整合起來應該是優(yōu)勢互補。況且本身apache和tomato還都是apache軟件基金會的子項目呢,
整合原理:apache本身和tomcat都是開源的,可單獨作為web服務器的軟件,所以整合他們需要另外一些東西進行二者之間通信,相對于apache來說等同擴展功能,所以開源愛好者開發(fā)出了可利用的模塊,這里主要介紹的有4個模塊。
--mod_jk2.so:早期的連接器,在動靜態(tài)頁面過濾上使用正則表達式,配置較靈活,但是現(xiàn)在已經(jīng)沒有開發(fā)人員的支持了,版本就此停止了。
--mod_jk.so:上面的取代版本,支持apache 1.x和2.x版本,大多都是用這個模塊
--http-proxy:apache2.2版本出現(xiàn)后出現(xiàn),可以實現(xiàn)雙向代理,功能強大,只要打開tomcat的http功能,然后用apache的proxy代理功能將動態(tài)請求交給tomcat處理,靜態(tài)自己處理即可
--proxy-ajp:專門針對tomcat整合開發(fā),ajp協(xié)議專門代理對tomcat請求,執(zhí)行效率最高。
介紹完了之后進行操作步驟了,首先看下環(huán)境
環(huán)境:RHEL 5.4
Httpd-2.2.17.tar.gz
Apache-tomcat-5.5.33.tar.gz
tomcat-connectors-1.2.31-src.tar.gz
JDK-6u25-dlj-linux-i586.bin
下面就是具體的安裝步驟啦
1/首先上傳相應的軟件包到服務器上
2/下面就是安裝相應的輔助軟件包,包括gcc編譯器,libtool
3/下面就進行apache的安裝,安裝過程就不截圖了,這里把步驟送上
[root@mail ~]#tar -zxvf httpd-2.2.17.tar.gz
[root@mail ~]#cd httpd-2.2.17
[root@mail ~]#./configure --prefix=/usr/local/apache \
--enable-modules=most \
--enable-mods-shared=all \
--enable-so
[root@mail ~]#make ;make install
這里有加載模塊的選項解釋下,prefix是安裝路徑,--enable-modules=most是動態(tài)加載大多數(shù)模塊靜態(tài)編譯到apache的二進制文件中,--enable-mods-shard=all表示動態(tài)加載所有模塊,這兩個選項是可選的,但是最后一個—enable-so是必須要有的,是一個加載模塊的開關。這里感謝南非螞蟻的文檔的幫助。。。謝謝
4/安裝完成之后當然是安裝tomcat,我們修改下目錄名稱,不影響的
[root@mail ~]#cd /usr/local
[root@mail local]# tar -zxvf apache-tomcat-5.5.33.tar.gz
[root@mail local]#mv apache-tomcat-5.5.33 tomcat5.5.33
這里因為tomcat默認解壓縮的時候已經(jīng)是二進制可執(zhí)行文件了,就不用編譯安裝了,直接拷貝到我們的目錄下就可以了
5/因為tomcat基于Java的環(huán)境,所以需要安裝jdk,并修改環(huán)境變量
[root@mail ~]#cd /usr/local
[root@mail local]#chmod u+x jdk-6u15-linux-i586.bin
[root@mail local]#./jdk-6u15-linux-i586.bin
安裝過程根據(jù)提示操作即可完成。安裝完成會生成一個jdk1.6.0_25目錄
下面需要修改環(huán)境變量來滿足tomcat的運行環(huán)境,在文件最后添加,因為jdk安裝在/usr/local下,所以才會配置如此,如果位置不同只需修改JAVA_HOME路徑即可
#Vim /etc/profile
export JAVA_HOME="/usr/local/jdk1.6.0_25"
export PATH="$PATH :$JAVA_HOME/bin:$JAVA_HOME/jre/bin:"
export CLASSPATH="$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
如果正確完成之后是可以用java –version來查看版本的
6/因為要讓apache和tomcat進行通信,所以當然要安裝一個連接器,或者叫插件,
[root@mail ~]# cd /usr/local/
[root@mail local]#tar xzvf jakarta-tomcat-connectors-1.2.31-src.tar.gz
[root@mail local]# cd jakarta-tomcat-connectors-1.2.31-src/native
[root@mail native]# ./buildconf.sh
[root@mail native]# --with-apxs=/usr/local/apache2/bin/apxs \
--with-java-home=/usr/local/jdk1.6.0_25
最后檢查下模塊是否正確的生成
7、到此安裝的步驟已經(jīng)全部結(jié)束,下面就開始進行相應的整合操作!
Tomcat是一個服務于web server等執(zhí)行servlet/jsp的tomcat實例,所以需要在apache的配置文件下添加相關的配置文件來讓apache和tomcat來進行通訊,在這里需要添加2個文件,一個是mod_jk.conf和workers.properties,
#cd /usr/local/apache2/conf
#vim mod_jk.conf
添加如下內(nèi)容:
###### 指出mod_jk模塊工作所需要的工作文件workers.properties的位置
JkWorkersFile /usr/local/apache2/conf/workers.properties
###### Where to put jk logs
JkLogFile /usr/local/apache2/logs/mod_jk.log
###### Set the jk log level [debug/error/info]
JkLogLevel info
###### Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
###### JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
###### JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
###### 將所有servlet 和jsp請求通過ajp13的協(xié)議送給Tomcat,讓Tomcat來處理
JkMount /servlet/* worker1
JkMount /*.jsp worker1
JkMount /*.do worker1
這里說明一下,比較重要的就是最后兩行了,因為這里是告訴apache如何判斷用戶的請求哪些該法往tomcat,這里我只寫了講servlet和jsp頁面的請求發(fā)往tomcat,其余的就是apache自身來處理,這里有一個匹配原則,apache優(yōu)先匹配靜態(tài)資源,一旦靜態(tài)匹配不成功,再來檢查這里的文件,滿足就轉(zhuǎn)發(fā)給tomcat
8、然后添加,指定和tomcat通信的apache進程實例的一些模式,包括協(xié)議,端口啊等
Vim workers.properties
####### Defining a worker named worker1 and of type ajp13
worker.list=worker1
####### Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
9、最后配置apache服務器配置文件,讓apache加載mod_jk.so模塊和讀取mod_jk.conf文件
#vim httpd.conf
在相應的位置添加上
LoadModule jk_module modules/mod_jk.so
Include /usr/local/apache2/conf/mod_jk.conf
這里還可以修改下服務器名稱,這里方便我就改成自身的IP,監(jiān)聽端口等
還要增加主頁對JSP頁面的支持
到此apache全部配置就基本結(jié)束了,下面我們來配置tomcat整合要做哪些設置
10、tomcat整合必須修改主配置文件添加一部分內(nèi)容即可
#vim /usr/local/tomcat/conf/server.xml
在<Host></Host>之間添加<Context path="" docBase="/usr/local/apache/htdocs/"
debug="0" reloadable="true" crossContext="true"/>
這里我用紅色的顏色標記了網(wǎng)頁的存放路徑一定要和apache里指向同一個地方
到此tomcat其實也就設置完成了,但是這里給個小提示。Tomcat默認也可以單獨作為web服務器的,所以他也有自己監(jiān)聽的端口,默認是8080,配置文件里說明了
我們?yōu)榱税踩紤]可以修改為以下
<Connector port="8009"
enableLookups="false"
redirectPort="8443"
protocol="AJP/1.3“ />
11、最后重啟apache和tomcat即可完成
Apache的啟動:
#/usr/local/apache/bin/apachectl start
Tomcat的啟動:
#/usr/local/tomcat/bin/startup.sh start
這里能看到8080端口是因為我沒有將tomcat的默認端口關閉。這樣恰好可以看到tomcat是啟動了的,而且ajp13也是監(jiān)聽在,這樣整合就成功了,下面我們來進行檢測
12檢測
--首先我們看下默認純apache是否支持jsp頁面
這里我用默認的jsp一個簡單的頁面,結(jié)果apache返回給我源代碼,說明apache不支持jsp頁面
--看整合之后的是否支持呢
看到是支持的,但是有人會懷疑這是不是tomcat解析出來的,并不是整合的效果,那好,這里告訴各位額,我們都知道apache有自己獨有的報錯頁面,也就是你訪問錯誤的網(wǎng)頁時候apache返回的頁面是可以判斷這就是apache在處理相關的信息,同樣的tomcat也有獨有的報錯頁面,下面這就是訪問不到默認tomcat的頁面返回信息,這樣才知道是哪個響應了我們的請求,到此,我們的整合實驗算是基本完成了
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【mszdt.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|