Linux下Tomcat與Apache Web伺服器整合

來源:互聯網
上載者:User
apache|web|web服務|web伺服器   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的Proxy 伺服器。

該方法會在主伺服器中使用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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.