基于当前的Windows版本状况,本文档使用到的缩写及其意义解释包括:
Windows NT: 指所有基于NT核心的Microsoft Windows操作系统的版本,包括Windows NT, Windows 2000, Windows XP, Windows.NET Server 2003及后续版本。
Windows 9x: 指所有定位于家庭使用的Microsoft Windows操作系统的版本,包括 Windows 95 , Windows 98, Windows ME 。
◆对操作系统的要求
Apache 2.0被设计为在Windows NT上运行。它的二进制安装程序只能在x86处理器上运行,比如Intel和AMD的芯片。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中解决了这些问题。
◆下载 Apache for Windows
关于Apache最新版本的有关信息可以在http://httpd.apache.org/download.cgi上找到。那里会列出当前发行版本、 所有最近的alpha和beta测试版本以及镜像web站点和匿名ftp服务器的信息。
你应该下载带有.msi扩展名的Apache for Windows版本。 这是一个单一的Microsoft Installer文件,包含了Apache ,可以立即安装并运行。 还有一个单独的.zip文件只打包了源码, 可以用Microsoft Visual C++ (Visual Studio)工具来编译。
◆安装 Apache for Windows
Apache的安装需要有Microsoft Installer 1.2或更高版本。 在Windows 9x中,你可以从这里升级Microsoft Installer到2.0 ,在Windows NT 4.0和2000中,2.0的升级版在这里。Windows XP/2003不需要这个升级。
注意,使用这个安装包不能在同一个机器上安装两套Apache 2.0。 但是,在同一个机器上,安装一个1.3系列和一个2.0系列的Apache则没有问题。 如果你需要在同一个机器上安装两套不同的2.0版本, 则必须用代码编译和安装Apache
运行已下载的上述Apache .msi文件。安装程序会要求提供下列信息:
1.)Network Domain 你的服务器已经或者将要注册的DNS域名。比如你的服务器的全称DNS域名是server.mydomain.net ,你应当在这里输入:mydomain.net
2.)Server Name 你的服务器的全称DNS域名,如上情况你应当在这里输入:server.mydomain.net
3.)Administrator's Email Address 服务器管理员的email地址。这个地址将会在默认的出错页面上显示给客户端。
4.)For whom to install Apache 如果你希望Apache在80端口监听,并被安装为服务(即使无人登陆,Apache仍将运行),就选择"for All Users, on Port 80, as a Service - Recommended";如果你希望将Apache安装为个人试验使用,或者已经有一个运行于80端口的WWW服务器,就选择"only for the Current User, on Port 8080, when started Manually"。
5.)The installation type 选择Typical会安装除开发模块需要使用的源码和库以外的所有内容。选择Custom可以自定义安装哪些项目。完整安装大约需要13MB磁盘空间,这其中并不包含你的网站文件所用空间。
6.)Where to install 安装Apache的文件夹,默认为C:\Program Files\Apache Group文件夹下的Apache2子文件夹。
安装期间,Apache将会配置你所选择的安装目录下的conf文件夹中的文件。 但是如果那个目录下已有同名文件存在,原有文件将不会被覆盖, 而相应的新文件将会被加上.default扩展名。 所以,举例来说,如果conf\httpd.conf已经存在,那么不会对它做任何改变, 而新版本conf\httpd.conf的内容将会被写入文件conf\httpd.conf.default 。 安装完成以后你应该检查.default文件中的内容看看有没有不同, 如果必要,更新你原有的配置文件。
而且,如果你已经有一个名为htdocs\index.html的文件,它不会被覆盖掉 (也不会安装index.html.default文件)。 这意味着你在一个旧版本Apache上安装新版本是安全的 (但是你必须在安装之前首先停掉原有服务器然后在安装完成后重新启动它)。
安装Apache以后,你应该编辑conf目录下的配置文件。这些文件已在安装期间被配置好以便Apache能够从安装目录运行,文档目录被配置为安装目录下的子目录htdocs 。在你开始真正使用之前还有很多选项需要设置。但是为了尽快开始,可以使用安装时自动配置的配置文件。
◆配置 Apache for Windows
与Unix系统下的版本一样,Apache使用conf目录下的文件进行配置,但是Windows版本有几个不同的指令,参见指令索引察看全部可用指令。
Apache for Windows主要的不同点是:
1.)因为Apache for Windows是多线程的,它并不像Unix版本那样为每个请求使用一个单独的进程。 而是通常运行两个Apache进程:一个父进程,和一个处理请求的子进程。在子进程内部由多个单独的线程来处理每个请求。
因此与进程管理相关的指令是不同的:
MaxRequestsPerChild就像Unix版本中的指令一样,这条指令控制一个进程退出前将为多少个请求提供服务。 然而,与Unix不同的是,一个进程将为所有请求而不是只为一个请求服务,因此如果设置这条指令,建议将它设为一个很大的值。默认设置 MaxRequestsPerChild 0 使得进程从不退出。
警告: 启动新的子进程时将会重新读入服务器配置文件。如果你修改了httpd.conf ,新的子进程将有可能不能启动或者可能得到预期之外的结果。
ThreadsPerChild是一条新的指令,用来告诉服务器应该使用多少个线程,指明了服务器可以立刻处理的最大连接数;如果你的站点有大量的点击,请确认你设置了足够大的值。推荐的默认设置是 ThreadsPerChild 50 。
2.)接收文件名作为参数的指令必须使用Windows文件名而不是Unix文件名。 但是,因为Apache内部使用Unix风格的名字,你必须使用正斜杠而不是反斜杠。可以使用盘符;如果省略盘符,将假定使用Apache可执行文件所在盘符。
3.)Apache for Windows具有运行时装入模块的能力,不需要重新编译。如果Apach在正常情况下编译,它会在\Apache2\modules目录下安装许多可选模块。 要激活它们或其他模块,必须使用新的LoadModule指令。 举例来说,要激活状态模块,使用下列指令(除了access.conf中的状态激活指令以外):
LoadModule status_module modules/mod_status.so
也可使用创建可加载模块中的信息。
4.)Apache也可以加载ISAPI(Internet Server Applications Programming Interface)扩展,例如被Microsoft IIS服务器和其他一些Windows服务器所使用的。这里有更多相关信息。注意Apache不能加载ISAPI 过滤器。
5.)当运行CGI脚本时,Apache查找脚本解释器是由ScriptInterpreterSource指令配置的。
6.)由于在Windows下管理具有像.htaccess这样名字的文件是很困难的,你会发现在配置文件中使用AccessFilename指令改变它的文件名是很有用的。
7.)在Windows NT上,Apache启动时发生的错误将会记入Windows事件日志(event log)。这个机制将在Apache尚不能使用error.log文件的时候运作。你可以通过"事件查看器"的MMC接口查看Windows事件日志。
注意,在Windows 9x上不存在事件日志机制,因此无法记录启动错误。
◆以服务方式运行Apache for Windows
Apache仅能够在Windows NT上作为服务运行。
你可以选择在安装Apache时自动将其安装为一个服务。如果你选择"for all users",那么Apache将会被安装为服务。如果你选择了"only for the Current User",你可以在安装后手动将Apache注册为服务。注意,你必须是Administrators组的成员才能成功注册服务。
使用Apache Service Monitor工具,可以查看和管理你所在网络上的所有机器上安装的Apache服务的状态。为了能够使用这个工具管理Apache服务,你必须首先自动或手动安装Apache服务。
你可以在Apache安装目录的bin子目录下,使用如下命令将Apache安装为Windows NT服务:
apache -k install
如果你想指定服务的名称,可以使用下面的命令。当你在同一机器上安装多个Apache服务时,你必须为它们指定不同的名字。
apache -k install -n "服务名"
如果你想为不同名称的服务使用不同的配置文件,则安装时需要指定配置文件:
apache -k install -n "服务名" -f "c:\files\my.conf"
如果你使用的是第一个命令,也就是除 -k install 外没有其它命令行参数,那么被安装的服务名称将是:Apache2 ,配置文件将使用conf\httpd.conf 。
要移除一个Apache服务很简单:
apache -k uninstall
或者使用下述命令移除特定名称的Apache服务:
apache -k uninstall -n "服务名"
通常,启动、重启、关闭Apache服务的方法是使用Apache Service Monitor工具,另外也可以使用控制台命令:NET START Apache2 和 NET STOP Apache2 或者通过Windows服务控制面板。在启动Apache服务之前,你应当使用下面的命令检查一下配置文件的正确性:
apache -n "服务名" -t
你可以通过命令行开关来控制Apache服务。要启动一个已经安装的Apache服务,可以使用:
apache -k start
要停止一个已经安装的Apache服务,可以使用:
apache -k stop
或
apache -k shutdown
要重启一个运行中的Apache服务,强制它重新读取配置文件,可以使用:
apache -k restart
默认情况下,Apache服务将被注册为以本地系统用户(LocalSystem帐号)身份运行。LocalSystem帐号没有网络权限,不能通过任何Windows安全机制访问网络,包括文件系统、命名管道、DCOM或secure RPC ,但是它对于本地资源却拥有广泛的特权。
永远不要把网络权限授予LocalSystem帐号!如果你需要Apache能够访问网络资源,最好按照下述方法为Apache另外建立一个单独的帐号。
你应该建立一个单独的帐号来运行Apache服务。特别是在必须通过Apache访问网络资源的时候,我们更加强烈建议你这样做。
1.)创建一个普通域用户帐号,并牢记对应的密码。
2.)授予这个新建的帐号作为服务登陆和作为操作系统一部分运行权限。在Windows 2000/XP/2003上你可以使用"组策略"或通过"本地安全策略"的MMC接口来完成这个操作。
3.)确认新建的帐号是Users组的一个成员。
4.)确认新建的帐号具有读取和执行(RX)所有文档和脚本目录(例如:htdocs和cgi-bin)的权限。
5.)确认新建的帐号对Apache的logs目录具有读/写/删除(RWD)的权限。
6.)确认新建的帐号对Apache.exe二进制文件具有读取和执行(RX)的权限。
注意:一个很好的实践经验是赋予运行Apache服务的用户读取和执行(RX)整个Apache2目录的权限,并且对logs子目录具有读/写/删除(RWD)的权限。