<-
Apache HTTP 服务器 2.4 > 微软Windows

在Microsoft Windows上使用Apache HTTP Server

本文档说明了如何在Microsoft Windows下安装,配置和运行Apache 2.4。如果在查看文档(以及所有事件和错误日志)后仍有疑问,则应查阅同行支持的 用户的邮件列表

本文档假定您正在安装Apache的二进制发行版。如果要自己编译Apache(可能有助于开发或跟踪错误),请参阅编译适用于Microsoft Windows的Apache

支持Apache!

也可以看看

最佳

作业系统需求

运行Apache 2.4的主要Windows平台是Windows 2000或更高版本。始终获取并安装当前的Service Pack以避免操作系统错误。

低于2.2的Apache HTTP Server版本将无法在Windows 2000之前的任何操作系统上运行。
最佳

下载适用于Windows的Apache

Apache HTTP Server Project本身不提供二进制版本的软件,仅提供源代码。单个提交者可以提供二进制软件包来方便,但它不是可交付的版本。

如果您不能自己编译Apache HTTP Server,则可以从Internet上的大量二进制发行版中获取二进制软件包。

在Microsoft Windows上部署Apache httpd以及(可选)PHP和MySQL的流行选项包括:

最佳

自定义Windows的Apache

Apache由conf 子目录中的文件配置。这些是用于配置Unix版本的相同文件,但是Windows上有一些针对Apache的不同指令。有关 所有可用指令,请参见指令索引

Windows版Apache中的主要区别是:

最佳

运行Apache即服务

Apache带有一个称为Apache Service Monitor的实用程序。使用它,您可以查看和管理网络上任何计算机上所有已安装的Apache服务的状态。为了能够使用监视器管理Apache服务,您必须先安装服务(通过安装自动或手动安装)。

您可以从Apache bin子目录下的命令提示符下,按照以下步骤将Apache安装为Windows NT服务:

httpd.exe -k install

如果需要指定要安装的服务的名称,请使用以下命令。如果您的计算机上安装了几种不同的Apache服务,则必须执行此操作。如果在安装过程中指定了名称,则还必须在其他任何-k操作中指定名称。

httpd.exe -k install -n "MyServiceName"

如果需要为不同的服务专门命名的配置文件,则必须使用以下命令:

httpd.exe -k install -n "MyServiceName" -f "c:\files\my.conf"

如果您使用的第一个命令没有任何特殊参数 -k install,则将调用该服务,Apache2.4 并假定配置为conf\httpd.conf

删除Apache服务很容易。只需使用:

httpd.exe -k uninstall

可以使用以下命令指定要卸载的特定Apache服务:

httpd.exe -k uninstall -n "MyServiceName"

正常启动,重新启动和关闭Apache服务通常是通过Apache Service Monitor,使用诸如NET START Apache2.4NET STOP Apache2.4或通过常规Windows服务管理之类的命令来完成的。在通过任何方式将Apache作为服务启动之前,您应该使用以下方法测试服务的配置文件:

httpd.exe -n "MyServiceName" -t

您也可以通过其命令行开关来控制Apache服务。要启动已安装的Apache服务,请使用以下命令:

httpd.exe -k start -n "MyServiceName"

要通过命令行开关停止Apache服务,请使用以下命令:

httpd.exe -k stop -n "MyServiceName"

要么

httpd.exe -k shutdown -n "MyServiceName"

您还可以使用以下命令重新启动正在运行的服务,并强制其重新读取其配置文件:

httpd.exe -k restart -n "MyServiceName"

默认情况下,所有Apache服务都注册为以系统用户(LocalSystem帐户)身份运行。该 LocalSystem帐户没有通过任何Windows安全机制(包括文件系统,命名管道,DCOM或安全RPC)对网络的特权。但是,它在本地具有广泛的特权。

切勿授予该LocalSystem帐户任何网络特权!如果您需要Apache能够访问网络资源,请如下所述为Apache创建一个单独的帐户。

