Apache人氣節(jié)節(jié)上升

    其實在Linux(或其它UNIX-Like的OS中),有好幾個不錯的網(wǎng)頁服務(wù)器,如Apache、Zeus、Netscape(SunONE)、Notes/Domino…等。其中,Apache最受外界矚目。

    Apache最早是美國伊利諾大學(xué)里國家超級電算應(yīng)用中心(NCSA)的Rob McCool開發(fā)出來的,當(dāng)初取這個名字以尊崇印地安人的高超戰(zhàn)技與堅忍不拔的毅力。Rob1994年離開NCSA后,由8位熱心的Apache Group成員繼續(xù)維護,之后又正式成立了Apache Software Foundation。Apache是目前市占率最高的網(wǎng)頁服務(wù)器。

    目前幾乎所有的商用Linux操作系統(tǒng)已事先內(nèi)建(bundle)了Apache,當(dāng)然使用者也可自行下載原始程序,然后自行編譯再進行安裝。

    如果選擇自行編譯并安裝,初學(xué)者最常碰到的問題就是跟原有的文件搞混,而得出一些莫名其妙的結(jié)果。建議在編譯時,特別小心路徑處理,或者干脆先把原有的Apache移除掉(如rpm -e apache),再編譯Apache程序。

    模塊化設(shè)計與開放

    我個人認(rèn)為,Apache最棒的地方在于其模塊化設(shè)計與開放,這具體表現(xiàn)在幾個方面:

    效能

    在Apache1.3時,原始程序是由25,000個C程序組成。由于公開源代碼,許多人貢獻心力幫忙程序除錯,而使該軟件達(dá)至最佳化,因而效能表現(xiàn)特佳,也十分穩(wěn)定。另一項好處是使用者可選擇自已需要的模塊再行編譯,用不上的可不用編譯或掛載,如此一來,Apache運行效能可獲得進一不的提升。例如,使用者可在httpd.conf文件中設(shè)定,決定使用mod_php、mod_perl,或是mod_SSL等模塊。

    安全性

    在密碼認(rèn)證支持方面,Apache內(nèi)建Basic、Digest兩種選擇。密碼存儲部分,Apache也早已支持LDAP、MySQL及PostgreSQL等,也允許使用者自行撰寫密碼認(rèn)證的模塊。

    網(wǎng)址自動檢查拼字

    網(wǎng)友常常打了一長串的網(wǎng)址(URL)后只因少一個字;或多了一個字,或者是大小寫搞錯,結(jié)果經(jīng)常找不到網(wǎng)頁。Apache有一個很棒的功能就是可以自動檢查拼字。不過,使用者必須手動啟動(speling_module)。

    自行修改核心

    我曾經(jīng)遇一家客戶,這家公司的首頁不是一個靜態(tài)的網(wǎng)頁,而是一個用C寫的CGI程序,每次有人瀏覽這個網(wǎng)站時,可想而知的,該CGI程序就得自數(shù)據(jù)庫抓取一堆數(shù)據(jù)。該網(wǎng)站經(jīng)常當(dāng)機,問題其實在于該CGI程序的負(fù)擔(dān)太重,卻又不愿意放棄這個功能。

    后來,我們協(xié)助這家公司將該CGI功能移至Apache的核心模塊之一(mod_perl)后,發(fā)現(xiàn)運行速度快了十多倍,而且當(dāng)機頻率也大幅降低。舉例來說,當(dāng)你使用數(shù)據(jù)庫中內(nèi)建的MAX函式,絕對會比自己另外寫程序來找出最大值快得許多。

    還有另一個案例是我們幫忙一家客戶在mod_perl模塊中整合某一個程序,將一個目錄中提供下載的文件,全部都自動壓縮成zip文件,以大幅減少客戶下載的時間。其實,可以在Apache上發(fā)揮創(chuàng)意的地方太多,這只是其中一例。反觀這些應(yīng)用,在沒有開放源代碼的IIS中,是非常難以達(dá)成的。

    內(nèi)建Proxy功能

    Apache也有內(nèi)建的Proxy功能,您可以自動啟動相關(guān)模塊(proxy_module)。

    替代IIS的其它選擇

    實際上,網(wǎng)頁服務(wù)器轉(zhuǎn)換的最大的問題還是在動態(tài)網(wǎng)頁。如IIS上相當(dāng)重要的ASP,應(yīng)該要怎么處理呢?別急,以下幾個方案可酌參考。

    Java System ASP

    前身原本是有名的Chilisoft,現(xiàn)為SUN 旗下產(chǎn)品線的一員。Java System ASP 可在Linux、Solaris及Windows上運行,支持ASP、XML、VBScript/Jscript、ODBC,且可存取多種數(shù)據(jù)庫。Java System ASP已與SUN 旗下的Java網(wǎng)頁服務(wù)器事先整合,但也有部分功能可在Apache上運行。

    PHP

    LAMP(Linux、Apache、Mysql、PHP)的組合已成為相當(dāng)受歡迎的自由軟件組合。PHP這個在Apache上運行的動態(tài)網(wǎng)頁語言,提供的功能類似IIS上的ASP語言。使用者也可以考慮直接將ASP網(wǎng)頁改寫成PHP網(wǎng)頁。 事實上,學(xué)習(xí)PHP網(wǎng)頁就像ASP網(wǎng)頁一樣的容易?;蛘吣部梢钥紤]另一個自由軟件-asp2php,其可以協(xié)助將ASP網(wǎng)頁自動轉(zhuǎn)換成PHP網(wǎng)頁。當(dāng)然,可想見這個方式并無法保證100%的成功率,但至少可節(jié)省不少時間。另有一個更簡易的“script2script”可參考。

    JSP

    像PHP一樣,JSP也是一個不錯的選擇。JSP是SUN 重要的Java貢獻之一,也可在Apache或SUN 的Java Web Server之上運行。另有一個asp2jsp可將ASP網(wǎng)頁自動轉(zhuǎn)換成JSP網(wǎng)頁。

    Perl

    老牌的Perl語言在過去也是非常受到開發(fā)者歡迎的。創(chuàng)始人Larry Wall曾形容自己是個懶人,因而創(chuàng)造了這個簡單的程序語言,用以節(jié)省撰寫程序的時間。Perl在所有的網(wǎng)頁服務(wù)器(不論是IIS或是Apache),或是操作系統(tǒng)(包括MAC、Windows、UNIX、Linux…)之上都能夠運行無誤。

    ORACLE 9iAS Migration Kit for ASP

    甲骨文旗下重要的產(chǎn)品,可以將ASP應(yīng)用轉(zhuǎn)換成JSP,而甲骨文也提供很好的數(shù)據(jù)庫轉(zhuǎn)換工具。當(dāng)然,甲骨文的產(chǎn)品并不便宜。

    轉(zhuǎn)換會出現(xiàn)什么問題?

    要由IIS轉(zhuǎn)換到Linux上,當(dāng)然無可避免的也會遇到一些問題。例如,靜態(tài)網(wǎng)頁與圖文件的復(fù)制。這部分問題遭遇的問題通常較少,可慢慢手動復(fù)制,只要多花些時間耐心,當(dāng)然也可使用LSP自動復(fù)制。

    在目錄權(quán)限與虛擬目錄設(shè)定方面,Apache已有完整支持。當(dāng)然,一如Samba,必須對Apache的設(shè)定文件語法有些基本了解,或者可使用Webmin及LSP協(xié)助設(shè)定,LSP可自動將IIS的設(shè)定自動轉(zhuǎn)換到Apache上。

    過去,在協(xié)助客戶進行網(wǎng)頁服務(wù)器轉(zhuǎn)換時,經(jīng)常發(fā)現(xiàn)客戶有幾個常犯的的錯誤,在此供各位參考。

    CGI程序的權(quán)限

    如果沒有仔細(xì)設(shè)定CGI程序的權(quán)限,通常會得到一個“Internal Server Erro”的錯誤信息,多數(shù)使用者常因此而一頭霧水,不知哪里出錯。這在IIS上是不太容易發(fā)生的。另一種極端的情況是卯起來將目錄、文件權(quán)限全部設(shè)成777,那么在安全上,恐怕又會制造出一個大漏洞。

    忘了啟動某些模塊

    Apache的模塊化相對也制造了一些可能出錯的機會。例如,要使用PHP網(wǎng)頁程序,別忘了在httpd.conf中啟動php_module。尤其是若想使用某些舊的php3程序,就必須啟動php3_module。另如ssl_module、cgi_module…等也應(yīng)稍加注意。

    密碼認(rèn)證

    如前面所提及,常用的Apache密碼共有Basic、Digest兩種。Basic沒有加密,使用時要格外小心;若選擇Digest加密,經(jīng)常會忘記啟動Digest。還有,不支持http 1.1格式的瀏覽器遇到Digest密碼將會出現(xiàn)錯誤。

    大小寫有關(guān)系

    例如,在使用FTP上傳文件時,常常會把文件小寫傳成大寫,在Windows/IIS上檔名,文件大小寫并無差別,但用在Linux、Unix與Apache上可是大不相同。

    ASP擴展名沿用?

    前面已提及可用PHP、JSP或Perl取代原來的ASP網(wǎng)頁。我們曾經(jīng)運行一個項目,主要是從ASP轉(zhuǎn)換至PHP(非LSP標(biāo)準(zhǔn)功能),前后花費2個星期時間,才全部轉(zhuǎn)換完畢。在測試過程中,我們發(fā)現(xiàn)很多自外部搜尋引擎連接至這些ASP文件的超級鏈接,全部都已失效。主要原因是因為ASP網(wǎng)頁的URL結(jié)尾是 .asp,而PHP網(wǎng)頁的URL結(jié)尾是 .php。

    幸好,Apache擁有強大的URL重寫功能(不過要花一點時間了解),在設(shè)定好之后,可讓所有URL完全不變(即便鍵入xxx.asp),還是可連結(jié)至最新的PHP網(wǎng)頁。一如前面所提及,使用者也可自己寫一個新模塊,將所有要連接至.asp擴展名的request,重新導(dǎo)向(redirect)至.php網(wǎng)頁之上。

    一如其它服務(wù)器的轉(zhuǎn)換一樣,從微軟的IIS到Linux的Web Server轉(zhuǎn)換,不會是一蹴可幾的任務(wù),但是有了這么多Open Source的工具可供選擇,及Sun、Oracle等大廠的加持,相信您對此應(yīng)該已信心大增。最后,也要感謝微軟CEO Steve Ballmer對Apache的大力贊揚。

分享到

多易

相關(guān)推薦