【摘 要】基于Web技術(shù)的Internet/Intranet近年來已經(jīng)得到了廣泛的應(yīng)用。客戶端用戶通過低成本、簡單易用的客戶瀏覽器就能隨時(shí)隨地到企業(yè)的Web站點(diǎn)上查閱自己所需的數(shù)據(jù)。在許多用戶看來,一個(gè)Web網(wǎng)站的成敗主要在于它所提供的內(nèi)容和功能,而支持這些內(nèi)容和功能的Web服務(wù)器起著非常重要的作用。主要介紹在Linux操作系統(tǒng)下,Tomcat與Apache Web服務(wù)器的安裝與整合。通過整合,提升對靜態(tài)文件的處理性能;利用 Web 服務(wù)器來做負(fù)載均衡以及容錯(cuò);無縫的升級(jí)應(yīng)用程序。
【關(guān)鍵詞】Linux;Tomcat;Apache;Web服務(wù)器
一、軟件介紹
(一)Tomcat
Tomcat是一個(gè)免費(fèi)的開源的Serlvet容器,它是Apache基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache,Sun和其它一些公司及個(gè)人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。因?yàn)門omcat技術(shù)先進(jìn)、性能穩(wěn)定且免費(fèi),所以深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器。
Tomcat是穩(wěn)固的獨(dú)立的Web服務(wù)器與Servlet Container,不過,其Web服務(wù)器的功能則不如許多更健全的Web服務(wù)器完整,如Apache Web服務(wù)器(舉例來說,Tomcat沒有大量的選擇性模塊)。不過,Tomcat是自由的開源軟件,而且有許多高手致力于其發(fā)展。
1.單獨(dú)運(yùn)行Tomcat的優(yōu)點(diǎn):
(1)容易架設(shè)。下載Tomcat,設(shè)定一些配置,就完成了。不需要花費(fèi)時(shí)間將Web服務(wù)器的連接器整合至其它的Web服務(wù)器中。
(2)不需要擔(dān)心連接器。永遠(yuǎn)不需要排除在其它Web服務(wù)器與Tomcat之間的任何性能或聯(lián)機(jī)方面的問題。
(3)有較佳的安全防護(hù)。相對于其它以C、C++所編寫的Web服務(wù)器,Tomcat比較能忍受遠(yuǎn)程緩沖區(qū)溢位的攻擊。因?yàn)門omcat的Java虛擬機(jī)是位于網(wǎng)絡(luò)及操作系統(tǒng)之間,它可以防止幾乎所有類型的緩沖區(qū)溢位攻擊。使用Tomcat的安全防護(hù)領(lǐng)域,可以指定對各個(gè)資源的訪問。
(4)容易移植??梢詫omcat服務(wù)器(以及應(yīng)用程序)移植到不同的服務(wù)器、操作系統(tǒng)甚至架構(gòu)上。因?yàn)門omcat是以Java編寫的,因此可以將其整個(gè)目錄結(jié)構(gòu)的內(nèi)容復(fù)制到其它計(jì)算機(jī)上運(yùn)行,而完全不需要任何改變,甚至于新的計(jì)算機(jī)的架構(gòu)與原來的不同也一樣。
2.單獨(dú)運(yùn)行Tomcat的缺點(diǎn):
(1)Tomcat的支持軟件比較少。Tomcat內(nèi)建Web服務(wù)器的支持軟件比Apache httpd Web服務(wù)器少。
(2)Tomcat的Web服務(wù)器功能少。相對于Tomcat Web服務(wù)器,Apache httpd服務(wù)器有更完整的功能。
(3)雖然Tomcat運(yùn)行速度快,但還沒有Apache httpd快。Tomcat服務(wù)器比Apache httpd慢,不過,它還在改進(jìn)中,而且仍然非???,快到足以運(yùn)行今日大多數(shù)的企業(yè)網(wǎng)站,只是在提供靜態(tài)頁面內(nèi)容上沒有Apache快。
(二)Apache Web服務(wù)器
Apache是根據(jù)NCSA的服務(wù)器發(fā)展而來的,NCSA是最早出現(xiàn)的Web服務(wù)器程序之一,由伊利諾斯大學(xué)Urbana-Champaign分校的美國國家超級(jí)計(jì)算應(yīng)用中心開發(fā)。在發(fā)展初期,Apache主要是一個(gè)基于UNIX系統(tǒng)的服務(wù)器,它的宗旨就是建成一個(gè)基于UNIX系統(tǒng)的、功能更強(qiáng)、效率更高并且速度更快的WWW服務(wù)器,這就決定了它是從其他的服務(wù)器演變而來的,并且添加了大量補(bǔ)丁來增強(qiáng)它在某一方面的性能,所以它就被命名為“APA+CHy Server(一個(gè)補(bǔ)丁組成的服務(wù)器)”。發(fā)展到今天,Apache已經(jīng)被移植到很多平臺(tái)上了。
Apache的開發(fā)遵循GPL協(xié)議,由全球的志愿者一起開發(fā)和維護(hù)。在保持強(qiáng)大的功能及不斷更新的同時(shí),它仍然是免費(fèi)的,并且公開源代碼。
1.單獨(dú)運(yùn)行Apache httpd的優(yōu)點(diǎn)
(1)Apache httpd比Tomcat內(nèi)建的Web服務(wù)器快。
(2)較多的軟件支持。Apache httpd有龐大的支持軟件鏈接庫。
(3)啟動(dòng)與停止快。一般來說,Apache httpd的啟動(dòng)與停止時(shí)間都比Tomcat短。
2.單獨(dú)運(yùn)行Apache httpd的缺點(diǎn)
(1)架設(shè)比較困難。比起單獨(dú)運(yùn)行Tomcat,安裝Apache Web服務(wù)器并讓它與Tomcat協(xié)同運(yùn)行要復(fù)雜很多。
(2)會(huì)拖慢動(dòng)態(tài)網(wǎng)頁內(nèi)容的服務(wù)。
(3)安全漏洞。Apache httpd比較容易受到緩沖區(qū)溢位的攻擊。
(4)升級(jí)比較復(fù)雜。
二、軟件安裝
(一)Linux下安裝Tomcat
在安裝Tomcat之前需要安裝j2sdk(Java 2 Software Development Kit),安裝j2sdk的步驟如下:
1.在http://www.java.sun.com下載j2sdk [1],如j2sdk-1_4_2_04-linux-i586-rpm.bin。
2.在終端中轉(zhuǎn)到j(luò)2sdk-1_4_2_04-linux-i586-rpm.bin所在的目錄,輸入命令chmod +x j2sdk-1_4_2_04-linux-i586-rpm.bin,添加執(zhí)行的權(quán)限。
3.執(zhí)行命令./j2sdk-1_4_2_04-linux-i586-rpm.bin,生成j2sdk-1_4_2_04-linux-i586.rpm的文件。
4.執(zhí)行命令chmod +x j2sdk-1_4_2_04-linux-i586.rpm,給j2sdk-1_4_2_04-linux-i586.rpm添加執(zhí)行的權(quán)限。
5.執(zhí)行命令 rpm –ivh j2sdk-1_4_2_04-linux-i586.rpm ,安裝j2sdk。
6.安裝界面會(huì)出現(xiàn)授權(quán)協(xié)議,按Enter鍵接受,把j2sd安裝在/usr/java/j2sdk1.4.2_04。
7.設(shè)置環(huán)境變量,在 /etc/profile.d/目錄下建立文件java.sh,文件的內(nèi)容如下:
#set java environment
export JAVA_HOME=/usr/java/j2sdk1.4.2_04
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:/usr/java/jdbc
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
8.執(zhí)行命令chmod 755 /etc/profile.d/java.sh,給java.sh分配權(quán)限。
9.在終端中分別執(zhí)行命令javac –help和java –version,如果看到有關(guān)的信息,則表示j2sdk已成功安裝。
尤其需要注意的是在win下是用分號(hào)來隔離的,在linux下是用冒號(hào)來隔離的。
(二)接下來安裝tomcat,安裝tomcat的步驟如下:
1.訪問http://jakarta.apache.org/tomcat/index.html,[2]下載二進(jìn)制版的tomcat,如jakarta-tomcat-5.5.10.tar.gz,解壓到/usr/local目錄:
cd /usr/local
gzip –zxvf jakarta-tomcat-5.5.10.tar.gz
2.修改$tomcat/bin/startup.sh和shutdown.sh文件,
export JAVA_HOME=/usr/java/j2sdk1.4.2_04
export CATALINA_HOME=/usr/local/tomcat-5.5.10
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:/usr/java/jdbc
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
3.執(zhí)行startup.sh即可在http://localhost:8080/ 訪問到tomcat的缺省面頁.
(三)安裝Apache服務(wù)器
可以通過以下三種方法安裝Apache服務(wù)器。
1.如果安裝的Linux版本中帶用Apache的話,就在選擇所要安裝的服務(wù)器的時(shí)候,將httpd這個(gè)服務(wù)選上,Linux安裝程序?qū)⒆詣?dòng)完成Apache的安裝工作,并做好基本的配置。
2.使用可執(zhí)行文件軟件包,這比較適合那些對編譯工作不是太熟悉的初級(jí)用戶,因?yàn)樗鄬Ρ容^簡單。下載軟件包apache_1.2.4.e.tar.gz ,執(zhí)行命令tar xvzf apache_1.2.4.e.tar.gz 完成安裝工作。如果使用的是RedHat Linux的話,也可以下載apache_1.2.4.rpm軟件安裝包,然后使用rpm –ivh apache_1.2.4.rpm命令安裝。
3.如果想把Apache服務(wù)器充分利用起來的話,就一定要自己編譯Apache 定制其功能。 下載包含Apache源代碼的軟件包apache_1.2.4.tar.gz;然后用tar命令將它解開;將當(dāng)前目錄改變?yōu)锳pache源代碼發(fā)行版的src目錄;將配置樣本文件(Configuration.tmpl)復(fù)制為Configuration文件;編輯Configuration文件中的配置選項(xiàng)。
模塊配置:模塊是Apache的組成部分,它為Apache內(nèi)核增加新功能。通過使用模塊配置,可以自定義在Apache服務(wù)器中需要什么功能,這個(gè)部分也是Apache靈活性的表現(xiàn)。模塊配置行如下所示:
AddModule modules/standard/mod_env.o
如果需要Apache服務(wù)器具備什么功能,就將那個(gè)模塊用AddModule語句加到配置文件Configuration中去。
在src目錄下執(zhí)行:“. /configure”;
編譯Apache:執(zhí)行命令“make”;
將編譯好的可執(zhí)行文件httpd復(fù)制到/etc/httpd/bin目錄下;將Apache發(fā)行版的配置文件:access.conf、httpd.conf、mime.types、srm.conf文件復(fù)制到/etc/httpd/conf目錄下。到此為止,安裝完成。
三、Tomcat與Apache的整合
有幾種將Tomcat整合到Apache httpd Web服務(wù)器的方法:
(一)使用不同的端口號(hào)分擔(dān)負(fù)載。
該方法是最容易實(shí)現(xiàn)的,只需要在現(xiàn)成的網(wǎng)頁目錄中加入U(xiǎn)RL以連接到在同一臺(tái)Web服務(wù)器機(jī)器上的Tomcat Web服務(wù)器端口(如8080)。實(shí)際上還是執(zhí)行兩個(gè)完整的Web服務(wù)器程序,彼此之間并沒有真正的整合。
(二)從Apache將請求發(fā)送至Tomcat的代理服務(wù)器。
該方法會(huì)在主服務(wù)器中使用HTTP的代理機(jī)制。代理機(jī)制常會(huì)用來將來自網(wǎng)關(guān)上運(yùn)行的Web服務(wù)器的Web信息流重新路由至外部因特網(wǎng)上的網(wǎng)站。不過,也可以用來將網(wǎng)站區(qū)域或目錄的信息流重導(dǎo)至Tomcat Web服務(wù)器。
將所有servlet 和jsp請求通過ajp13的協(xié)議送給Tomcat,讓Tomcat來處理
JkMount /servlet/* worker1
JkMount /*.jsp worker1
# vi workers.properties
添加以下內(nèi)容:
# 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
(三)使用mod_jk2連接器。
該方法使用運(yùn)行于現(xiàn)有的Apache httpd Web服務(wù)器之內(nèi)的連接器模塊(如mod_jk),并經(jīng)由特定的協(xié)議快速地將請求轉(zhuǎn)送至Tomcat。這是將Tomcat連接至Apache httpd的標(biāo)準(zhǔn)方式。
增加關(guān)于加載mod_jk的語句:
LoadModule jk_module modules/mod_jk.so
Include /usr/local/apache2/conf/mod_jk.conf
4.單一進(jìn)程中執(zhí)行兩個(gè)程序。
該方法通過讓JVM在Apache httpd的進(jìn)程空間中運(yùn)行的方式,可以提供“完全整合”的功能。這是最有效的辦法,但也是最依賴于服務(wù)器的實(shí)現(xiàn)。
四、結(jié)語
Tomcat是提供一個(gè)支持Servlet和JSP運(yùn)行的容器。Servlet和JSP能根據(jù)實(shí)時(shí)需要,產(chǎn)生動(dòng)態(tài)網(wǎng)頁內(nèi)容。而對于Web服務(wù)器來說, Apache僅僅支持靜態(tài)網(wǎng)頁,對于支持動(dòng)態(tài)網(wǎng)頁就會(huì)顯得無能為力;Tomcat則既能為動(dòng)態(tài)網(wǎng)頁服務(wù),同時(shí)也能為靜態(tài)網(wǎng)頁提供支持。盡管它沒有通常的Web服務(wù)器快、功能也不如Web服務(wù)器豐富,但是Tomcat逐漸為支持靜態(tài)內(nèi)容不斷擴(kuò)充。Tomcat與Apache整合的好處:
(一)提升對靜態(tài)文件的處理性能
(二)利用 Web 服務(wù)器來做負(fù)載均衡以及容錯(cuò)
(三)無縫的升級(jí)應(yīng)用程序
這三點(diǎn)對一個(gè) web 網(wǎng)站來說是非常之重要的,我們希望我們的網(wǎng)站不僅是速度快,而且要穩(wěn)定,不能因?yàn)槟硞€(gè) Tomcat 宕機(jī)或者是升級(jí)程序?qū)е掠脩粼L問不了,而能完成這幾個(gè)功能的、最好的 HTTP 服務(wù)器也就只有 apache 的 http server 了,它跟 tomcat 的結(jié)合是最緊密和可靠的。
一般來說,大的站點(diǎn)都是將Tomcat與Apache的結(jié)合,Apache負(fù)責(zé)接受所有來自客戶端的HTTP請求,然后將Servlets和JSP的請求轉(zhuǎn)發(fā)給Tomcat來處理。Tomcat完成處理后,將響應(yīng)傳回給Apache,最后Apache將響應(yīng)返回給客戶端。瀏覽器客戶端操作界面的一致性避免了C/S模式客戶端程序的多樣性,而服務(wù)器端的開放和基于標(biāo)準(zhǔn)的連接方案使企業(yè)很方便地通過Internet同外界聯(lián)系;同時(shí),Web信息動(dòng)態(tài)的、交互式的發(fā)布方式從根本上改變了企業(yè)的服務(wù)質(zhì)量,增加了企業(yè)的商業(yè)機(jī)會(huì)。
參考文獻(xiàn):
[1] http://www.java.sun.com,2008.
[2] http://jakarta.apache.org
[3]楊明華 等. 完全手冊--Linux系統(tǒng)與網(wǎng)絡(luò)服務(wù)管理技術(shù)大全(含光盤)[M].北京:電子工業(yè)出版社,2008.