有時候Apache給人的感覺是無處不在,每個人都在運行Apache,甚至包括它們的狗也運行有自己的Apache :)。但是即使如此,仍然有很多種其他的Web服務器可供選擇。本文就對目前市場上主流Web服務器進行全面的比較。
一. WEB服務器
Apache無處不在,可以運行在包括Linux、Soloris等多種系統平台之上。Apache在網絡市場是無可爭議的領頭羊。幾乎在任何一本關于網絡管理的教程中關于Web服務器內容討論的都是Apache。當然選擇Apache是由很多非常充足的原因的,畢竟一千六百萬用戶(根據Netcraft調查報告的統計數據)的選擇不大可能是錯誤的。但是也沒有必要一定去跟隨潮流。Web服務也許要多樣性,GNU/Linux的哲學就是更據自己的需要和實際情況選擇適合自己的工具。
也許你的選擇更多的注重于速度和可靠性,而不是嘩眾取寵。也許你僅僅是希望尋找一個干淨、易于配置的Web服務器。不管你的選擇是什麼,總是有很多的軟件可以滿足需求。在本文中,我們將對多種Web服務器進行分析比較,提供給用戶選擇最適合自己的Web服務器的依據。
編寫一個基本的Web服務器是非常簡單的,僅僅需要監听合適的端口,建立連接,發送數據。編寫這樣的服務器一般和客戶端的開發一般總是相輔相成地發展的,兩者的誕生標志著WWW的開始。在九十年代瀏覽器、Web服務器、HTML和HTTP協議都得到了快速的發展。隨後服務器變為由NCSA開發,相應的也變為NCSA Web服務器。瀏覽器由Mosaic變為Netscape Navigator。NCSA目前仍然可以得到,雖然它不再被維護和繼續開發,但是仍然可以免費下載其源代碼。其就是著名的Web服務器Apache的前身。
但是要進行這樣的聯系也需要一個客戶端、一個協議和一個網絡環境。但是當Internet不斷發展,Web服務器需要更多的功能以滿足客戶端對更多動態內容的需求。Apache已經發展出擴展模塊方式來滿足這種需求。但是當Web服務成為很多商務應用都必須面對和采用的技術時,就出現了很多不同Web服務器以滿足這些不同的需求。可伸縮性,可靠性,速合和高級動態功能都是Web服務器應該具有的關鍵因素,特別是在電子商務應用環境中。易于配置和管理對于新手來說也同樣重要。
對于這些所有的特性來說並沒有任何一個特定服務器能完全滿足需求,但是如果你對自己的Web服務的需求有明確的認識,那麼在所有的Web服務器中必然有一個能滿足你的需求。
二. Apache 1.3.19
Apache仍然是最偉大的全能選手,也許它有些過于龐大、歷史悠久,但是其優秀的性能和大量用戶群,它應該會有更好的發展。就它靈活性和豐富的特性功能而言,Apache相對于這里測試的其他Web服務器來說可以說是Web服務器的標準。除非你的在過去的四年里與這個世界相隔離,否則一定會看到大量的新聞文章歡呼Apache的成功,並將其作為開放源碼成功的典範。Apache並不是采用GPL版權聲明,而是采用自己的Apache Server版權聲明,其強調自由地使用源代碼。Apache同樣以"補丁服務器"而聞名,主要是因為早期Apache的開發是通過對NCSA的httpd代碼添加補丁程序來進行的。Apache被看做是"補丁服務器"還因為它具有模塊化特性,該特性實現了Apache的靈活性和可擴展性,而且開發者可以利用該特性很容易地添加第三方功能模塊,通過模塊開發人員可以添加任何功能,模塊是很多內容管理系統的功能基礎,如Midgard,Zope等。
幾乎所有的Linux發布都安裝Apache作為默認配置。SuSE 7.1甚至預安裝有包括各種高級模塊選項的Apache,如PHP3,mod_perl和LDAP等等。用戶會驚奇地發現系統安裝成功就會有一個功能強大的Web服務器可供選擇。雖然安裝Apache並不是非常簡單,但是如果有具有新的特性或安全補丁的Apache發布,則下載源代碼包並編譯新的Apache是值得的。Apache不但具有龐大的用戶群基礎,並且有豐富的配置使用文檔。
Apache的主配置文件為純文本格式的httpd.conf,隨著Apache版本的發展,其他一些配置文件則逐漸消亡,趨向于使用單一的配置文件httpd.conf來存放所有的配置指令,如客戶訪問信息、記錄認證信息和虛擬服務器等等。Apache配置選項采用的是指令模式,配置指令設定各種參數的值,例如︰DocumentRoot設置服務器Web頁面的根目錄。你也可以靈活地設置多個基于IP或基于域名的虛擬Web服務器,這些Web虛擬服務器可以各自定義獨立的DocumentRoot配置指令。而LoadModule指令則用來指定加載不同的模塊來實現對Apache服務器功能的擴充。這些新功能大多是提供服務器端對腳本技術的支持,比如Perl、PHP等。Apache結合使用ApacheJServ可以實現對Java servlets及JSP的支持。
Apache的很多模塊實現安全方面的防護︰如mod_auth提供對對服務器上數據進行適當的保護,而SSL模塊則用來保護服務器和客戶端之間的通信安全。
對于大多數用戶來說,手工編輯冗長的httpd.conf文件顯得枯燥且易出錯。幸運的是Redhat中的Linuxconf和Webmin都提供了非常完善的Apache配置模版。Aapche的GUI項目同樣提供了Comanche和Mohawk來實現對Apache圖形方式配置和管理。這些工具都大大減少了管理和配置Apache的難度,但是對httpd.conf一定理解對于配置高性能服務器來說是非常重要的。
很多地方都聲明Apache並不是最快的Web服務器,Apache的開發者的確是沒有過多地考慮其開發一個超快的Web服務器。而功能和穩定性則是考慮更多的因素。然而Apache在很多負載很大的站點中運行非常正常,並沒有得到過多的關于性能的抱怨。在我們使用Webstone進行性能測試中,發現Apache的吞吐量位居第一,並且出錯最少。在測試中雖然Apache的可擴展性不知最強,但是仍然是提供了如此多特性的服務器中速度最快的。
三. Zeus Webserver3.3.8 服務器
Zeus是一個商業化的Web服務器產品,最近它成為很多業界媒體中的頭條新聞,因為有消息宣稱Zeus服務器的性能在2.4內核+SMP環境下相對于2.2.x內核環境下性能提升了85%之多。速度永遠是Zeus服務器的賣點。常常有評論說如果希望對Linux進行其作為服務器操作系統的性能測試,那麼就運行Zeus進行測試。
Zeus服務器在SMP環境下有優秀的可伸縮性,並實現了常見的特性集合,如訪問控制、動態內容產生和安全等。它具有健壯、集成有集群支持的容錯和負載平衡等特色,是高端應用的很好的選擇。
Zeus服務器的安裝和管理相對比較簡單。軟件是以tar.gz格式的包格式,安裝軟件只需要解壓軟件包並運行一個安裝腳本,在性能適當的機器上安裝過程只需要幾分鐘。而且Zeus服務器安裝以後提供Web方式的遠程管理功能。
對Zeus的管理分為兩個部分︰管理配置部分包含對管理服務器本身的配置和訪問;而Web配置部分則包含對Web服務器的各方面特性的設置,從虛擬服務器設置到集群系統的管理及監控等等方面。默認情況下即使Zeus僅僅運行一個服務器,其也被看做是一個虛擬服務器。和Apache一樣,多個虛擬服務器可以運行在同一台服務器上,同樣虛擬服務器可以是"硬"(基于IP)或"軟"(基于域名)虛擬服務器。
管理服務器的GUI界面非常易于使用,可以輕易生成復雜的多虛擬服務器的配置。使用GUI,不同虛擬服務器的設置可以相互克隆,可以建立集群系統,可以實現類似.htaccess的模塊化配置。監控工具非常不錯,具有對每個虛擬服務器和獨立的集群節點的動態監控。
其功能可以與Apache匹敵,包含易于實現的SSL安全特性和其他有用的特性,如帶寬控制等等。Zeus宣稱支持PHP和Java Servlets。雖然易于使用的管理界面在某種程度上模糊了這些高級的配置特性。PHP4可以通過Zeus支持的API方式(NSAPI)來運行,也可以通過CGI發給你是來運行。但是很多用戶報告這種API方式存在穩定性問題。
高端應用服務器的性能總是難以精確的測試,在負載相對較小情況下進行的測試,盡管很難給出在超負荷情況下服務器的運行情況,仍然具有一定的實用價值。在我們的測試中,Zeus在服務器的吞吐量和響應時間上性能卓越,和Apache一樣它出錯的概率也很少。Zeus具有其它服務器所不具有的漂亮簡潔的GUI配置界面。據報道,Zeus在四個處理器的Linux系統下運行性能良好。要建立高性能的Zeus服務器,相對其它服務器Zeus顯得略為有點繁瑣。
四. iPlanet Enterprise Edition 4.1
Netscape公司為不同操作系統平台開發了多種WEB服務器,但到最近它才發布了自己在Linux下的產品。曾經非常流行的Netscape Enterprise Server現今被運行在Linux下的同類產品iPlanet Enterprise Edition所替代。iPlanet是SUN、Netscape和AOL公司聯合生產的WEB產品,它被力圖設計成高性能、跨平台的e-commerce產品。iPlanet和其它Netscape產品一樣具有很高的性能,而且iPlanet具有SUN公司Java的特性。
iPlanet可以自由下載評估版使用,也可以購買正式版本。因為在壓縮包中包含Java的運行環境JRE,所以iPlanet的壓縮包相對較大。壓縮包被解壓後,一個基于shell的簡單安裝工具可以幫助用戶完成Administration服務器和Web服務器的安裝。所有關于安裝的信息都在這個時候輸入,當然你也可以選擇安裝的選項,如選擇安裝Java組件或者LDAP目錄,以便以後利用LDAP管理用戶和組。
就像現今流行的那樣,iPlanet也允許以瀏覽器方式管理和配置。Administration服務器提供了全面的管理和監測功能,利用它可以重新配置Administration服務器和Web服務器。在集群節點iPlanet服務器環境中,可以在一個Administration服務器中利用群集數據庫管理它們。
iPlanet的多層菜單結構體現了iPlanet豐富的功能,利用菜單選項可以實現WEB服務器的所有管理。iPlanet具有非常有用的在線幫助文檔和完整的SSL加密機制,這些特性保證用戶登陸和現場檢測的安全性。iPlanet允許配置基于IP和名字的虛擬服務器。
現在WEB服務器和WEB應用程序服務器之間的界限變得越來越模糊,iPlanet象其它專業WEB服務器一樣也支持JAVA API,以便提高自己的性能。Enterprise Edition 4.1本身內置JRE,可以和大多數的數據庫互聯,它也支持JSP 1.1的API、Serverlets 2.2的API和Livewire。它擁有功能強大的軟件包,其功能遠遠超過了動態腳本語言。Enterprise Edition 4.1同時也支持傳統的腳本方式,如CGI、NSAPI,因而可以沒有任何問題、方便的從其它產品遷移到iPlanet。
iPlanet具有現今高性能WEB服務器的特性,相對其它WEB服務器iPlanet還提供更多的JAVA功能。在WebStone環境中測試,iPlanet的性能非常良好。雖然iPlanet有時會因服務器端未能響應客戶端的請求而在客戶端產生許多錯誤,但是它的吞吐量和響應時間性能卓越。作為一個昂貴的WEB服務器產品,希望能看到以WebStone作為測試基準的更多的測試結果。如果你在尋找能夠運行標準Java API,並且在Java API環境下運行速度良好的WEB服務器產品,iPlanet當是你的首選。