建议用户创建一个单独的帐户来运行Apache服务。如果必须通过Apache访问网络资源,则这是必需的。

  1. 创建一个普通的域用户帐户,并确保记住其密码。
  2. 向新创建的用户授予Log on as a service和的特权Act as part of the operating system。在Windows NT 4.0上,这些特权是通过域用户管理器授予的,但是在Windows 2000和XP上,您可能希望使用组策略来传播这些设置。您还可以通过“本地安全策略” MMC管理单元手动设置它们。
  3. 确认创建的帐户是“用户”组的成员。
  4. 授予读取账号和执行(RX)权限的所有文件和文件夹的脚本(htdocscgi-bin 举例)。
  5. 授予对Apache logs目录的帐户更改(RWXD)权限。
  6. 授予帐户对httpd.exe二进制可执行文件的读取和执行(RX)权限 。
通常,向用户授予Apache服务以对整个Apache2.4目录的读取和执行(RX)访问权限运行,但logs子目录除外,在该子目录中,用户必须至少具有更改(RWXD)权限。

如果允许该帐户以用户和服务身份登录,则可以使用该帐户登录并测试该帐户是否具有执行脚本,阅读网页的权限,以及您可以使用控制台窗口。如果这行得通,并且您已执行上述步骤,则Apache应该作为服务执行,没有问题。

错误代码2186很好地表明您需要检查该服务的“登录身份”配置,因为Apache无法访问所需的网络资源。另外,请密切注意将Apache配置为以其身份运行的用户的特权。

将Apache作为服务启动时,您可能会遇到Windows服务控制管理器的错误消息。例如,如果尝试使用Windows控制面板中的服务小程序来启动Apache,则可能会收到以下消息:

Could not start the Apache2.4 service on \\COMPUTER
Error 1067; The process terminated unexpectedly.

如果启动Apache服务有任何问题,您将收到此一般错误。为了查看真正引起问题的原因,您应该按照命令提示符中的说明运行Windows版Apache。

如果您在使用该服务时遇到问题,建议您按照以下说明尝试从控制台窗口启动httpd.exe,并解决错误,然后再尝试将其作为服务重新启动。

最佳

将Apache作为控制台应用程序运行

通常建议将Apache作为服务运行,以使用它,但是有时从命令行进行操作会更容易,尤其是在初始配置和测试期间。

要将命令行作为控制台应用程序运行Apache,请使用以下命令:

httpd.exe

Apache将执行,并且将一直运行,直到通过按Control-C将其停止为止。

您也可以通过Start Menu --> Programs --> Apache HTTP Server 2.4.xx --> Control Apache Server在安装过程中放置在控制台中的“在控制台中启动Apache”快捷方式来运行Apache 。这将打开一个控制台窗口,并在其中启动Apache。如果您没有安装Apache作为服务,则该窗口将保持可见,直到您通过在运行Apache的控制台窗口中按Control-C停止Apache为止。服务器将在几秒钟后退出。但是,如果您确实将Apache安装为服务,则快捷方式将启动该服务。如果Apache服务已经在运行,则快捷方式不会执行任何操作。

如果Apache作为服务运行,则可以通过打开另一个控制台窗口并输入以下命令来使其停止运行:

httpd.exe -k shutdown

与在控制台窗口中运行相比,应优先选择作为服务运行,因为这可以使Apache结束所有当前操作并优雅地进行清理。

但是,如果服务器在控制台窗口中运行,则只能通过在同一窗口中按Control-C来停止服务器。

您还可以告诉Apache重新启动。这将强制其重新读取配置文件。任何正在进行的操作都可以不间断地完成。要重新启动Apache,请在用于启动Apache的控制台窗口中按Control-Break,或输入

httpd.exe -k restart

服务器是否作为服务运行。

对于熟悉Apache的Unix版本的人们请注意:这些命令提供的Windows等效于和。选择使用的命令行选项来提醒在Unix上使用的命令。kill -TERM pidkill -USR1 pid-kkill

如果Apache控制台窗口在启动后立即关闭或意外关闭,请从“开始”菜单->程序中打开命令提示符。转到安装Apache的文件夹,键入命令httpd.exe,然后阅读错误消息。然后转到日志文件夹,并查看error.log 文件中的配置错误。假设httpd已安装到中 C:\Program Files\Apache Software Foundation\Apache2.4\,您可以执行以下操作:

c:
cd "\Program Files\Apache Software Foundation\Apache2.4\bin"
httpd.exe

