Apache

Apache

Web服務器軟件
Apache是世界使用排名第一的Web服務器軟件。[1]它可以運行在幾乎所有廣泛使用的計算機平台上,由于其跨平台和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,将Perl/Python等解釋器編譯到服務器中[2]。Apache HTTP服務器是一個模塊化的服務器,源于NCSAhttpd服務器,經過多次修改,成為世界使用排名第一的Web服務器軟件。同時Apache音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。也是一個基金會的名稱、一種武裝直升機等等。
  • 中文名:阿帕奇
  • 外文名:Apache HTTP Server
  • 别名:
  • 使用類型:網頁服務器軟件
  • 開發者:Apache Software Foundation
  • 支持語言:英文
  • 編程語言:C
  • 語言版本:英文
  • 軟件授權:Apache License
  • 兼容性:類UNIX系統,Windows
  • 許可協議:Apache許可證2.0
  • 原作者:Robert McCool
  • 操作系統:Cross-platform
  • 開發狀态:活躍
  • 初始版本:1995

相關簡介

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

Apache源于NCSAhttpd服務器,經過多次修改,成為世界上最流行的Web服務器軟件之一。Apache取自“a patchy server”的讀音,意思是充滿補丁的服務器,因為它是自由軟件,所以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩定,并可做代理服務器來使用。

本來它隻用于小型或試驗Internet網絡,後來逐步擴充到各種Unix系統中,尤其對Linux的支持相當完美。Apache有多種産品,可以支持SSL技術,支持多個虛拟主機。Apache是以進程為基礎的結構,進程要比線程消耗更多的系統開支,不太适合于多處理器環境,因此,在一個Apache Web站點擴容時,通常是增加服務器或擴充群集節點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務器,市場占有率達60%左右。世界上很多著名的網站如Amazon、Yahoo!、W3Consortium、Financial Times等都是Apache的産物,它的成功之處主要在于它的源代碼開放、有一支開放的開發隊伍、支持跨平台的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平台上)以及它的可移植性等方面。

Apache的誕生極富有戲劇性。當NCSAWWW服務器項目停頓後,那些使用NCSA WWW服務器的人們開始交換他們用于該服務器的補丁程序,他們也很快認識到成立管理這些補丁程序的論壇是必要的。就這樣,誕生了Apache Group,後來這個團體在NCSA的基礎上創建了Apache。

Apacheweb服務器軟件擁有以下特性:

支持最新的HTTP/1.1通信協議

擁有簡單而強有力的基于文件的配置過程

支持通用網關接口

支持基于IP和基于域名的虛拟主機

支持多種方式的HTTP認證

集成Perl處理模塊

集成代理服務器模塊

支持實時監視服務器狀态和定制服務器日志

支持服務器端包含指令(SSI)

支持安全Socket層(SSL)

提供用戶會話過程的跟蹤

支持FastCGI

通過第三方模塊可以支持Java Servlets

如果你準備選擇Web服務器,毫無疑問Apache是你的最佳選擇。

曆史

初期

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

發展

剛開始發展時,Apache隻是Netscape網頁服務器(現在是Sun ONE)之外的開放源代碼選擇之一。慢慢地,它開始在功能和速度超越其他基于Unix的HTTP服務器。到了Apache2.x的時代,實際效率又比Apache1.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%,GWS8.39%,nginx2.95%。盡管如此,Apache仍舊是當前互聯網市場上,市占率最高的網頁服務器軟件。

命名

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

特性

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。

參數

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)不存在時,最後允許目錄列表顯示。

指令設置

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相當于上面的例子。

配置

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網頁服務器(現在是Sun ONE)之外的開放源代碼選擇。漸漸的,它開始在功能和速度超越其他的基于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服務器NCSA HTTPd1.3的代碼修改而成的,因此是“一個修補的(a patchy)”服務器。然而在服務器官方網站的FAQ中是這麼解釋的:“‘Apache’這個名字是為了紀念名為Apache(印地語)的美洲印第安人土著的一支,衆所周知他們擁有高超的作戰策略和無窮的耐性”。無論如何,Apache2.x分支不包含任何NCSA的代碼。

相關替代品

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來管理PHP FastCGI進程。PHP-FPM使用給PHP源碼打補丁後編譯的方式讓新手多少有些難上手,但從PHP5.3.2開始内置PHP-FPM,隻需編譯PHP時啟用PHP-FPM。

3、Boa

很多的網站管理員對在硬件配置較低的服務器上使用輕量級的Boa作為Web服務器極其信賴。B oa是一個單線程的HTTP服務器,這意味着Boa隻能依次完成用戶的請求而不會fork新的進程來處理并發請求。Boa的設計目的是速度和安全,對于運行于單服務器的流行Web站點而言,Boa是一個好的選擇。

4、Jigsaw

Jigsaw是W3C推出的開源的Web服務器平台,使用Java語言編寫,可以安裝在有Java運行環境的系統上。做為W3C(World Wide Web Consortium)開發的服務器産品,其作用主要是對新技術的實現做一個例示,而非一個全功能的商業服務器産品。不過就Jigsaw2.0版本而言,它的功能還是超過了目前Web服務器的平均水平。最重要的是,它體現了未來HTTP協議和基于對象的Web服務器技術的發展。如果你希望你的平台支持所有下一代技術,Jigsaw是一個好的選擇。

以上所提到的四個Apache Web服務器的替代者隻是目前衆多優秀應用服務器産品的一部分。

版本發布

2012年08月18日,Apache HTTP Server 2.4.3發布。

2012年08月23日,Apache HTTP Server 2.2.23發布。

相關詞條

相關搜索

其它詞條