1、引言
基于Web技術(shù)的Internet/Intranet近年來(lái)已經(jīng)得到了廣泛的應(yīng)用,Intranet是以TCP/IP協(xié)議為基礎(chǔ)、以Web為核心的企業(yè)內(nèi)部網(wǎng),用戶通過(guò)低成本、簡(jiǎn)單易用的客戶瀏覽器就能隨時(shí)隨地到企業(yè)的Web站點(diǎn)上查閱自己所需的數(shù)據(jù)。瀏覽器客戶端操作界面的一致性避免了C/S模式客戶端程序的多樣性,而服務(wù)器端的開(kāi)放和基于標(biāo)準(zhǔn)的連接方案使企業(yè)很方便地通過(guò)Internet同外界聯(lián)系;同時(shí),Web信息動(dòng)態(tài)的、交互式的發(fā)布方式從根本上改變了企業(yè)的服務(wù)質(zhì)量,增加了企業(yè)的商業(yè)機(jī)會(huì)。
在許多用戶看來(lái),一個(gè)Web網(wǎng)站的成敗主要在于它所提供的內(nèi)容和功能,而支持這些內(nèi)容和功能的Web服務(wù)器起著非常重要的作用。
2、Tomcat容器
Tomcat是一個(gè)免費(fèi)的開(kāi)源的Serlvet容器,它是Apache基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache,Sun和其它一些公司及個(gè)人共同開(kāi)發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。
Tomcat是穩(wěn)固的獨(dú)立的Web服務(wù)器與Servlet Container,不過(guò),其Web服務(wù)器的功能則不如許多更健全的Web服務(wù)器完整,如Apache Web服務(wù)器(舉例來(lái)說(shuō),Tomcat沒(méi)有大量的選擇性模塊)。不過(guò),Tomcat是自由的開(kāi)源軟件,而且有許多高手致力于其發(fā)展。
2.1 Linux下安裝Tomcat
        在安裝Tomcat之前需要安裝j2sdk(Java 2 Software Development Kit),安裝j2sdk的步驟如下:
1)到http://www.java.sun.com下載j2sdk ,如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已成功安裝。
    接下來(lái)安裝tomcat,安裝tomcat的步驟如下:
