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

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

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

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

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

    模塊化設(shè)計(jì)與開(kāi)放

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

    效能

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

    安全性

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

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

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

    自行修改核心

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

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

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

    內(nèi)建Proxy功能

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

    替代IIS的其它選擇

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

    Java System ASP

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

    PHP

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

    JSP

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

    Perl

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

    ORACLE 9iAS Migration Kit for ASP

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

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

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

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

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

    CGI程序的權(quán)限

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

    忘了啟動(dòng)某些模塊

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

    密碼認(rèn)證

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

    大小寫(xiě)有關(guān)系

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

    ASP擴(kuò)展名沿用?

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

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

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

分享到

多易

相關(guān)推薦