Apache

Apache

Apache是世界使用排名第一的Web伺服器軟體。它可以運行在幾乎所有廣泛使用的計算機平台上,由於其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到伺服器中。Apache HTTP伺服器是一個模組化的伺服器,源於NCSAhttpd伺服器,經過多次修改,成為世界使用排名第一的Web伺服器軟體。同時Apache音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。也是一個基金會的名稱、一種武裝直升機等等。

基本信息

相關簡介

ApacheApache
Apache是世界排名第一的Web伺服器,世界上50%以上的Web伺服器在使用Apache。1995年4月,最早的Apache(0.6.2版)由Apache Group公布發行。Apache Group是一個完全通過Internet進行運作的非盈利機構,由它來決定ApacheWeb伺服器的標準發行版中應該包含哪些內容。準許任何人修改隱錯,提供新的特徵和將它移植到新的平台上,以及其它的工作。當新的代碼被提交給Apache Group時,該團體審核它的具體內容,進行測試,如果認為滿意,該代碼就會被集成到Apache的主要發行版中。

Apache源於NCSAhttpd伺服器,經過多次修改,成為世界上最流行的Web伺服器軟體之一。Apache取自“apatchyserver”的讀音,意思是充滿補丁的伺服器,因為它是自由軟體,所以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩定,並可做代理伺服器來使用。
本來它只用於小型或試驗Internet網路,後來逐步擴充到各種Unix系統中,尤其對Linux的支持相當完美。Apache有多種產品,可以支持SSL技術,支持多個虛擬主機。Apache是以進程為基礎的結構,進程要比執行緒消耗更多的系統開支,不太適合於多處理器環境,因此,在一個ApacheWeb站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web伺服器,市場占有率達60%左右。世界上很多著名的網站如Amazon、Yahoo!、W3Consortium、FinancialTimes等都是Apache的產物,它的成功之處主要在於它的原始碼開放、有一支開放的開發隊伍、支持跨平台的套用(可以運行在幾乎所有的Unix、Windows、Linux系統平台上)以及它的可移植性等方面。
Apache的誕生極富有戲劇性。當NCSAWWW伺服器項目停頓後,那些使用NCSAWWW伺服器的人們開始交換他們用於該伺服器的補丁程式,他們也很快認識到成立管理這些補丁程式的論壇是必要的。就這樣,誕生了ApacheGroup,後來這個團體在NCSA的基礎上創建了Apache。
Apacheweb伺服器軟體擁有以下特性:
支持最新的HTTP/1.1通信協定
擁有簡單而強有力的基於檔案的配置過程
支持通用網關接口
支持基於IP和基於域名的虛擬主機
支持多種方式的HTTP認證
集成Perl處理模組
集成代理伺服器模組
支持實時監視伺服器狀態和定製伺服器日誌
支持伺服器端包含指令(SSI)
支持安全Socket層(SSL)
提供用戶會話過程的跟蹤
支持FastCGI
通過第三方模組可以支持JavaServlets
如果你準備選擇Web伺服器,毫無疑問Apache是你的最佳選擇。

歷史

初期

ApacheApache
Apache起初由伊利諾伊大學香檳分校的國家超級計算機套用中心(NCSA)開發。此後,Apache Httpd被開放原始碼團體的成員不斷的發展和加強。Apache Http網站伺服器擁有牢靠可信的美譽,已經在全球超過半數的網站中被使用-特別是幾乎所有最熱門和瀏覽量最大的網站。比方說,維基百科網站伺服器就是使用Apache的。

發展

剛開始發展時,Apache只是Netscape網頁伺服器(現在是Sun ONE)之外的開放原始碼選擇之一。慢慢地,它開始在功能和速度超越其他基於Unix的HTTP伺服器。到了Apache 2.x的時代,實際效率又比Apache 1.x更快,2.x比1.x能同時服務更多的網頁連線數。
1996年4月以來,Apache一直是Internet上最流行的HTTP伺服器:1999年5月它在57%的網頁伺服器上運行,到了2005年7月這個比例上升到了69%。在2005年11月最風光的時候達到接近70%的市占率,不過在部份擁有大量域名的主機域名商轉換為微軟IIS平台後,Apache市占率近年來體現些微下滑。同時搜尋引擎巨擘Google自己的網頁伺服器平台GWS推出後(也可說是一種修改版的Apache),再加上nginx、Lighttpd等輕量化網頁伺服器軟體在市場上有一些能見度,這些因素都反應在整體網頁伺服器市占率的消長,Apache的市占率就隨之滑落。根據en:Netcraft在2009年2月的最新統計數據,Apache的市占率已經降為49.41%,IIS降為34%,GWS 8.39%,nginx 2.95%。儘管如此,Apache仍舊是當前網際網路市場上,市占率最高的網頁伺服器軟體。