1)訪問(wèn)http://jakarta.apache.org/tomcat/index.html,下載二進(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/ 訪問(wèn)到tomcat的缺省面頁(yè).
2.2單獨(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ī)方面的問(wèn)題。
3)有較佳的安全防護(hù)。相對(duì)于其它以C、C++所編寫(xiě)的Web服務(wù)器,Tomcat比較能忍受遠(yuǎn)程緩沖區(qū)溢位的攻擊。因?yàn)門(mén)omcat的Java虛擬機(jī)是位于網(wǎng)絡(luò)及操作系統(tǒng)之間,它可以防止幾乎所有類型的緩沖區(qū)溢位攻擊。使用Tomcat的安全防護(hù)領(lǐng)域,可以指定對(duì)各個(gè)資源的訪問(wèn)。
4)容易移植。可以將Tomcat服務(wù)器(以及應(yīng)用程序)移植到不同的服務(wù)器、操作系統(tǒng)甚至架構(gòu)上。因?yàn)門(mén)omcat是以Java編寫(xiě)的,因此可以將其整個(gè)目錄結(jié)構(gòu)的內(nèi)容復(fù)制到其它計(jì)算機(jī)上運(yùn)行,而完全不需要任何改變,甚至于新的計(jì)算機(jī)的架構(gòu)與原來(lái)的不同也一樣。
2.3單獨(dú)運(yùn)行Tomcat的缺點(diǎn)
1)Tomcat的支持軟件比較少。Tomcat內(nèi)建Web服務(wù)器的支持軟件比Apache httpd Web服務(wù)器少。
2)Tomcat的Web服務(wù)器功能少。相對(duì)于Tomcat Web服務(wù)器,Apache httpd服務(wù)器有更完整的功能。
3)雖然Tomcat運(yùn)行速度快,但還沒(méi)有Apache httpd快。Tomcat服務(wù)器比Apache httpd慢,不過(guò),它還在改進(jìn)中,而且仍然非???,快到足以運(yùn)行今日大多數(shù)的企業(yè)網(wǎng)站,只是在提供靜態(tài)頁(yè)面內(nèi)容上沒(méi)有Apache快。
3、Apache Web服務(wù)器
Apache是根據(jù)NCSA的服務(wù)器發(fā)展而來(lái)的,NCSA是最早出現(xiàn)的Web服務(wù)器程序之一,由伊利諾斯大學(xué)Urbana-Champaign分校的美國(guó)國(guó)家超級(jí)計(jì)算應(yīng)用中心開(kāi)發(fā)。在發(fā)展初期,Apache主要是一個(gè)基于UNIX系統(tǒng)的服務(wù)器,它的宗旨就是建成一個(gè)基于UNIX系統(tǒng)的、功能更強(qiáng)、效率更高并且速度更快的WWW服務(wù)器,這就決定了它是從其他的服務(wù)器演變而來(lái)的,并且添加了大量補(bǔ)丁來(lái)增強(qiáng)它在某一方面的性能,所以它就被命名為“APA+CHy Server(一個(gè)補(bǔ)丁組成的服務(wù)器)”。發(fā)展到今天,Apache已經(jīng)被移植到很多平臺(tái)上了。
Apache的開(kāi)發(fā)遵循GPL協(xié)議,由全球的志愿者一起開(kāi)發(fā)和維護(hù)。在保持強(qiáng)大的功能及不斷更新的同時(shí),它仍然是免費(fèi)的,并且公開(kāi)源代碼。
3.1 安裝Apache服務(wù)器
可以通過(guò)以下三種方法安裝Apache服務(wù)器。
1)如果安裝的Linux版本中帶用Apache的話,就在選擇所要安裝的服務(wù)器的時(shí)候,將httpd這個(gè)服務(wù)選上,Linux安裝程序?qū)⒆詣?dòng)完成Apache的安裝工作,并做好基本的配置。
2)使用可執(zhí)行文件軟件包,這比較適合那些對(duì)編譯工作不是太熟悉的初級(jí)用戶,因?yàn)樗鄬?duì)比較簡(jiǎ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ù)器充分利用起來(lái)的話,就一定要自己編譯Apache 定制其功能。 下載包含Apache源代碼的軟件包apache_1.2.4.tar.gz;然后用tar命令將它解開(kāi);將當(dāng)前目錄改變?yōu)锳pache源代碼發(fā)行版的src目錄;將配置樣本文件(Configuration.tmpl)復(fù)制為Configuration文件;編輯Configuration文件中的配置選項(xiàng):
Makefile配置選項(xiàng):一些編譯選項(xiàng):
. “CC=”一行指定用什么編譯軟件編譯,一般為“CC=gcc”;如果需要將額外的標(biāo)志(參數(shù))指定給C編譯軟件,可以使用:
EXTRA_CFLAGS=
EXTRA_LFLAGS=
如果系統(tǒng)需要特殊的庫(kù)和包含文件,可以在這里指定它們:
EXTRA_LIBS=
EXTRA_INCLUDES=
如果要改變代碼優(yōu)化設(shè)置的話,須將下面一句去掉注釋,然后改成所需要的值:
#OPTIM=-O2
Rule配置選項(xiàng):用來(lái)決定需要什么功能,一般情況下無(wú)需改變。
模塊配置:模塊是Apache的組成部分,它為Apache內(nèi)核增加新功能。通過(guò)使用模塊配置,可以自定義在Apache服務(wù)器中需要什么功能,這個(gè)部分也是Apache靈活性的表現(xiàn)。模塊配置行如下所示:
AddModule modules/standard/mod_env.o
如果需要Apache服務(wù)器具備什么功能,就將那個(gè)模塊用AddModule語(yǔ)句加到配置文件Configuration中去。
下面列出了Apache的模塊功能:
模塊名                         功能                                                     缺省
mod_access                 提供基于主機(jī)的訪問(wèn)控制命令                                     y
mod_actions                能夠運(yùn)行基于MIME類型的CGI腳本或HTTP請(qǐng)求方法                      y
mod_alias                能執(zhí)行URL重定向服務(wù)                                         y
mod_asis                 使文檔能在沒(méi)有HTTP頭標(biāo)的情況下被發(fā)送到客戶端                 y
mod_auth                 支持使用存儲(chǔ)在文本文件中的用戶名、口令實(shí)現(xiàn)認(rèn)證                 y
mod_auth_dbm                   支持使用DBM文件存儲(chǔ)基本HTTP認(rèn)證                         n
mod_auth_mysql                        支持使用MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)基本HTTP認(rèn)證                            n
mod_auth_anon                        允許以匿名方式訪問(wèn)需要認(rèn)證的區(qū)域                            y
mod_auth_external                支持使用第三方認(rèn)證                                         n
mod_autoindex                        當(dāng)缺少索引文件時(shí),自動(dòng)生成動(dòng)態(tài)目錄列表                         y
mod_cern_meta                        提供對(duì)元信息的支持                                         n
mod_cgi                         支持CGI                                                 y
mod_dir                         能夠重定向任何對(duì)不包括尾部斜杠字符命令的請(qǐng)求                 y
mod_env                                 使你能夠?qū)h(huán)境變量傳遞給CGI或SSI腳本                         n
mod_expires                 讓你確定Apache在服務(wù)器響應(yīng)請(qǐng)求時(shí)如何處理Expires                          y
mod_headers                 能夠操作HTTP應(yīng)答頭標(biāo)                                 y
mod_imap                 提供圖形映射支持                                         n
mod_include                 使支持SSI                                                 n
mod_info                                 對(duì)服務(wù)器配置提供了全面的描述                                 y
mod_log_agent                         允許在單獨(dú)的日志文件中存儲(chǔ)用戶代理的信息                         n
mod_log_config                        支持記錄日志                                                      y
mod_log_referer                          提供了將請(qǐng)求中的Referer頭標(biāo)寫(xiě)入日志的功能                 n
mod_mime                 用來(lái)向客戶端提供有關(guān)文檔的元信息                        y
mod_negotiation                        提供了對(duì)內(nèi)容協(xié)商的支持                                 y
mod_setenvif                 使你能夠創(chuàng)建定制環(huán)境變量                                 y
mod_speling                 使你能夠處理含有拼寫(xiě)錯(cuò)誤或大小寫(xiě)錯(cuò)誤的URL請(qǐng)求                     n
mod_status                 允許管理員通過(guò)WEB管理Apache                                 y
mod_unique_id         為每個(gè)請(qǐng)求提供在非常特殊的條件下保證是唯一的標(biāo)識(shí)                               n
在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目錄下。到此為止,安裝完成。
3.1單獨(dú)運(yùn)行Apache httpd的優(yōu)點(diǎn)
   1)Apache httpd比Tomcat內(nèi)建的Web服務(wù)器快。
   2)較多的軟件支持。Apache httpd有龐大的支持軟件鏈接庫(kù)。