然后等待Apache停止,或按Control-C。然后输入以下内容:

cd ..\logs
more < error.log

使用Apache时,重要的是要知道它将如何找到配置文件。您可以通过两种方式在命令行上指定配置文件:

在这两种情况下,ServerRoot都应在配置文件中设置适当的值 。

如果未使用-f 或指定配置文件-n,则Apache将使用编译到服务器中的文件名,例如conf\httpd.conf。此内置路径是相对于安装目录的。您可以从标记为的值(SERVER_CONFIG_FILE使用-V开关调用Apache时)验证编译的文件名,如下所示:

httpd.exe -V

然后,Apache将ServerRoot尝试按以下顺序尝试确定其顺序:

  1. ServerRoot经由该指令-C命令行开关。
  2. -d命令行上开关。
  3. 当前工作目录。
  4. 如果执行二进制安装,则会创建一个注册表项。
  5. 将服务器根目录编译到服务器中。 /apache默认情况下,这是您可以通过使用 httpd.exe -V并查找标记为的值 来进行验证的方法HTTPD_ROOT

如果您未进行二进制安装,则Apache在某些情况下会抱怨缺少注册表项。如果服务器原本可以找到其配置文件,则可以忽略此警告。

此项的值是 ServerRoot包含conf子目录的目录。Apache启动时,它将httpd.conf从该目录读取文件。如果该文件包含的ServerRoot 指令所包含的目录与从上面的注册表项获得的目录不同,则Apache将忘记该注册表项并使用配置文件中的目录。如果将Apache目录或配置文件复制到新位置,则必须更新文件中的ServerRoot指令 httpd.conf以反映新位置,这一点至关重要 。

最佳

测试安装

启动Apache之后(无论是在控制台窗口中还是作为服务),它将在端口80上侦听(除非您Listen在配置文件中更改了 指令或仅为当前用户安装了Apache)。要连接到服务器并访问默认页面,请启动浏览器并输入以下URL:

http://localhost/

Apache应该在欢迎页面上做出响应,您应该看到“ It Works!”。如果没有任何反应或出现错误,请在子目录中查找 error.log文件logs。如果您的主机未连接到网络,或者您的DNS(域名服务)配置存在严重问题,则可能必须使用以下URL:

http://127.0.0.1/

如果您恰巧在备用端口上运行Apache,则需要将其显式放置在URL中:

http://127.0.0.1:8080/

基本安装成功后,应通过编辑conf子目录中的文件来正确配置它。同样,如果更改Windows NT服务的Apache配置,请首先尝试从命令行启动它,以确保该服务启动没有错误。

由于Apache 无法与另一个TCP / IP应用程序共享同一端口,因此您可能需要在运行Apache之前停止,卸载或重新配置某些其他服务。这些相互冲突的服务包括其他WWW服务器,某些防火墙实现,甚至是某些客户端应用程序(例如Skype),它们将使用端口80尝试绕过防火墙问题。

最佳

配置对网络资源的访问

可以使用Windows提供的两种机制来指定对网络文件的访问:

映射的驱动器号
例如, Alias "/images/" "Z:/"
UNC路径
例如, Alias "/images/" "//imagehost/www/images/"

映射的驱动器号使管理员可以维护到Apache httpd配置之外的特定计算机和路径的映射。但是,这些映射仅与交互式会话相关联,当Apache httpd作为服务启动时不能直接用于Apache httpd。 对于httpd.conf中的网络资源仅使用UNC路径,以便无论如何启动Apache httpd都可以一致地访问资源。(奥秘和易于出错的过程可能会解决对映射驱动器号的限制,但是不建议这样做。)

具有UNC路径的示例DocumentRoot

DocumentRoot "//dochost/www/html/"

IP地址位于UNC路径中的示例DocumentRoot

DocumentRoot "//192.168.1.50/docs/"

示例别名和具有UNC路径的相应目录

Alias "/images/" "//imagehost/www/images/"

<Directory "//imagehost/www/images/">
#...
</Directory>

如上所述,将Apache httpd作为服务运行时,必须创建一个单独的帐户才能访问网络资源。

最佳

Windows调优

可用语言: zh  |  fr  |  KO 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。