网站地图
hnsjyk999.com
三九百科 包罗万象
Apache HTTP Server 发布于:

Apache HTTP Server(简称Apache),是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其具有的跨平台性和安全性,被广泛使用,是最流行的Web服务器端软件之一。

它快速、可靠并且可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,可以创建一个每天有数百万人访问的Web服务器。

Apache 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消息。


相关文章推荐:
解释器 | 名称 | 国外 | 基金 |