3)啟動(dòng)與停止快。一般來(lái)說(shuō),Apache httpd的啟動(dòng)與停止時(shí)間都比Tomcat短。
3.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)頁(yè)內(nèi)容的服務(wù)。
   3)安全漏洞。Apache httpd比較容易受到緩沖區(qū)溢位的攻擊。
   4)升級(jí)比較復(fù)雜。
4、Tomcat與Apache的整合
有幾種將Tomcat整合到Apache httpd Web服務(wù)器的方法:
1)架使用不同的端口號(hào)分擔(dān)負(fù)載。
該方法是最容易實(shí)現(xiàn)的,只需要在現(xiàn)成的網(wǎng)頁(yè)目錄中假如URL以連接到在同一臺(tái)Web服務(wù)器機(jī)器上的Tomcat Web服務(wù)器端口(如8080)。實(shí)際上還是執(zhí)行兩個(gè)完整的Web服務(wù)器程序,彼此之間并沒(méi)有真正的整合。
2)從Apache將請(qǐng)求發(fā)送至Tomcat的代理服務(wù)器。
該方法會(huì)在主服務(wù)器中使用HTTP的代理機(jī)制。代理機(jī)制常會(huì)用來(lái)將來(lái)自網(wǎng)關(guān)上運(yùn)行的Web服務(wù)器的Web信息流重新路由至外部因特網(wǎng)上的網(wǎng)站。不過(guò),也可以用來(lái)將網(wǎng)站區(qū)域或目錄的信息流重導(dǎo)至Tomcat Web服務(wù)器。
3)使用mod_jk2連接器。
該方法使用運(yùn)行于現(xiàn)有的Apache httpd Web服務(wù)器之內(nèi)的連接器模塊(如mod_jk),并經(jīng)由特定的協(xié)議快速地將請(qǐng)求轉(zhuǎn)送至Tomcat。這是將Tomcat連接至Apache httpd的標(biāo)準(zhǔn)方式。
4)單一進(jìn)程中執(zhí)行兩個(gè)程序。
該方法通過(guò)讓JVM在Apache httpd的進(jìn)程空間中運(yùn)行的方式,可以提供“完全整合”的功能。這是最有效的辦法,但也是最依賴于服務(wù)器的實(shí)現(xiàn)。