命名

作者宣稱因為Apache這個名字好記,所以才在最初選擇它,但是流傳最廣的解釋是(也是最顯而易見的):這個名字來自於一個事實:當Apache在1995年初開發的時候,它是由當時最流行的HTTP伺服器NCSA HTTPd 1.3 的代碼修改而成的,因此是“一個修補的(a patchy)”伺服器。然而,在Apache伺服器官方網站的FAQ中是這么解釋的:“Apache這個名字是為了紀念名為Apache的美洲原住民印第安人的一支,眾所周知他們擁有高超的作戰策略和無窮的耐性”。無論如何,Apache 2.x 分支不包含任何 NCSA 的程式代碼。

特性

ApacheApache
Apache的特性:

1、幾乎可以運行在所有的計算機平台上。
2、支持最新的HTTP/1.1協定。
3、簡單而且強有力的基於檔案的配置(HTTPD.CONF)。
4、支持通用網關接口
5、支持虛擬主機
6、支持HTTP認證。
7、集成PERL。
8、集成的代理伺服器
9、可以通過WEB瀏覽器監視伺服器的狀態,可以自定義日誌。
10、支持伺服器端包含命令(SSI)。
11、支持安全SOCKET層(SSL)。
12、具有用戶會話過程的跟蹤能力。
13、支持FASTCGI。
14、支持JAVASERVLETS。

參數

ApacheApache
1、獲得Apache:獲得apache原始碼最方便的方法是到http://www.apache.org,選擇最新的版本。然後,tarxvzfapache_x.x.xx.tar.gz;

2、編譯Apache在src目錄下./configure可用./configure--help|less得到幫助,make,makeinstall,install;

3、apache的啟動和關閉sbin/apachectlstartsbin/apachectlstopsbin/apachectlrestart(重起);

4、一些模組介紹:下列的組模組令和組檔案的基本的驗證。auth-anon使用匿名的FTP-styleusernames和口令。auth-dbm使用BerkeleyDB檔案存儲usernames,口令,和組信息。如果你有很多usernames並關心性能,這是很有用的。digest使用HTTP文摘認證,這比基本認證更安全。expire模組讓你定製Expire過期時間;

5、Apache1.3的預設目錄布局是:./bin伺服器二進制,apachectl原本./confApache配置檔案./include/apacheApache標題檔案./libexec共用的對象檔案./manman頁./sbin伺服器二進制,apachectl原本,logrotator./cgi-bin預設CGI原本/二進制的目錄./share/htdocs預設檔案根./htdocs/manualApache手冊./share/icon包含各種圖示GIFs的目錄./var/apache/loglog檔案的目錄./var/apache/proxyproxy快取目錄./var/apache/runhttpd.pid(包含主要的httpd過程標識符的檔案)在此目錄;

6、主要檔案如下:httpd.conf,在/usr/local/apache/conf或/etc/httpd/conf下apachectl,在/usr/local/apache/bin或/etc/httpd/bin下access_log,紀錄用戶訪問信息,在../logs里error_log,紀錄用戶訪問錯誤信息,也在../logs里;

7、httpd.conf基本設定Port,Apache在哪一個TCP連線埠進行偵聽,HTTP的默認連線埠為80。如果你使用其它連線埠,你不得不在URLs中指定連線埠來連線你的伺服器,User,Group由於安全上的原因,在Linux上,可以通過把User和Group都設定成nobody Server Root參數應該是Apache安裝的基礎。除非你移動了周圍的資料,否則其值與你所給定的值一樣。Server Name,如果你的機器有多個名稱或者IP位址,設定Apache表征伺服器的名稱。Document Root是Web樹的根目錄,UserDir在啟用~username處理請求時,此指令告訴Apache哪個目錄追加到用戶的主目錄(home)。UserDir被設定為public_html。用戶將只有基本的網頁服務功能,是一個容器指令。格式的結束指令。及相關的和指令的目的,是為了讓你在每個目錄或者每個檔案的基礎上,控制Apache行為的方式。指令放在中,也適用於子目錄。

FollowSymLinks選項,告訴Apache它可以從文檔根目錄內部到文檔根目錄外部跟蹤符號連結。在文檔根目錄內部,FollowSymLinks和Indexes都處於開啟狀態(on)。萬一預設的索引檔案(通常為index.html)不存在時,最後允許目錄列表顯示。

指令設定

ApacheApache
Directory中,用Options指令你可以控制什麼選項是被允許的。

Options指令:

1、ExecCGICGI腳本程式能夠運行於該目錄樹。

2、FollowSymLinks在該目錄中,伺服器將跟蹤符號連結。注意:即使伺服器跟蹤符號連結,它也不會改變用來匹配不同區域的路徑名。注意:如果在區域內設定,該選項會被忽略。

3、Includes伺服器端包容被允許。

4、IncludesNOEXEC伺服器端引用被允許,但#exec命令和CGI腳本程式的#include被禁止。

5、Indexes如果要求映射到目錄的URL和在該目錄里沒有DirectoryIndex(例如,index.html),那么伺服器將返回格式化的目錄列表。

6、MultiViews處理多重瀏覽內容被允許。

7、SymLinksIfOwnerMatch通過與用戶id一樣的連結,伺服器只跟蹤目標檔案或者目錄所擁有的符號連結。

8、All除MultiViews外的一切東西。要是沒有Options指令,默認為all。

Access File Name命令來設定(預設設定為.htaccess)。在任何目錄中,Apache配置指令可被放入一個叫做.htaccess的檔案。指令也可套用於目錄里的子目錄。在訪問檔案中,

Allow Override控制哪個指令將被使用。如果Allow Override被設定為none。Apache甚至不會檢查訪問檔案。

Allow Override參數:

1、AuthConfig,授權指令哪一個允許使用;

2、FileInfo,用來控制文檔類型和處理方法的指令;

3、Indexes,使用其中的一個指令來控制目錄列表、圖示等的顯示;

4、Limit,允許使用指令來控制主機訪問;

5、Options,使用Options指令中的一個。

“allow”和“deny”指令就是用來控制訪問的。第三個指令“order”,控制這些指令的使用順序。如果你把順序設定成allow,deny,而沒有指定哪個主機是被拒絕的話,則所有主機都被假定為禁止訪問。在本例子中,allow指令被選中,deny指令被普遍套用。在.htaccess檔案或者指令內,更多典型的配置可能是:orderallow,denyallowfromalldenyaaa.com所有主機被允許,除了那些來自aaa.com域的主機。

如果相反,orderdeny,allowdenyfromallallowfrom11.23.44deny首先被檢查。只有來自11.23.44IP網路的主機才被允許訪問。它也可能指定網路掩碼,參數11.23.44.0/255.255.255.0相當於上面的例子。

配置

