Apache 2.0手册中文版翻译项目 [本文译者: suncjs * ]

项目说明 | 项目进度 | 项目讨论区 | Apache手册中文版

 


在Microsoft Windows中使用Apache - Apache HTTP服务器
<-
Apache主站 > HTTP服务器 > 文档 > 2.0版本 > Platform Specific Notes

在Microsoft Windows中使用Apache

此文档解释了如何在Microsoft Windows平台上安装、配置和运行Apache 2.0。 如果你发现了bug,或者希望以其他方式作出贡献, 请使用我们的bug报告页面

本文档的大多数内容假定你是从一个二进制发布版安装Apache到Windows上。 如果你想自己编译Apache(可能有助于开发和跟踪bugs),参看编译Windows下的Apache

现在,对Windows 9x的支持是不完善的。 当前Apache 2.0并不期望在Windows 9x平台上运行。 如果你有兴趣在那方面给于帮助,请看开发者站点上的如何加入主题的信息。 将来可能会因为某些原因提供这方面的支持, 我们欢迎提供使Apache能够运行在Windows 9x上的补丁。

本文档使用到的缩写及其意义解释包括:

top

对操作系统的要求

Apache 2.0被设计为在Windows NT 4.0和Windows 2000上运行。 它的二进制安装程序只能在x86族的处理器上运行,比如Intel芯片。 Apache可能也能够运行在Windows 9x上,但是并没有经过测试, 也不建议在实际工作的系统上这样使用。 任何情况下都必须确保TCP/IP网络协议已经安装。

如果在Windows 95上运行,必须安装"Winsock2"升级补丁。 "Winsock2" for Windows 95可以在 这里下载。

如果在NT 4.0上运行,建议安装Service Pack 6, 因为Service Pack 4有众所周知的TCP/IP和Winsock完整性的问题, 在以后的Service Pack中解决了这些问题。

top

下载 Apache for Windows

关于Apache最新版本的有关信息可以在位于http://httpd.apache.org/ 的Apache web服务器上找到。那里会列出当前发行版本、 所有最近的alpha和beta测试发行版本以及镜像web站点和匿名ftp服务器的信息。

你应该下载带有.msi扩展名的Apache for Windows版本。 这是一个单一的Microsoft Installer文件,包含了Apache,可以立即安装并运行。 还有一个单独的.zip文件打包了源码, 可以用Microsoft Visual C++ (Visual Studio)工具来编译。

top

安装 Apache for Windows

Apache的安装需要有Microsoft Installer 1.2或更高版本。 在Windows 9x中,你可以从这里 升级Microsoft Installer到2.0,在Windows NT 4.0和2000中,2.0的升级版在这里. Windows XP不需要这个升级。

注意,使用这个安装包不能在同一个机器上安装两套Apache 2.0。 但是,在同一个机器上,安装一个1.3系列一个2.0系列的Apache则没有问题。 如果你需要在同一个机器上安装两套不同的2.0版本, 则必须用代码编译和安装Apache.

运行已下载的上述Apache .msi文件。安装程序会要求提供下列信息:

安装期间,Apache将会配置你所选择安装目录下的conf文件夹中的文件。 但是如果那个目录下已有同名文件存在,原有文件将不会被覆盖, 而新的相应的文件将会被加上.default扩展名。 所以,举例来说,如果conf\httpd.conf已经存在,那么不会对它做任何改变, 而新版本http.conf的内容将会被写入文件conf\httpd.conf.default。 安装完成以后你应该检查.default文件中的内容看看有没有不同, 如果必要,更新你原有的配置文件。

而且,如果你已经有一个名为htdocs\index.html的文件,它也不会被覆盖掉 (也不会安装index.html.default文件)。 这意味着你在一个旧版本Apache上安装新版本是安全的 (但是你必须在安装之前首先停掉原有服务器然后在安装完成后再启动服务器)。

安装Apache以后,要求你应该编辑conf目录下的配置文件。这些 文件已在安装期间被配置以便Apache能够从安装目录运行,文档目录被配置为安装 目录下的子目录htdocs。在你开始真正使用之前还有很多选项需要设 置。但是为了尽快开始,可以使用安装时自动配置的配置文件。

top

配置 Apache for Windows

