歷史
Apache最初是由伊利諾伊大學厄巴納-香檳分校的國家高級計算中心開發的。從那以後,Apache被開源社區的成員不斷開發和加強。Apache服務器有著可靠和可信的聲譽,已經在超過壹半的互聯網網站上使用——尤其是幾乎所有最熱門和訪問量最大的網站。
起初,Apache只是Netscape Web server(現在的Sun ONE)的壹個開源替代產品。漸漸地,它開始在功能和速度上。超越其他基於Unix的HTTP服務器。Apache自1996年4月以來壹直是互聯網上最受歡迎的HTTP服務器:1999年5月,它運行在57%的web服務器上;到2005年7月,這壹比例上升到69%。
作者聲稱最初選擇這個名字是因為它容易記憶,但最流行的解釋是,這個名字來自於1995年初開發Apache時,修改了當時最流行的HTTP服務器NCSA HTTPd 1.3的代碼,因此它是“壹個拼湊”的服務器。但在服務器官網的FAQ中是這樣解釋的:“‘阿帕奇’這個名字是為了紀念美國印第安人中壹個名叫阿帕奇(印地語)的分支,眾所周知他們擁有高超的戰鬥策略和無盡的耐心。”無論如何,Apache 2.x分支不包含任何NCSA代碼。
特點
Apache支持很多特性,大部分都是通過編譯好的模塊實現的。這些特性包括從服務器端編程語言支持到身份驗證方案。壹些公共語言接口支持Perl、Python、Tcl和PHP。常見的認證模塊包括mod_access、mod_auth和mod_digest。其他例子有SSL和TLS支持(mod_ssl)、代理模塊、有用的URL重寫(由mod_rewrite實現)、定制的日誌文件(mod_log_config)和過濾支持(mod_include和mod_ext_filter)。Apache日誌可以通過web瀏覽器使用免費腳本AWStats或Visitors進行分析。
2.x版本
Apache的2.x版本對Apache 1.x版本進行了重要的增強。這包括:線程、對非UNIX平臺(如Windows)的更好支持、新的Apache API和IPv6支持。
評價
2004年8月,《PC Magazine》2004評選出10過去30年最佳軟件產品。他們中的壹些人要麽有最輝煌的歷史,要麽最有創造力。它對apache的評價是:第三名:Apache (Apache,1995介紹)Apache現在已經進化成了壹個“燈”,即Linux、Apache、MySQL和PHP的結合體。這是壹個開源軟件項目,已經對微軟構成了嚴重的威脅”。NET”戰略。尤其是Apache web server,讓用戶充分體驗開發源碼軟件的穩定性、可靠性和定制性。
當Apple.com評論apache時,他說:Apache是不斷發展的服務器軟件的壹個重要部分。它是免費的,但卻是無價的。Apache是資源開放運動中的絕對寶藏,因為它不是個人專利而是對公眾免費的。壹旦妳有了這些源代碼,程序員就可以自由地做他們想做的事情——當其他程序員接管他們的工作時,他們可以被賦予同樣的權利來改變和修改他們自己的源代碼。
給…作註解
雖然新的漏洞不斷被發現,但由於其開源的特性,總是可以很快被修復。所以總的來說,它的安全性還是相當高的。
()[# page _ #][# page _ #]AddHandler CGI-script。計算機生成圖像
AddHandler服務器已解析。shtml
Sethandler cgi腳本
AddHandler定義哪個擴展名由哪個字符串描述。
SetHandler指定目錄中的所有文件都由該字符串描述。
我在這裏提到的命令與它們的結構密切相關。下面將描述處理程序和類型之間的關系。很多東西從外面看不清楚。下面,我們從內部來看。
程序的基本結構
-
Apache是非常跨平臺的。為了實現這個目標,簡化模塊編寫者的負擔,Apache完成了很多基本功能,比如IO和內存分配,這些功能都是獨立於具體平臺的。還有壹些有用的例程,比如Hashtable和Array。在整個系統中,Apache有壹個基本點,盡可能使用簡單的結構和算法,不僅易於理解和維護,而且提高了其穩定性。
在UNIX系統上,Apache在窗口上采用多進程模型和多線程模型。在多流程模型中,子流程處理客戶請求,父流程管理子流程。當系統過載時,父進程將啟動多個子進程。當系統空閑時,父進程會殺死幾個子進程。子進程的數量介於“MinSpareServers”和“MaxSpareServers”之間。而且每個子進程處理的請求數量有限,可以解決內存泄漏等問題。所有進程狀態都記錄在共享內存中。由於每個進程的狀態都記錄在壹小塊內存中,通常只讀寫這壹塊內存,所以Apache不使用任何同步機制。
Apache使用了Richard Steve的書中提到的幾種多進程服務器模型,並根據它們的特點選擇在不同的系統上使用不同的方法:
1.接受:
只有在內核級實現accept時,才有可能在accept時阻塞。
2.選擇:
選擇時阻塞。
3.互斥/鎖文件:
使用mutex或lock_file互斥accpet。
三種方式都需要屏蔽,區別是屏蔽不壹樣。前兩種方法會造成所謂的巨人組問題:同壹資源上阻塞的多個進程同時被喚醒,會導致重新競爭。但是根據理查德·史蒂夫的評價,第壹種方法最快,第二種是第二種,第三種最慢。事實上,第三種方法在linux上也會出現巨人集團問題。
雖然Apache不強調性能,但不代表他們不重視性能。反而Apache認為realiable是服務器端第壹,但是Apache的表現還是不錯的。