簡介
Apache HTTP Server(簡稱
Apache),中文名:阿帕奇,是Apache軟體基金會的一個開放源碼的網頁伺服器,可以在大多數計算機作業系統中運行,由於其多平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴展,將Perl/Python等解釋器編譯到伺服器中。開發者 Apache軟體基金會
Apache HTTP Server 最新版本: 2.4.9(2014-03-17)
類型: 網頁伺服器
命名
作者宣稱因為Apache這個名字好記,所以才在最初選擇它,但是流傳最廣的解釋是(也是最顯而易見的):這個名字來自於一個事實:當Apache在1995年初開發的時候,它是由當時最流行的HTTP伺服器NCSA HTTP1.3的代碼修改而成的,因此是“一個修補的(a patchy)”伺服器。然而,在Apache伺服器官方網站的FAQ中是這么解釋的:“Apache這個名字是為了紀念名為Apache的美洲原住民印第安人的一支,眾所周知他們擁有高超的作戰策略和無窮的耐性。”貝倫多夫說:“我選擇阿帕奇這個名字是取其積極含義。阿帕奇族是最後一個屈服於美國政府的民族。當時我們擔心大公司遲早會參與競爭並‘教化’這塊最早的網路之地,所以在我看來,阿帕奇是個很好的名稱,也有人說這個詞一語雙關-因為正如APAtCHy的名字所表明的那樣,他們確實是在給伺服器打補丁。”無論如何,Apache 2.x分支不包含任何NCSA的程式代碼。
歷史
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 HTTPd 1.3 的代碼修改而成的,因此是“一個修補的(a patchy)”伺服器。然而在伺服器官方網站的FAQ中是這么解釋的:“‘Apache’這個名字是為了紀念名為Apache(印地語)的美洲印第安人土著的一支,眾所周知他們擁有高超的作戰策略和無窮的耐性”。無論如何,Apache 2.x 分支不包含任何 NCSA 的代碼。
特性
Apache支持許多特性,大部分通過編譯的模組實現。這些特性從伺服器端的程式語言支持到身份認證方案。一些通用的語言接口支持Perl,Python, Tcl, 和 PHP。流行的認證模組包括 mod_access, mod_auth 和 mod_digest。其他的例子有 SSL 和 TLS 支持 (mod_ssl), 代理伺服器 (proxy) 模組,很有用的URL重寫(由 mod_rewrite 實現),定製日誌檔案 (mod_log_config),以及過濾支持(mod_include 和 mod_ext_filter)。Apache日誌可以通過網頁瀏覽器使用免費的腳本AWStats或Visitors來進行分析。
版本
Apache 的2.x版本核心在Apache 1.x版本之上作出了重要的加強。這包括:執行緒,更好的支持非UNIX平台(例如Windows),新的 Apache API,以及IPv6支持。
評價
· 《PC Magazine》2004年8月評出了近30年以來的10款最佳軟體產品。他們其中或者是有過最輝煌的歷史,或者是最具創意。其對Apache的評價是:第三名:Apache(阿帕奇,1995年推出)Apache目前已經演變成了“LAMP”,即Linux、Apache、MySQL和PHP的聯合體。這是一個開放原始碼軟體項目,已經對微軟的“.NET”戰略構成嚴重威脅。尤其是Apache網路伺服器,讓用戶充分體驗到開放源碼軟體的穩定性、可靠性和可定製性。
·Apple網站評價Apache時說:Apache是伺服器軟體始終不斷進化的大塊部件,它免費但又是無價之寶。Apache是在資源開放運動中出現的絕對珍品,因為不屬於個人專利而是對公共免費。一旦擁有這些源碼,程式設計師能夠自由完成所想——能在其它程式設計師接替工作時被賦予同樣的許可權來改變 和修改自己的原始碼。
信息
軟體
名稱:Apache HTTP Server 2.2.8 for Windows
軟體大小:4920KB
運行環境:Win9x/Me/NT/2000/XP/2003
最新版 2.2.8/2.0.63/1.3.41 / 2008年1月19日
作業系統 跨平台
類型 網頁伺服器
配置
配置原始碼樹
這一步是根據你的特定平台和個人需求配置原始碼樹。位於發行原始碼根目錄的configure腳本會完成這個步驟(對下載Apache CVS版原始碼的開發者,需要裝有autoconf和libtool ,並需要執行buildconf ,對於官方的發行版則沒這個必要)。
要想用所有的默認值配置原始碼樹只要簡單的執行 ./configure 命令就可以了,同時configure還可以接受命令行參數以改變默認值。
最重要的選項是Apache安裝目錄的前綴:--prefix ,因為Apache需要知道這個目錄才能正常運作。更多的微調選項請參考配置選項詳解。
這樣,你就可以通過在配置選項中指定要啟用或禁用哪些模組來定製Apache的特性。Base組的模組默認包含在Apache中。其他組的模組可以通過 --enable-module 指令啟用。其中module是模組名去掉"mod_"並將下劃線轉換成連字元後的字元串。你也可以使用 --enable-module=shared 指令將模組編譯為可在運行時載入和卸載的動態共享對象(DSO)。同樣的,你也可以使用 --disable-module 指令禁用Base組的模組。注意,使用這些指令的時候configure不會對你拼寫錯誤的模組發出警告說找不到某某模組,而只是簡單的忽略這個選項。
另外,有時候還必須提供給configure腳本關於編譯器、庫、頭檔案位置的更多信息。這些可以通過環境變數或者命令行選項傳遞給configure腳本。要了解更多信息,請參考配置原始碼樹。
為了讓你對能指定什麼有一個簡單的印象,此例演示編譯Apache ,並將其安裝在/sw/pkg/apache目錄,指定了一個特定的編譯器以及編譯參數,而且允許今後將兩個附加的模組mod_rewrite和mod_speling通過DSO機制在運行時動態載入:
$ CC=‘pgcc’ CFLAGS=‘-O2’ \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared
configure需要運行幾分鐘,以測試指定的功能在你的系統中是否有效,並建立稍後編譯時所需的許多Makefile檔案。
使用要求
編譯Apache的要求如下:
磁碟 空間
必須保證有50MB以上的自由臨時磁碟空間。Apache安裝完畢後會占據10MB左右的空間,實際的磁碟空間需求會因編譯設定和是否安裝第三方模組而有所不同。
ANSI-C編譯器及編譯環境
必須裝有ANSI-C編譯器,推薦使用自由軟體基金會(FSF)的GCC。如果沒有GCC,那么要確保使用的編譯器符合ANSI標準,而且PATH中必須包含指向基本編譯工具比如make的路徑。
確保準確的時間
由於HTTP協定的元素都會用到時間,有必要了解一下你的系統所使用的時間同步機制。在基於網路時間協定(NTP)的系統中,一般是用ntpdate或xntpd來同步時間。
Perl 5 [可選]
有些用Perl寫的支持腳本,如apxs或dbmmanage ,需要Perl5解釋器(5.003或以上的版本就足夠了)。如果系統中存在多個Perl解釋器,比如有系統提供的Perl 4,還有你自己安裝的Perl 5,推薦你使用 --with-perl 選項來確保configure腳本使用正確的版本。如果configure沒有沒找到Perl 5也沒關係,這並不影響Apache httpd的編譯和安裝,只是相關的支持腳本不能使用而已。
apr/apr-util >= 1.2
apr和apr-util包含在Apache httpd的發行原始碼中,並且在絕大多數情況下使用都不會出現問題。當然,如果apr或apr-util的1.0或1.1版本已經安裝在你的系統中了,則必須將你的apr/apr-util升級到1.2版本,或者將httpd單獨分開編譯。要使用發行原始碼中自帶的apr/apr-util原始碼進行安裝,你必須手動完成:
# 編譯和安裝 apr 1.2
cd srclib/apr
./configure --prefix=/usr/local/apr-httpd/
make
make install
# 編譯和安裝 apr-util 1.2
cd ../apr-util
./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/
make
make install
# 配置 httpd
cd ../../
./configure --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/
下載
Apache可以從及其鏡像站點下載。
大多數類UNIX系統的Apache用戶最好的選擇是下載原始碼並編譯一個適合自己的版本,這個過程(下面將要講述)是很簡單的,它允許你根據自己的需求進行定製。另一方面編譯好的二進制版本通常沒有進行及時的更新。如果你下載的是編譯好的二進制版本,請按照其中的INSTALL.bindist檔案進行安裝。
下載完畢後,應該對下載來的tar包作PGP簽名校驗,以確保其完整而且未被篡改過。
啟動
在Windows NT/2000/XP/2003作業系統中,Apache一般以服務方式運行,或者在Windows 95/98/ME中以控制台程式方式運行。詳情請參見以服務方式運行Apache和以控制台程式方式運行Apache。
在Unix作業系統中,httpd程式作為一個守護進程運行,在後台不斷處理請求。本文檔描述了如何調用httpd 。
Apache是怎樣啟動的
如果配置檔案中Listen定義的是默認的80連線埠(或1024以下),那么啟動Apache將需要root許可權以將它綁定在特權連線埠上。一旦伺服器開始啟動並完成了一些諸如打開日誌檔案之類的準備操作,它將創建很多子進程來完成一些諸如偵聽和回應客戶端請求的工作。httpd主進程仍然以root用戶的許可權運行,而它的子進程將以一個較低許可權的用戶運行。這將由你選擇的多路處理模組進行控制。
調用httpd執行檔的推薦方法是使用apachectl控制腳本。此腳本設定了在某些作業系統中正常運行httpd所必需的環境變數,然後調用httpd二進制檔案。apachectl會傳遞命令行的所有參數,因此所有用於httpd的選項多半也可以用於apachectl 。你可以直接修改apachectl腳本,改變首部的HTTPD變數使之指向httpd執行檔的正確位置,也可以設定任意的命令行參數,使之總是有效。
httpd被調用後第一件要做的事情就是找到並讀取配置檔案httpd.conf 。此檔案的位置是在編譯時設定的,但也可以象下面這樣在運行時用 -f 選項來指定:
/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf
如果啟動過程一切正常,伺服器將與終端分離並幾乎立即出現命令行提示符。這表示伺服器已經啟動並開始運行。然後你就可以用你的瀏覽器去連線你的伺服器來查看DocumentRoot目錄下的測試文檔及其頁面連結里的其它文檔的本地副本。
啟動時發生錯誤
如果Apache在啟動過程中發生了致命錯誤,它將在退出前把描述這個錯誤的信息顯示在終端上或者寫入到ErrorLog中。一個最常產生的錯誤信息是“Unable to bind to Port ...”,這主要由以下原因造成:
想由一個特權連線埠啟動服務但沒有以root用戶運行
啟動服務時已經有另外的Apache實例在運行或其他的web伺服器已經綁定了同樣的連線埠
更多問題的解決辦法,請參見常見問題。
隨系統啟動時啟動
如果你希望你的伺服器在系統重啟後仍保持運行狀態,你應該把apachectl的調用加入到你的系統啟動檔案中(通常為rc.local檔案或rc.N目錄下的某一檔案)。這將會以root許可權啟動Apache。當然,在此之前,你必須保證你的伺服器已經完成了安全和訪問許可權的設定。
apachectl腳本被設計為可以用作SysV初始化腳本,它接受start、restart、stop參數,並把它們翻譯為httpd對應的信號,所以通常都可以將apachectl連線到適當的初始目錄,但是需要檢查你的系統對此的精確要求。
額外信息
關於httpd和apachectl以及其他相關支持程式的命令行選項的詳細信息請參見伺服器和支持程式頁面。其中還包括所有的隨Apache發行包發布的模組和它們提供的指令的文檔。
指令索引
這裡列示了Apache標準發行版中的所有指令。指令的描述採用統一的格式,其中用到的縮略語在指令術語字典有詳細說明。
AcceptFilter
AcceptMutex
AcceptPathInfo
AccessFileName
Action
AddAlt
AddAltByEncoding
AddAltByType
AddCharset
AddDefaultCharset
AddDescription
AddEncoding
AddHandler
AddIcon
AddIconByEncoding
AddIconByType
AddInputFilter
AddLanguage
AddModuleInfo
AddOutputFilter
AddOutputFilterByType
AddType
Alias
AliasMatch
Allow
AllowCONNECT
AllowEncodedSlashes
AllowOverride
Anonymous
Anonymous_LogEmail
Anonymous_MustGiveEmail
Anonymous_NoUserID
Anonymous_VerifyEmail
AuthBasicAuthoritative
AuthBasicProvider
AuthDBDUserPWQuery
AuthDBDUserRealmQuery
AuthDBMGroupFile
AuthDBMType
AuthDBMUserFile
AuthDefaultAuthoritative
AuthDigestAlgorithm
AuthDigestDomain
AuthDigestNcCheck
AuthDigestNonceFormat
AuthDigestNonceLifetime
AuthDigestProvider
AuthDigestQop
AuthDigestShmemSize
AuthGroupFile
AuthLDAPBindDN
AuthLDAPBindPassword
AuthLDAPCharsetConfig
AuthLDAPCompareDNOnServer
AuthLDAPDereferenceAliases
AuthLDAPGroupAttribute
AuthLDAPGroupAttributeIsDN
AuthLDAPRemoteUserIsDN
AuthLDAPUrl
AuthName
AuthType
AuthUserFile
AuthzDBMAuthoritative
AuthzDBMType
AuthzDefaultAuthoritative
AuthzGroupFileAuthoritative
AuthzLDAPAuthoritative
AuthzOwnerAuthoritative
AuthzUserAuthoritative
BrowserMatch
BrowserMatchNoCase
BufferedLogs
CacheDefaultExpire
CacheDirLength
CacheDirLevels
CacheDisable
CacheEnable
CacheFile
CacheIgnoreCacheControl
CacheIgnoreHeaders
CacheIgnoreNoLastMod
CacheLastModifiedFactor
CacheMaxExpire
CacheMaxFileSize
CacheMinFileSize
CacheNegotiatedDocs
CacheRoot
CacheStoreNoStore
CacheStorePrivate
CGIMapExtension
CharsetDefault
CharsetOptions
CharsetSourceEnc
CheckSpelling
ContentDigest
CookieDomain
CookieExpires
CookieLog
CookieName
CookieStyle
CookieTracking
CoreDumpDirectory
CustomLog
Dav
DavDepthInfinity
DavGenericLockDB
DavLockDB
DavMinTimeout
DBDExptime
DBDKeep
DBDMax
DBDMin
DBDParams
DBDPersist
DBDPrepareSQL
DBDriver
DefaultIcon
DefaultLanguage
DefaultType
DeflateBufferSize
DeflateCompressionLevel
DeflateFilterNote
DeflateMemLevel
DeflateWindowSize
Deny
DirectoryIndex
DirectorySlash
DocumentRoot
DumpIOInput
DumpIOOutput
EnableExceptionHook
EnableMMAP
EnableSendfile
ErrorDocument
ErrorLog
Example
ExpiresActive
ExpiresByType
ExpiresDefault
ExtendedStatus
ExtFilterDefine
ExtFilterOptions
FileETag
FilterChain
FilterDeclare
FilterProtocol
FilterProvider
FilterTrace
ForceLanguagePriority
ForceType
ForensicLog
GracefulShutdownTimeout
Group
Header
HeaderName
HostnameLookups
IdentityCheck
IdentityCheckTimeout
ImapBase
ImapDefault
ImapMenu
Include
IndexIgnore
IndexOptions
IndexOrderDefault
IndexStyleSheet
ISAPIAppendLogToErrors
ISAPIAppendLogToQuery
ISAPICacheFile
ISAPIFakeAsync
ISAPILogNotSupported
ISAPIReadAheadBuffer
KeepAlive
KeepAliveTimeout
LanguagePriority
LDAPCacheEntries
LDAPCacheTTL
LDAPConnectionTimeout
LDAPOpCacheEntries
LDAPOpCacheTTL
LDAPSharedCacheFile
LDAPSharedCacheSize
LDAPTrustedClientCert
LDAPTrustedGlobalCert
LDAPTrustedMode
LDAPVerifyServerCert
LimitInternalRecursion
LimitRequestBody
LimitRequestFields
LimitRequestFieldSize
LimitRequestLine
LimitXMLRequestBody
Listen
ListenBackLog
LoadFile
LoadModule
LockFile
LogFormat
LogLevel
MaxClients
MaxKeepAliveRequests
MaxMemFree
MaxRequestsPerChild
MaxRequestsPerThread
MaxSpareServers
MaxSpareThreads
MaxThreads
MCacheMaxObjectCount
MCacheMaxObjectSize
MCacheMaxStreamingBuffer
MCacheMinObjectSize
MCacheRemovalAlgorithm
MCacheSize
MetaDir
MetaFiles
MetaSuffix
MimeMagicFile
MinSpareServers
MinSpareThreads
MMapFile
ModMimeUsePathInfo
MultiviewsMatch
NameVirtualHost
NoProxy
NWSSLTrustedCerts
NWSSLUpgradeable
Options
Order
PassEnv
PidFile
ProtocolEcho
ProxyBadHeader
ProxyBlock
ProxyDomain
ProxyErrorOverride
ProxyIOBufferSize
ProxyMaxForwards
ProxyPass
ProxyPassReverse
ProxyPassReverseCookieDomain
ProxyPassReverseCookiePath
ProxyPreserveHost
ProxyReceiveBufferSize
ProxyRemote
ProxyRemoteMatch
ProxyRequests
ProxyTimeout
ProxyVia
ReadmeName
ReceiveBufferSize
Redirect
RedirectMatch
RedirectPermanent
RedirectTemp
RemoveCharset
RemoveEncoding
RemoveHandler
RemoveInputFilter
RemoveLanguage
RemoveOutputFilter
RemoveType
RequestHeader
Require
RewriteBase
RewriteCond
RewriteEngine
RewriteLock
RewriteLog
RewriteLogLevel
RewriteMap
RewriteOptions
RewriteRule
RLimitCPU
RLimitMEM
RLimitNPROC
Satisfy
ScoreBoardFile
Script
ScriptAlias
ScriptAliasMatch
ScriptInterpreterSource
ScriptLog
ScriptLogBuffer
ScriptLogLength
ScriptSock
SecureListen
SendBufferSize
ServerAdmin
ServerAlias
ServerLimit
ServerName
ServerPath
ServerRoot
ServerSignature
ServerTokens
SetEnv
SetEnvIf
SetEnvIfNoCase
SetHandler
SetInputFilter
SetOutputFilter
SSIEndTag
SSIErrorMsg
SSIStartTag
SSITimeFormat
SSIUndefinedEcho
SSLCACertificateFile
SSLCACertificatePath
SSLCADNRequestFile
SSLCADNRequestPath
SSLCARevocationFile
SSLCARevocationPath
SSLCertificateChainFile
SSLCertificateFile
SSLCertificateKeyFile
SSLCipherSuite
SSLCryptoDevice
SSLEngine
SSLHonorCipherOrder
SSLMutex
SSLOptions
SSLPassPhraseDialog
SSLProtocol
SSLProxyCACertificateFile
SSLProxyCACertificatePath
SSLProxyCARevocationFile
SSLProxyCARevocationPath
SSLProxyCipherSuite
SSLProxyEngine
SSLProxyMachineCertificateFile
SSLProxyMachineCertificatePath
SSLProxyProtocol
SSLProxyVerify
SSLProxyVerifyDepth
SSLRandomSeed
SSLRequire
SSLRequireSSL
SSLSessionCache
SSLSessionCacheTimeout
SSLUserName
SSLVerifyClient
SSLVerifyDepth
StartServers
StartThreads
SuexecUserGroup
ThreadLimit
ThreadsPerChild
ThreadStackSize
TimeOut
TraceEnable
TransferLog
TypesConfig
UnsetEnv
UseCanonicalName
UseCanonicalPhysicalPort
User
UserDir
VirtualDocumentRoot
VirtualDocumentRootIP
VirtualScriptAlias
VirtualScriptAliasIP
Win32DisableAcceptEx
XBitHack
升級
升級的第一步是閱讀原始碼目錄中的發布公告(release announcement)和CHANGES檔案以尋找可能會對你的站點產生影響的變化。如果主機板本號的變化(例如1.3→2.0或2.0→2.2)表明編譯時和運行時的配置發生了重大變化,需要手動調整,所有模組也需要升級以兼容新版本的模組API 。
小幅度的版本升級(例如:2.2.55→2.2.57)很容易。make install 的過程不會改寫任何已經存在的文檔、日誌、配置檔案。此外,開發者也會儘量兼容上一版本的configure選項、運行時配置、模組API 。大多數情況下,你將能夠使用與上一版本完全相同的configure命令行和運行時配置,而你原來的所有模組也將正常工作。
如果你保存了上一次安裝後build子目錄中的config.nice檔案,升級將更加平滑。這個檔案精確地保存了所有對目錄樹進行配置的configure命令行。你只需要將config.nice檔案複製到新的原始碼目錄樹的根資料夾並進行你希望的修改後,然後運行下面的命令即可完成升級:
$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start
官方網站
Apache伺服器官方網站
Apache軟體基金會官方網站
常見問題
背景什麼是Apache ?
什麼是 Apache HTTP Server ?
Apache是如何進行充分測試的?
我可以在我的產品或網站中使用Apache的logo嗎?
什麼是Apache ?
Apache軟體基金會(ASF)是一個非營利性組織,它為Apache社區的開源軟體項目提供支持。欲知詳情,請查看Apache Software Foundation FAQ頁面。
Apache HTTP Server(也被稱為Apache httpd)是Apache軟體基金會的一個創建健壯的、工業級的、功能強大的、開放原始碼的HTTP(Web)伺服器的項目。欲知詳情,請查看About Apache頁面。
什麼是 Apache HTTP Server ?
一個強大的、靈活的、兼容HTTP/1.1規範的web伺服器
實現了最新的協定,包括HTTP/1.1(RFC2616)
具有高度的可配置性和使用第三方模組的可擴展性
可以通過使用Apache模組API編寫自己的模組進行定製
在非限制性許可證下提供所有的原始碼
可以運行在 Windows 2003/XP/2000/NT/9x 、Netware 5.x 及以上版本、OS/2 、大多數Unix版本以及其它作業系統上
被非常活躍的進行開發
鼓勵用戶反饋新想法、bug報告、補丁程式
Apache是如果進行充分測試的?
Apache正在數以百萬的網路伺服器上運行。它同時經過開發者和用戶的充分測試。Apache HTTP Server 項目按照非常嚴格的標準發布伺服器的新版本,並且有70%的萬維伺服器在24小時不間斷地運行著我們的伺服器。一旦有bug被發現,我們將以最快的速度發布補丁程式和新版本。
我可以在我的產品或網站中使用Apache的logo嗎?
不可以使用、複製、修改任何來自Apache軟體基金會的原始圖形。
你可以在一個使用Apache作為web伺服器的網站上使用Powered by Apache圖示。
若且唯若這種使用可以促進Apache的推廣時,你才可以在產品描述中使用上述Powered by Apache圖示或Apache軟體基金會logo 。嚴格禁止將Apache的名稱或圖形用於產品的簽名或者服務。
支持
我為什麼不能...?為什麼...不工作?在有問題的情況下該怎么辦?
我要找誰尋求幫助?
如果你使用Apache伺服器軟體遇到了問題,採取以下幾步:
檢查錯誤日誌!
Apache伺服器在遇到問題時會盡力做到對你有所幫助。在許多情況下,它會通過在錯誤日誌中寫入一條或多條訊息來提供一些細節。有時這已經足夠讓你自己診斷和解決問題了(比如檔案許可權或類似的問題)。錯誤日誌的默認位置在/usr/local/apache2/logs/error_log ,但是最後還是看看配置檔案中的ErrorLog指令以確認錯誤日誌在你伺服器上的確切位置。
再一次檢查錯誤日誌!
幾乎所有問題都可以通過閱讀錯誤日誌來解決。
察看FAQ!
最新版本的Apache常見問題列表總是可以從Apache主站點得到。
察看Apache bug資料庫
大多數報告給Apache項目組的問題都記錄在bug資料庫中。在你添加一個新bug之前,請務必檢查已有的報告(打開的和關閉的)。如果你發現你的問題已經被報告了,請不要添加一個“我也是”那樣的報告。如果原始報告還沒有關閉,我們建議你經常周期性地來看看它。你也可以考慮與最初的提交者接觸,因為有可能會在郵件交流中發現沒有記錄在資料庫中的問題。
在某個用戶論壇中提問
Apache擁有一個活躍的、願意共享知識的用戶社區。參與這個社區通常是獲得解答的最快最好的辦法。
用戶郵件列表
Freenode IRC上的#apache頻道也是關於用戶支持的。
提交問題報告到bug資料庫
如果做了以上幾個合適的步驟而沒有得到解答,那么請務必讓httpd的開發者了解這個問題,到這裡提交bug報告。
如果你的問題涉及到伺服器崩潰並產生了核心dump,請在報告中包含一個backtrace(如果可能)。
我要找誰尋求幫助?
因為有數百萬用戶和區區不到60名志願開發者,我們無法為Apache提供個體支持。對於免費的支持,我們建議用戶參與一個用戶論壇。
Apache的專業商業支持可以從許多公司得到。
錯誤信息
Invalid argument: core_output_filter: writing data to the network
AcceptEx failed
Premature end of script headers
Permission denied
Invalid argument: core_output_filter: writing data to the network
Apache在可能的平台上使用系統調用sendfile來加速回響的傳送(譯者註:Linux2.4/2.6核心都支持)。不幸的是,在某些系統上,Apache會在編譯時檢測sendfile的存在,即使它不能正常工作。這經常發生在使用網路或其他非標準檔案系統時。
這個問題的表現症狀包括上述信息出現在錯誤日誌里及對於非零長度檔案請求傳送零長度的回響。一般這個問題只發生在靜態檔案上,因為動態檔案通常用不到sendfile 。
要修正這個問題,可用EnableSendfile指令關閉伺服器所有部分對sendfile的使用即可。同時參看EnableMMAP指令,對相似的問題有幫助。
AcceptEx Failed
如果你在win32系統上得到一個與AcceptEx系統調用相關的錯誤信息,參見Win32DisableAcceptEx指令。
Premature end of script headers
大多數導致這個錯誤的CGI腳本問題將會向瀏覽器傳送一個Internal Server Error錯誤信息。
Permission denied
error_log中的Permission denied錯誤伴隨一個傳送到客戶端的Forbidden信息通常表明違反了檔案系統的許可權,而不是Apache HTTP的配置檔案出了錯誤。檢查並確認用於運行子進程的User和Group有訪問導致問題的檔案的足夠許可權。同時檢查一下導致問題的檔案所在的目錄及其所有父目錄是否具有執行(搜尋)許可權(也就是 chmod +x)。
Fedora Core 和其它Linux發行版使用了SELinux進行額外的訪問控制,違反這些限制也會導致Permission denied訊息。