linux下tomcat與apache web服務器的整合


http://www.webjx.com  更新日期:2006-03-14  網頁教學網  瀏覽次數:

1、引言
基於web技術的internet/intranet近年來已經得到了廣泛的應用,intranet是以tcp/ip協議爲基礎、以web爲核心的企業內部網,用戶通過低成本、簡單易用的客戶瀏覽器就能隨時隨地到企業的web站點上查閱自己所需的數據。瀏覽器客戶端操作界面的一致性避免了c/s模式客戶端程序的多樣性,而服務器端的開放和基於標準的連接方案使企業很方便地通過internet同外界聯繫;同時,web信息動態的、交互式的發佈方式從根本上改變了企業的服務質量,增加了企業的商業機會。
在許多用戶看來,一個web網站的成敗主要在於它所提供的內容和功能,而支持這些內容和功能的web服務器起着非常重要的作用。

2、tomcat容器
tomcat是一個免費的開源的serlvet容器,它是apache基金會的jakarta項目中的一個核心項目,由apache,sun和其它一些公司及個人共同開發而成。由於有了sun的參與和支持,最新的servlet和jsp規範總能在tomcat中得到體現。
tomcat是穩固的獨立的web服務器與servlet container,不過,其web服務器的功能則不如許多更健全的web服務器完整,如apache web服務器(舉例來說,tomcat沒有大量的選擇性模塊)。不過,tomcat是自由的開源軟件,而且有許多高手致力於其發展。

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)在終端中轉到j2sdk-1_4_2_04-linux-i586-rpm.bin所在的目錄,輸入命令chmod +x j2sdk-1_4_2_04-linux-i586-rpm.bin,添加執行的權限。

3)執行命令./j2sdk-1_4_2_04-linux-i586-rpm.bin,生成j2sdk-1_4_2_04-linux-i586.rpm的文件。

4)執行命令chmod +x j2sdk-1_4_2_04-linux-i586.rpm,給j2sdk-1_4_2_04-linux-i586.rpm添加執行的權限。

5)執行命令 rpm –ivh j2sdk-1_4_2_04-linux-i586.rpm ,安裝j2sdk。

6)安裝界面會出現授權協議,按enter鍵接受,把j2sd安裝在/usr/java/j2sdk1.4.2_04。

7)設置環境變量,在 /etc/profile.d/目錄下建立文件java.sh,文件的內容如下:
#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)執行命令chmod 755 /etc/profile.d/java.sh,給java.sh分配權限。

9)在終端中分別執行命令javac –help和java –version,如果看到有關的信息,則表示j2sdk已成功安裝。

    接下來安裝tomcat,安裝tomcat的步驟如下:
1)訪問http://jakarta.apache.org/tomcat/index.html,下載二進制版的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)執行startup.sh即可在http://localhost:8080/ 訪問到tomcat的缺省面頁.

2.2單獨運行tomcat的優點
1)容易架設。下載tomcat,設定一些配置,就完成了。不需要花費時間將web服務器的連接器整合至其它的web服務器中。
2)不需要擔心連接器。永遠不需要排除在其它web服務器與tomcat之間的任何性能或聯機方面的問題。
3)有較佳的安全防護。相對於其它以c、c++所編寫的web服務器,tomcat比較能忍受遠程緩衝區溢位的攻擊。因爲tomcat的java虛擬機是位於網絡及操作系統之間,它可以防止幾乎所有類型的緩衝區溢位攻擊。使用tomcat的安全防護領域,可以指定對各個資源的訪問。
4)容易移植。可以將tomcat服務器(以及應用程序)移植到不同的服務器、操作系統甚至架構上。因爲tomcat是以java編寫的,因此可以將其整個目錄結構的內容複製到其它計算機上運行,而完全不需要任何改變,甚至於新的計算機的架構與原來的不同也一樣。

2.3單獨運行tomcat的缺點
1)tomcat的支持軟件比較少。tomcat內建web服務器的支持軟件比apache httpd web服務器少。
2)tomcat的web服務器功能少。相對於tomcat web服務器,apache httpd服務器有更完整的功能。
3)雖然tomcat運行速度快,但還沒有apache httpd快。tomcat服務器比apache httpd慢,不過,它還在改進中,而且仍然非常快,快到足以運行今日大多數的企業網站,只是在提供靜態頁面內容上沒有apache快。

3、apache web服務器
apache是根據ncsa的服務器發展而來的,ncsa是最早出現的web服務器程序之一,由伊利諾斯大學urbana-champaign分校的美國國家超級計算應用中心開發。在發展初期,apache主要是一個基於unix系統的服務器,它的宗旨就是建成一個基於unix系統的、功能更強、效率更高並且速度更快的www服務器,這就決定了它是從其他的服務器演變而來的,並且添加了大量補丁來增強它在某一方面的性能,所以它就被命名爲“apa+chy server(一個補丁組成的服務器)”。發展到今天,apache已經被移植到很多平臺上了。
apache的開發遵循gpl協議,由全球的志願者一起開發和維護。在保持強大的功能及不斷更新的同時,它仍然是免費的,並且公開源代碼。