Apache使用conf目录下的文件进行配置,与Unix系统下的版本一样, 但是Windows版本有几个不同的指令,可阅读Apache 文档察看全部可用指令。

Apache for Windows主要的不同点是:

top

以服务方式运行Apache for Windows

用于指定服务名的-n选项只在Apache 1.3.7 及以后的版本中可用。 早期版本只支持缺省服务名"Apache"。

你可以像下面这样将Apache安装为Windows NT服务:

apache -i -n "服务名"

要安装一个使用特定配置的服务,安装时指定配置文件:

apache -i -n "服务名" -f "\my server\conf\my.conf"

要移除一个Apache服务,使用:

apache -u -n "服务名"

如果没有指定服务名,缺省地,将使用"Apache"。

一旦服务被安装,你可以使用-n选项和其他选项一起访问该服务的配置文件。例如:

测试一个服务的配置文件:

apache -n "服务名" -t

启动一个使用某服务配置文件的控制台Apache:

apache -n "服务名"

top

关于服务依存关系的重要提示:

对于Apache发行版1.3.13更早的版本,成功运行已安装服务所要求的依存关系并没有配置。 安装了一个早期版本Apache的服务以后, 你还必须做以下工作:

运行 regedt32
从菜单选择窗口 - "HKEY_LOCAL_MACHINE on Local Machine"
双击打开 SYSTEM, 然后打开 the CurrentControlSet
滚动到Apache服务名并点击
从菜单选择 Edit - Add Value...
用下列值填充Add Value对话框
数值名称: DependOnGroup
数据类型: REG_MULTI_SZ
点击确定
保留多字符串编辑器为空并点击确定
Select Edit - 从菜单选择 Edit - Add Value...
用下列值填充Add Value对话框
数值名称: DependOnService
数据类型: REG_MULTI_SZ
点击确定
在多字符串编辑器中输入下列列表(每行一条)
Tcpip
Afd
点击确定

如果你从第三方模块、ISAPI或者其他像ActiveState Perl那样的附加脚本技术使用了COM或者DCOM,你可能还需要在DependOnService列表中加入Rpcss条目。为了避免不必要地暴露TCP端口135,Apache安装时没有创建那个条目。如上述步骤在找到或是创建数值名称DependOnService,双击它并加入Rpcss条目到列表。

top

运行Apache服务的用户帐号(NT/2000)

当Apache第一次被安装为服务(例如使用-i选项),它会以用户"System"(本地系统账号)运行。 如果web服务器的所有资源都在本地系统上,这样做会问题比较少,但是将会具有很大的安全权限来影响本地机器!

本地系统账号是一个很有特权的本地账号,因此你不应该用它运行任何共享软件应用程序。 但是,它没有网络权限,不能通过任何NT安全机制离开本地机器,包括文件系统、命名管道、DCOM或secure RPC。

永远不要把网络权限授予SYSTEM账号!创建一个新的用户帐号来代替它, 给这个用户授予合适的权限,并使用"Log On As:"选项。选择开始菜单 -> 设置 -> 控制面板 -> 服务 -> apache服务 ...并点击"启动服务"来访问该设置

一个运行在本地系统账号背景中的服务继承了SCM(服务控制管理器)的安全背景,与任何已登录账号都没有关联,也没有用于验证的任何证书(域名、用户名和密码)。

SYSTEM账号没有网络权限,因此对于服务一个Apache的共享安装实例或者共享页都是不可见的。如果你打算使用任何网络资源,下面的步骤应该有所帮助:

如果你允许使用这个帐号登录为一个用户,你就可以自己登录上去测试执行脚本、读取web页的权限,还可以用控制台窗口启动Apache。如果这样工作正常,你又执行了上述的操作,那么Apache就能够正常地作为服务运行了。

错误代码2186是一个很好的提示,说明你需要检查"log On As"选项,因为服务器不能访问必要的网络资源。
top

Apache for Windows作为服务运行的故障分析

当启动Apache为服务的时候你可能会遇到一个来自Windows服务管理器的错误信息。 例如,如果你想使用控制面板中的服务小程序启动Apache,可能会得到下面这条信息:

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

启动Apache时一出现问题你就会得到这个错误信息。为了弄清是什么引起了错误, 你应该遵循从命令行运行Running Apache for Windows中的建议。

