微軟:Apache就是比較好
2004/03/17 13:00
大家很清楚
Apache大概是微軟最頭痛的對象之一。非常有趣的,微軟執行長Steve Ballmer竟然在奧地利公開
承認:「這是我們自己的錯,如果我們不能提供足夠的特點配上我們伺服器
軟體的價位。當談到在同一個伺服器上同時提供數個網站時,
Apache就是比較好!(
Apache is simply better)。」,那微軟自家的IIS呢?有了這句話,一切盡在不言中。
Apache人氣節節上升
其實在Linux(或其他UNIX-Like的OS中),有好幾個不錯的網頁伺服器,如Apache、Zeus、Netscape(SunONE)、Notes/Domino…等。其中,Apache最受外界矚目。
Apache最早是美國伊利諾大學裡國家超級電算應用中心(NCSA)的Rob
McCool開發出來的,當初取這個名字以尊崇印地安人的高超戰技與堅忍不拔的毅力。Rob1994年離開NCSA後,由8位熱心的Apache
Group成員繼續維護,之後又正式成立了Apache Software Foundation。Apache是目前市占率最高的網頁伺服器。
目前幾乎所有的商用Linux作業系統已事先內建(bundle)了Apache,當然使用者也可自行下載原始程式,然後自行編譯再進行安裝。
如果選擇自行編譯並安裝,初學者最常碰到的問題就是跟原有的檔案搞混,而得出一些莫名其妙的結果。建議在編譯時,特別小心路徑處理,或者乾脆先把原有的Apache移除掉(如rpm -e apache),再編譯Apache程式。
模組化設計與開放
我個人認為,Apache最棒的地方在於其模組化設計與開放,這具體表現在幾個方面:
效能
在Apache1.3時,原始程式是由25,000個C程式組成。由於公開原始碼,許多人貢獻心力幫忙程式除錯,而使該軟體達至最佳化,因而效能表現特
佳,也十分穩定。另一項好處是使用者可選擇自已需要的模組再行編譯,用不上的可不用編譯或掛載,如此一來,Apache執行效能可獲得進一不的提升。例
如,使用者可在httpd.conf檔案中設定,決定使用mod_php、mod_perl,或是mod_SSL等模組。
安全性
在密碼認證支援方面,Apache內建Basic、Digest兩種選擇。密碼儲存部分,Apache也早已支援LDAP、MySQL及PostgreSQL等,也允許使用者自行撰寫密碼認證的模組。
網址自動檢查拼字
網友常常打了一長串的網址(URL)後只因少一個字;或多了一個字,或者是大小寫搞錯,結果經常找不到網頁。Apache有一個很棒的功能就是可以自動檢查拼字。不過,使用者必須手動啟動(speling_module)。
自行修改核心
我曾經遇一家客戶,這家公司的首頁不是一個靜態的網頁,而是一個用C寫的CGI程式,每次有人瀏覽這個網站時,可想而知的,該CGI程式就得自資料庫抓取一堆資料。該網站經常當機,問題其實在於該CGI程式的負擔太重,卻又不願意放棄這個功能。
後來,我們協助這家公司將該CGI功能移至Apache的核心模組之一(mod_perl)後,發現執行速度快了十多倍,而且當機頻率也大幅降低。舉例來說,當你使用資料庫中內建的MAX函式,絕對會比自己另外寫程式來找出最大值快得許多。
還有另一個案例是我們幫忙一家客戶在mod_perl模組中整合某一個程式,將一個目錄中提供下載的檔案,全部都自動壓縮成zip檔案,以大幅減少客戶下
載的時間。其實,可以在Apache上發揮創意的地方太多,這只是其中一例。反觀這些應用,在沒有開放原始碼的IIS中,是非常難以達成的。
內建Proxy功能
Apache也有內建的Proxy功能,您可以自動啟動相關模組(proxy_module)。
替代IIS的其他選擇
實際上,網頁伺服器轉換的最大的問題還是在動態網頁。如IIS上相當重要的ASP,應該要怎麼處理呢?別急,以下幾個方案可酌參考。
Java System ASP
前身原本是有名的Chilisoft,現為昇陽旗下產品線的一員。Java System ASP
可在Linux、Solaris及Windows上執行,支援ASP、XML、VBScript/Jscript、ODBC,且可存取多種資料庫。Java System ASP已與昇陽旗下的Java網頁伺服器事先整合,但也有部分功能可在Apache上執行。
PHP
LAMP(Linux、Apache、Mysql、PHP)的組合已成為相當受歡迎的自由軟體組合。PHP這個在Apache上執行的動態網頁語言,提供的功能類似IIS上的ASP語言。使用者也可以考慮直接將ASP網頁改寫成PHP網頁。
事實上,學習PHP網頁就像ASP網頁一樣的容易。或者您也可以考慮另一個自由軟體-asp2php,其可以協助將ASP網頁自動轉換成PHP網頁。當然,可想見這個方式並無法保證100%的成功率,但至少可節省不少時間。另有一個更簡易的「script2script」可參考。
JSP
像PHP一樣,JSP也是一個不錯的選擇。JSP是昇陽重要的Java貢獻之一,也可在Apache或昇陽的Java Web Server之上執行。另有一個asp2jsp可將ASP網頁自動轉換成JSP網頁。
Perl
老牌的Perl語言在過去也是非常受到開發者歡迎的。創始人Larry
Wall曾形容自己是個懶人,因而創造了這個簡單的程式語言,用以節省撰寫程式的時間。Perl在所有的網頁伺服器(不論是IIS或是Apache),或
是作業系統(包括MAC、Windows、UNIX、Linux…)之上都能夠執行無誤。
ORACLE 9iAS Migration Kit for ASP
甲骨文旗下重要的產品,可以將ASP應用轉換成JSP,而甲骨文也提供很好的資料庫轉換工具。當然,甲骨文的產品並不便宜。
轉換會出現什麼問題?
要由IIS轉換到Linux上,當然無可避免的也會遇到一些問題。例如,靜態網頁與圖檔的複製。這部分問題遭遇的問題通常較少,可慢慢手動複製,只要多花些時間耐心,當然也可使用LSP自動複製。
在目錄權限與虛擬目錄設定方面,Apache已有完整支援。當然,一如Samba,必須對Apache的設定檔案語法有些基本了解,或者可使用Webmin及LSP協助設定,LSP可自動將IIS的設定自動轉換到Apache上。
過去,在協助客戶進行網頁伺服器轉換時,經常發現客戶有幾個常犯的的錯誤,在此供各位參考。
CGI程式的權限
如果沒有仔細設定CGI程式的權限,通常會得到一個「Internal Server
Erro」的錯誤訊息,多數使用者常因此而一頭霧水,不知哪裡出錯。這在IIS上是不太容易發生的。另一種極端的情況是卯起來將目錄、檔案權限全部設成
777,那麼在安全上,恐怕又會製造出一個大漏洞。
忘了啟動某些模組
Apache的模組化相對也製造了一些可能出錯的機會。例如,要使用PHP網頁程式,別忘了在httpd.conf中啟動php_module。尤其是若
想使用某些舊的php3程式,就必須啟動php3_module。另如ssl_module、cgi_module…等也應稍加注意。
密碼認證
如前面所提及,常用的Apache密碼共有Basic、Digest兩種。Basic沒有加密,使用時要格外小心;若選擇Digest加密,經常會忘記啟動Digest。還有,不支援http 1.1格式的瀏覽器遇到Digest密碼將會出現錯誤。
大小寫有關係
例如,在使用FTP上傳檔案時,常常會把檔案小寫傳成大寫,在Windows/IIS上檔名,檔案大小寫並無差別,但用在Linux、Unix與Apache上可是大不相同。
ASP副檔名沿用?
前面已提及可用PHP、JSP或Perl取代原來的ASP網頁。我們曾經執行一個專案,主要是從ASP轉換至PHP(非LSP標準功能),前後花費2個星
期時間,才全部轉換完畢。在測試過程中,我們發現很多自外部搜尋引擎連接至這些ASP檔案的超連結,全部都已失效。主要原因是因為ASP網頁的URL結尾
是 .asp,而PHP網頁的URL結尾是 .php。
幸好,Apache擁有強大的URL重寫功能(不過要花一點時間了解),在設定好之後,可讓所有URL完全不變(即便鍵入xxx.asp),還是可連結至
最新的PHP網頁。一如前面所提及,使用者也可自己寫一個新模組,將所有要連接至.asp副檔名的request,重新導向(redirect)至.
php網頁之上。
一如其他伺服器的轉換一樣,從微軟的IIS到Linux的Web Server轉換,不會是一蹴可幾的任務,但是有了這麼多Open
Source的工具可供選擇,及Sun、Oracle等大廠的加持,相信您對此應該已信心大增。最後,也要感謝微軟執行長Steve
Ballmer對Apache的大力讚揚。
留言列表