3.1 安裝apache服務器
可以通過以下三種方法安裝apache服務器。
1)如果安裝的linux版本中帶用apache的話,就在選擇所要安裝的服務器的時候,將httpd這個服務選上,linux安裝程序將自動完成apache的安裝工作,並做好基本的配置。
2)使用可執行文件軟件包,這比較適合那些對編譯工作不是太熟悉的初級用戶,因爲它相對比較簡單。下載軟件包apache_1.2.4.e.tar.gz ,執行命令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服務器充分利用起來的話,就一定要自己編譯apache 定製其功能。 下載包含apache源代碼的軟件包apache_1.2.4.tar.gz;然後用tar命令將它解開;將當前目錄改變爲apache源代碼發行版的src目錄;將配置樣本文件(configuration.tmpl)複製爲configuration文件;編輯configuration文件中的配置選項:
makefile配置選項:一些編譯選項:
. “cc=”一行指定用什麼編譯軟件編譯,一般爲“cc=gcc”;如果需要將額外的標誌(參數)指定給c編譯軟件,可以使用:
extra_cflags=
extra_lflags=
如果系統需要特殊的庫和包含文件,可以在這裏指定它們:
extra_libs=
extra_includes=
如果要改變代碼優化設置的話,須將下面一句去掉註釋,然後改成所需要的值:
#optim=-o2

rule配置選項:用來決定需要什麼功能,一般情況下無需改變。

模塊配置:模塊是apache的組成部分,它爲apache內核增加新功能。通過使用模塊配置,可以自定義在apache服務器中需要什麼功能,這個部分也是apache靈活性的表現。模塊配置行如下所示:
addmodule modules/standard/mod_env.o
如果需要apache服務器具備什麼功能,就將那個模塊用addmodule語句加到配置文件configuration中去。
下面列出了apache的模塊功能:
模塊名    功能 缺省
mod_access    提供基於主機的訪問控制命令   y
mod_actions   能夠運行基於mime類型的cgi腳本或http請求方法         y
mod_alias   能執行url重定向服務  y
mod_asis    使文檔能在沒有http頭標的情況下被髮送到客戶端    y
mod_auth    支持使用存儲在文本文件中的用戶名、口令實現認證    y
mod_auth_dbm   支持使用dbm文件存儲基本http認證    n
mod_auth_mysql   支持使用mysql數據庫實現基本http認證 n
mod_auth_anon   允許以匿名方式訪問需要認證的區域       y
mod_auth_external   支持使用第三方認證  n
mod_autoindex   當缺少索引文件時,自動生成動態目錄列表    y
mod_cern_meta   提供對元信息的支持  n
mod_cgi    支持cgi  y
mod_dir    能夠重定向任何對不包括尾部斜槓字符命令的請求    y
mod_env       使你能夠將環境變量傳遞給cgi或ssi腳本    n
mod_expires    讓你確定apache在服務器響應請求時如何處理expires     y
mod_headers    能夠操作http應答頭標       y
mod_imap    提供圖形映射支持  n
mod_include    使支持ssi  n
mod_info       對服務器配置提供了全面的描述       y
mod_log_agent    允許在單獨的日誌文件中存儲用戶代理的信息    n
mod_log_config   支持記錄日誌       y
mod_log_referer     提供了將請求中的referer頭標寫入日誌的功能    n
mod_mime    用來向客戶端提供有關文檔的元信息   y
mod_negotiation   提供了對內容協商的支持       y
mod_setenvif    使你能夠創建定製環境變量       y
mod_speling    使你能夠處理含有拼寫錯誤或大小寫錯誤的url請求     n
mod_status    允許管理員通過web管理apache       y
mod_unique_id 爲每個請求提供在非常特殊的條件下保證是唯一的標識  n
在src目錄下執行:“. /configure”;
編譯apache:執行命令“make”;
將編譯好的可執行文件httpd複製到/etc/httpd/bin目錄下;將apache發行版的配置文件:access.conf、httpd.conf、mime.types、srm.conf文件複製到/etc/httpd/conf目錄下。到此爲止,安裝完成。

3.1單獨運行apache httpd的優點
   1)apache httpd比tomcat內建的web服務器快。
   2)較多的軟件支持。apache httpd有龐大的支持軟件鏈接庫。
3)啓動與停止快。一般來說,apache httpd的啓動與停止時間都比tomcat短。

3.2單獨運行apache httpd的缺點
   1)架設比較困難。比起單獨運行tomcat,安裝apache web服務器並讓它與tomcat協同運行要複雜很多。
   2)會拖慢動態網頁內容的服務。
   3)安全漏洞。apache httpd比較容易受到緩衝區溢位的攻擊。
   4)升級比較複雜。

4、tomcat與apache的整合
有幾種將tomcat整合到apache httpd web服務器的方法:
1)架使用不同的端口號分擔負載。
該方法是最容易實現的,只需要在現成的網頁目錄中假如url以連接到在同一臺web服務器機器上的tomcat web服務器端口(如8080)。實際上還是執行兩個完整的web服務器程序,彼此之間並沒有真正的整合。

2)從apache將請求發送至tomcat的代理服務器。
該方法會在主服務器中使用http的代理機制。代理機制常會用來將來自網關上運行的web服務器的web信息流重新路由至外部因特網上的網站。不過,也可以用來將網站區域或目錄的信息流重導至tomcat web服務器。

3)使用mod_jk2連接器。
該方法使用運行於現有的apache httpd web服務器之內的連接器模塊(如mod_jk),並經由特定的協議快速地將請求轉送至tomcat。這是將tomcat連接至apache httpd的標準方式。

4)       單一進程中執行兩個程序。
該方法通過讓jvm在apache httpd的進程空間中運行的方式,可以提供“完全整合”的功能。這是最有效的辦法,但也是最依賴於服務器的實現。

【參考文獻】
[1] jason brittain,ian f. darwin,tomcat: the definitive guide,2003
[2] jason brittain,ian f. darwin著,o’reilly taiwan譯,朱恩從改編,tomcat權威指南,2004
[3]http://www.apache.org
[4]http://www.bb.gilet.edu.cn

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章