还有,如果Apache作为服务运行,Apache 1.3.13 目前在Windows NT/2000下把启动错误记录在应用程序事件日志里。 运行事件察看器并选择应用程序日志检查相应纪录。

即使没有错误信息弹出警告你发生了错误,也应该用事件查看器检查应用程序日志以防有错误发生。
top

从命令行运行Apache

要了解从命令行控制Apache服务的细节,请参照控制台命令行部分。

top

控制服务方式的Apache

可以以服务方式安装并运行Apache的多个实例。像下面这样启动、重启及关闭/停止Apache服务:

apache -n "服务名" -k start
apache -n "服务名" -k restart
apache -n "服务名" -k shutdown
apache -n "服务名" -k stop

对于缺省的"Apache"服务,选项-n仍然需要,因为如果命令中使用-k选项而没有-n 选项的话,命令会作用在运行于控制台窗口的Apache上。引号只是在服务名含有空格时才是必要的。

注意-k shutdown的别名-k stop只是到了1.3.13版本才被引入。 早期版本的Apache只认识-k shutdown选项。先于1.3.3版本的Apache不认识任何-k选项!

此外,你可以使用NT本机命令NET来启动和停止Apache服务,像这样:

NET START "服务名"
NET STOP "服务名"

同样,引号只是在服务名含有空格时才是必需的。

top

高度试验性的Windows 95/98 服务

只有Apache 1.3.13 及以后版本才有Windows 95 and 98 下的服务选项。早期版本的Apache在Windows 95/98 下只支持控制台窗口方式运行。

对于让Apache在Windows 95/98 下以类似Windows NT/2000服务的方式运行有一些支持。都是高度试验性的, 即使能够工作,Apache软件基金会将不会证实其可靠性和未来的支持。继续进行你自己的冒险吧!

一旦你确认Apache在命令行提示符下正确工作,你就可以像在Windows NT/2000版本下那样用同样的命令安装、控制和卸载Apache服务。

但是,其中有相当大的区别你需要注意:

如果你输入下列命令,Apache会尝试启动,如果成功他将在后台运行:

Apache -n "服务名" -k start

例如,通过桌面的快捷方式运行,如果服务启动成功一个控制台窗口会快速闪过并立刻消失。 如果启动时Apache检测到比如httpd.conf文件中有不正确的设置这样的问题,则控制台窗口会保持可见。 这样将显示一个有助于追踪错误原因的错误信息。

Windows 95/98 不支持NET START或者NET STOP命令,因此你在命令中必须使用Apache的服务控制选项。 你可能希望为每个命令设置一个快捷方式以便你能够只需要从开始菜单或者桌面一点就能执行所需的操作。

Apache和Windows 95/98 没有提供让Apache服务以特定的具有网络权限的用户身份运行的支持。 实际上,Windows 95/98 在本地机器上根本没有提供安全性。这就是Apache软件基金会从不支持使用Windows 95/98 作为公用httpd服务器的原因。这个便利存在的唯一目的是协助用户开发web内容和学习Apache服务器,或者也许在一个安全的、私有的网络上充当intranet服务器。

top

安装的测试

启动Apache运行以后(不管是控制台窗口还是作为服务), 它会在80端口上进行监听(除非你改变了配置文件中的Listen指令。 要连接到服务器访问默认页面,启动一个浏览器并输入下列URL:

http://localhost/

应该出现一个欢迎页面作为应答,并且页面上有到Apache用户手册的链接。 如果什么都没有发生或是得到了一个错误,检查logs文件夹中的 error_log文件。如果你的主机没有联网,你也许需要输入这样的URL:

http://127.0.0.1/

一旦你的基本配置可以工作了,你应该编辑conf目录下的文件来恰当地配置Apache。 此外,如果你改变了作为NT服务运行的Apache的配置, 你应该首先尝试从命令行启动来保证能够无错地启动Apache服务。

因为Apache 不能 与其他TCP/IP应用程序共享同一个端口, 你可能需要先停止或者卸载某些特定的服务。这包括(但不限于) 别的web服务器和BlackIce那样的防火墙。如果你只能在禁止其他服务的情况下启动Apache, 那么需要重新配置Apache或者其他程序使它们不监听同一个TCP/IP端口。

 


项目维护者: kajaa [本文译者: suncjs * ]

项目说明 | 项目进度 | 项目讨论区 | Apache手册中文版