ApacheApache
1、支持用戶個人主頁:在../conf/httpd.conf中加入UserDir/home/*/public_html設定用戶可以使用CGI等:optionsExecCGISetHandlercgi-bin#如果在全局設定了AddHandlercgi-bin.cgi。

2、虛擬主機設定:

基於IP的虛擬主機若該機器的IP地址為192.168.0.2,虛擬的IP為192.168.0.3首先,在一台機器的網卡上綁定多個IP位址去服務多個虛擬主機。

/sbin/ifconfigeth0:0192.168.0.2netmask255.255.255.0broadcast192.168.11.255up
/sbin/routeadd-host192.168.0.2eth0:0
設定../conf/httpd.conf檔案:看DocumentRoot是什麼,如果為/home/httpdDocumentRoot/home/httpd/aaa創建目錄/home/httpd/aaa。

基於名字的虛擬主機:編輯../conf/httpd.conf

NameVirtualHost192.168.0.2DocumentRoot/home/httpd/aaaServerNameaaa.yourdomain.com

要有NameVirtualHost在最前面,下面依次為各個虛擬主機,還需要把aaa.yourdomain.com的DNS都指向IP位址192.168.0.2

3、Apache用戶認證基本的Apache用戶認證假定,對目錄/home/aaa下的檔案需要做到用戶認證,在httpd.conf中加入下面的行allowoverrideauthconfigorderallow,denyallowfromall用在目錄/home/aaa下放檔案.htaccess,內容如下:authname"PleasegivemeyourIDnumberandPassword"authtypebasicauthuserfile/etc/.passwdrequirevalid-user

用htpasswd生成檔案/etc/.passwd,htpasswd-c/etc/.passwdusername

發展過程

Apache起初由伊利諾伊大學香檳分校的國家超級電腦套用中心(NCSA)開發。此後,Apache被開放原始碼團體的成員不斷的發展和加強。Apache伺服器擁有牢靠可信的美譽,已用在超過半數的網際網路站中-特別是幾乎所有最熱門和訪問量最大的網站。
開始,Apache只是Netscape網頁伺服器(現在是SunONE)之外的開放原始碼選擇。漸漸的,它開始在功能和速度超越其他的基於Unix的HTTP伺服器。1996年4月以來,Apache一直是Internet上最流行的HTTP伺服器:1999年5月它在57%的網頁伺服器上運行;到了2005年7月這個比例上升到了69%。在2005年11月的時候達到接近70%的市占率,不過隨著擁有大量域名數量的主機域名商轉換為微軟IIS平台,Apache市占率近年來呈現些微下滑。而Google自己的網頁伺服器平台GWS推出後,加上Lighttpd這個輕量化網頁伺服器軟體使用的網站慢慢增加,反應在整體網頁伺服器市占率上,根據netcraft在2007年7月的最新統計數據,Apache的市占率已經降為52.65%,8月時又滑落到50.92%。儘管如此,它仍舊是現階段網際網路市場上,市占率最高的網頁伺服器軟體。
廣的解釋是(也是最顯而易見的):這個名字來自這么一個事實:當Apache在1995年初開發的時候,它是由當時最流行的HTTP伺服器NCSAHTTPd1.3的代碼修改而成的,因此是“一個修補的(apatchy)”伺服器。然而在伺服器官方網站的FAQ中是這么解釋的:“‘Apache’這個名字是為了紀念名為Apache(印地語)的美洲印第安人土著的一支,眾所周知他們擁有高超的作戰策略和無窮的耐性”。無論如何,Apache2.x分支不包含任何NCSA的代碼。

相關替代品

ApacheApache
Apache是目前最流行的Web套用伺服器:占據了網際網路套用伺服器70%以上的份額。Apache能取得如此成功並不足為奇:它免費、穩定且性能卓越;但Apache能取得如此佳績的另一個原因是,當時網際網路剛剛興起時,Apache是第一個可用的Web套用伺服器,人們沒有其他的選擇。

不可否認,Apache是一個優秀的全能Web伺服器,但對於那些需要更強大的Web套用伺服器(比如大小、可定製、回響速度、可擴展性等方面)的人而言,Apache明顯不符合他們的要求,尋找Apache的替代者是更好的選擇。

下面所列出的是當前可以替代Apache的幾個熱門Web套用伺服器,他們的特點和適用的套用場景各不相同,但都是針對Apache所不夠擅長的某一方面設計的。
1、Lighttpd
最流行的Apache伺服器替代者,Lighttpd是一個單執行緒的針對大量持續連線做出專門最佳化的Web伺服器(這正是多數高流量網站和應用程式需要的)。眾多的流行Web站點選擇Apache,包括Youtube、SourceForge和維基百科。Lighttpd支持FastCGI、HTTP伺服器端壓縮、mod-rewrite和其他眾多有用的功能。儘管Lighttpd擁有Apache的絕大多數功能,但它仍然保持輕量級(僅1MB)並且可以與Apache使用相同的配置。
2、Nginx
Nginx是一個來自俄羅斯的流行的Web套用伺服器,它被套用於大量的俄羅斯的高並發站點,俄羅斯的搜尋引擎網站rambler就是基於Nginx構建的。Nginx對靜態頁面的支持相當出色,輕量且免費。Nginx不支持CGI,但是支持更靈活的FastCGI。PHP5.2及之前的版本比較多的是使用PHP-FPM來管理PHPFastCGI進程。PHP-FPM使用給PHP源碼打補丁後編譯的方式讓新手多少有些難上手,但從PHP5.3.2開始內置PHP-FPM,只需編譯PHP時啟用PHP-FPM。
3、Boa
很多的網站管理員對在硬體配置較低的伺服器上使用輕量級的Boa作為Web伺服器極其信賴。Boa是一個單執行緒的HTTP伺服器,這意味著Boa只能依次完成用戶的請求而不會fork新的進程來處理並發請求。Boa的設計目的是速度和安全,對於運行於單伺服器的流行Web站點而言,Boa是一個好的選擇。
4、Jigsaw
Jigsaw是W3C推出的開源的Web伺服器平台,使用Java語言編寫,可以安裝在有Java運行環境的系統上。做為W3C(WorldWideWebConsortium)開發的伺服器產品,其作用主要是對新技術的實現做一個例示,而非一個全功能的商業伺服器產品。不過就Jigsaw2.0版本而言,它的功能還是超過了目前Web伺服器的平均水平。最重要的是,它體現了未來HTTP協定和基於對象的Web伺服器技術的發展。如果你希望你的平台支持所有下一代技術,Jigsaw是一個好的選擇。
以上所提到的四個ApacheWeb伺服器的替代者只是目前眾多優秀套用伺服器產品的一部分。

版本發布
2012年08月18日,ApacheHTTPServer2.4.3發布。
2012年08月23日,ApacheHTTPServer2.2.23發布。

相關搜尋

熱門詞條

聯絡我們