Apache HTTP Server

Apache HTTP Server

Apache HTTP Server(簡稱Apache),是Apache軟體基金會的一個開放原始碼的網頁伺服器,可以在大多數電腦作業系統中運行,由於其具有的跨平台性和安全性,被廣泛使用,是最流行的Web伺服器端軟體之一。 它快速、可靠並且可通過簡單的API擴展,Perl/Python解釋器可被編譯到伺服器中,可以創建一個每天有數百萬人訪問的Web伺服器。

基本信息

簡介

Apache HTTP Server Apache HTTP Server

A pache HTTP Server(簡稱 Apache),中文名:阿帕奇,是Apache軟體基金會的一個開放源碼的網頁伺服器,可以在大多數計算機作業系統中運行,由於其多平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴展,將Perl/Python等解釋器編譯到伺服器中。開發者 Apache軟體基金會

最新版本: 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

開發者 Apache軟體基金會

最新版 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訊息。

相關詞條

相關搜尋

熱門詞條

聯絡我們