此文档解释了如何在Microsoft Windows平台上安装、配置和运行Apache 2.0。 如果你发现了bug,或者希望以其他方式作出贡献, 请使用我们的 bug报告页面
本文档的大多数内容假定你是从一个二进制发布版安装Apache到Windows上。 如果你想自己编译Apache(可能有助于开发和跟踪bugs),参看 编译Windows下的Apache
现在,对Windows 9x的支持是不完善的。 当前Apache 2.0并不期望在Windows 9x平台上运行。 如果你有兴趣在那方面给于帮助,请看开发者站点上的 如何加入主题的信息。 将来可能会因为某些原因提供这方面的支持, 我们欢迎提供使Apache能够运行在Windows 9x上的补丁。
本文档使用到的缩写及其意义解释包括:
  • Windows NT: 指所有版本的基于NT核心的Microsoft Windows操作系统, 包括Windows NT, Windows 2000, Windows XP and Windows.NET Server 2003及后续版本。
  • Windows 9x: 指所有版本的定位于家庭使用的Microsoft Windows操作系统, 包括Windows 95, Windows 98 and Windows ME。
 

对操作系统的要求

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中解决了这些问题。
 

下载 Apache for Windows

关于Apache最新版本的有关信息可以在位于 [url]http://httpd.apache.org/[/url] 的Apache web服务器上找到。那里会列出当前发行版本、 所有最近的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不需要这个升级。
注意,使用这个安装包不能在同一个机器上安装两套Apache 2.0。 但是,在同一个机器上,安装一个1.3系列 一个2.0系列的Apache则没有问题。 如果你需要在同一个机器上安装两套不同的2.0版本, 则必须 用代码编译和安装Apache.
运行已下载的上述Apache .msi文件。安装程序会要求提供下列信息:
  • 安装Apache的文件夹(缺省是 \Program Files\Apache Group\Apache, 虽然你可以把它指定为任何其他文件夹)
  • 开始菜单上的名称(缺省是"Apache Web Server")
  • 安装类型。选择]"Typical"选项会安装除源码以外的所有内容。 选择"Minimum"选项不安装说明手册和源码。如果希望安装源码请选择"Custom"安装方式。
安装期间,Apache将会配置你所选择安装目录下的 conf文件夹中的文件。 但是如果那个目录下已有同名文件存在,原有文件将不会被覆盖, 而新的相应的文件将会被加上 .default扩展名。 所以,举例来说,如果 conf\httpd.conf已经存在,那么不会对它做任何改变, 而新版本http.conf的内容将会被写入文件 conf\httpd.conf.default。 安装完成以后你应该检查 .default文件中的内容看看有没有不同, 如果必要,更新你原有的配置文件。
而且,如果你已经有一个名为 htdocs\index.html的文件,它也不会被覆盖掉 (也不会安装 index.html.default文件)。 这意味着你在一个旧版本Apache上安装新版本是安全的 (但是你必须在安装之前首先停掉原有服务器然后在安装完成后再启动服务器)。
安装Apache以后,要求你应该编辑 conf目录下的配置文件。这些 文件已在安装期间被配置以便Apache能够从安装目录运行,文档目录被配置为安装 目录下的子目录 htdocs。在你开始真正使用之前还有很多选项需要设 置。但是为了尽快开始,可以使用安装时自动配置的配置文件。
 

配置 Apache for Windows

Apache使用 conf目录下的文件进行配置,与Unix系统下的版本一样, 但是Windows版本有几个不同的指令,可阅读 Apache 文档察看全部可用指令。
Apache for Windows主要的不同点是:
  • 因为Apache for Windows是多线程的,它并不像Unix版本那样为每个请求使用一个单独的进程。 而是通常运行两个Apache进程:一个父进程,和一个处理请求的子进程。 在子进程内部由单独的线程来处理每个请求。
    因此"process"-管理指令族是不同的:
    MaxRequestsPerChild - 就像在Unix版本中的相同指令,这条指令控制一个进程退出前将为多少个请求提供服务。 然而,与Unix不同的是,一个进程将即时为所有请求而不是只为一个请求服务, 因此如果设置这条指令,建议将它设为一个很大的值。 缺省的设置, MaxRequestsPerChild 0,不会引起进程总是退出。
    警告: 启动新的子进程时将会重新读入服务器配置文件。如果你修改了httpd.conf, 新的子进程将有可能不能启动或者可能得到预期之外的结果。
    ThreadsPerChild - 这是一条新的指令,用来告诉服务器应该使用多少个线程。 指明了服务器可以立刻处理的连接的最大数量; 如果你的站点有大量的点击,确认并为你的站点设置这条足够大的值。 缺省值是 ThreadsPerChild 50
  • 接收文件名作为参数的指令必须使用Windows文件名取代Unix文件名。 但是,因为Apache内部使用Unix风格的名字,你必须使用正斜杠而不是反斜杠。 可以使用盘符;如果省略,将假定使用Apache执行文件所在盘符。
  • Apache for Windows具有运行时装入模块的能力,不需要重新编译。 如果Apach是e在正常情况下编译,它会在 \Apache\modules目录下安装许多可选模块。 要激活它们或者其他模块,必须使用新的 LoadModule指令。 举例来说,要激活状态模块,使用下列指令(除了 access.conf中的状态激活指令以外):
    LoadModule status_module modules/mod_status.so
    也可使用 创建可装载模块中的信息。
  • Apache也可以装载ISAPI扩展( i.e., Internet Server Applications),例如Microsoft IIS服务器和其他一些Windows服务器所使用的。 这里有更多相关信息。注意Apache 不能装载ISAPI 过滤器。
  • 当运行CGI脚本时,Apache查找脚本解释器使用的方法是由 ScriptInterpreterSource 指令配置的。
  • 由于在Windows下管理具有像 .htaccess这样名字的文件经常是很困难的, 你会发现在配置文件中使用 AccessFilename 指令改变使用的配置文件的名字是很有用。
 

以服务方式运行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 "服务名"
 

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

对于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条目到列表。
 

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

当Apache第一次被安装为服务(例如使用 -i选项),它会以用户"System"(本地系统账号)运行。 如果web服务器的所有资源都在本地系统上,这样做会问题比较少,但是将会具有很大的安全权限来影响本地机器!
本地系统账号是一个很有特权的本地账号,因此你不应该用它运行任何共享软件应用程序。 但是,它没有网络权限,不能通过任何NT安全机制离开本地机器,包括文件系统、命名管道、DCOM或secure RPC。
永远不要把网络权限授予SYSTEM账号!创建一个新的用户帐号来代替它, 给这个用户授予合适的权限,并使用"Log On As:"选项。选择开始菜单 -> 设置 -> 控制面板 -> 服务 -> apache服务 ...并点击"启动服务"来访问该设置
一个运行在本地系统账号背景中的服务继承了SCM(服务控制管理器)的安全背景,与任何已登录账号都没有关联,也没有用于验证的任何证书(域名、用户名和密码)。
SYSTEM账号没有网络权限,因此对于服务一个Apache的共享安装实例或者共享页都是不可见的。如果你打算使用 任何网络资源,下面的步骤应该有所帮助:
  • 在控制面板的服务对话框中选择Apache并点击启动服务。
  • 证实服务的账号是正确的。你可能希望为Apache服务创建一个账号。
  • 重新输入密码和确认密码。
  • 转到域的用户管理。
  • 从标题栏菜单点击策略,选择用户权限。
  • 选择高级用户权限选项。
  • 在下拉列表中,确认以下权限已授予选择的账号:
    • 作为操作系统一部分运行
    • 备份文件和目录
    • 作为服务登录
    • 还原文件和目录
  • 确认选择的账号是user组的成员。
  • 确认选择的账号获得了访问所有文档脚本目录的权力(最少需要读取和浏览访问)。
  • 确认选择的账号对Apache日志目录有读/写/删除访问权限!
如果你允许使用这个帐号登录为一个用户,你就可以自己登录上去测试执行脚本、读取web页的权限,还可以用控制台窗口启动Apache。如果这样工作正常,你又执行了上述的操作,那么Apache就能够正常地作为服务运行了。
错误代码2186是一个很好的提示,说明你需要检查"log On As"选项,因为服务器不能访问必要的网络资源。
 

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下把启动错误记录在应用程序事件日志里。 运行事件察看器并选择应用程序日志检查相应纪录。
即使没有错误信息弹出警告你发生了错误,也应该用事件查看器检查应用程序日志以防有错误发生。
 

从命令行运行Apache

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

控制服务方式的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 "服务名"
同样,引号只是在服务名含有空格时才是必需的。
 

高度试验性的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服务器。
 

安装的测试

启动Apache运行以后(不管是控制台窗口还是作为服务), 它会在80端口上进行监听(除非你改变了配置文件中的 Listen指令。 要连接到服务器访问默认页面,启动一个浏览器并输入下列URL:
[url]http://localhost/[/url]
应该出现一个欢迎页面作为应答,并且页面上有到Apache用户手册的链接。 如果什么都没有发生或是得到了一个错误,检查 logs文件夹中的 error_log文件。如果你的主机没有联网,你也许需要输入这样的URL:
[url]http://127.0.0.1/[/url]
一旦你的基本配置可以工作了,你应该编辑 conf目录下的文件来恰当地配置Apache。 此外,如果你改变了作为NT服务运行的Apache的配置, 你应该首先尝试从命令行启动来保证能够无错地启动Apache服务。
因为Apache 不能 与其他TCP/IP应用程序共享同一个端口, 你可能需要先停止或者卸载某些特定的服务。这包括(但不限于) 别的web服务器和BlackIce那样的防火墙。如果你只能在禁止其他服务的情况下启动Apache, 那么需要重新配置Apache或者其他程序使它们不监听同一个TCP/IP端口。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Apache是开放源代码的Web服务器软件,是最常用的Web服务器。Apache常用在unix系统,也有windows平台的版本。本文以windows平台为例,介绍Apache的安装和配置方法。

因为Apache对asp支持得不好,如果您的网站用到了asp,建议您使用win 2000 server + IIS。



安装Apache



一、下载

windows平台的Apache可以在这个网址下载:

[url]http://nagoya.apache.org/mirror/httpd/binaries/win32/[/url]

Apache的版本目前有两个分支:1.3.x和2.0.x。初学者用1.3.x就可以了。本文以1.3.x为例。

在上面的网址里,包含了两个分支的最新版本。请选择后缀为“exe”或“msi”的安装文件下载。



二、安装

运行下载的Apache文件,即可开始安装。Apache的安装过程很简单。只需要设置下面这个窗口:



在“Network Domain”里输入域。如果用本站的二级域名,例如“test.dnschek.net”,请输入“test.dnschek.net”。如果用顶级域名,请输入“xxx.com”。

在“Server Name”里输入服务器名。如果用本站的二级域名,请输入您的域名“test.dnschek.net”。如果用顶级域名,请输入“[url]www.xxx.com[/url]”。

在“Administrator's Email Address”里输入网站管理员的Email地址。

除此之外,安装过程里所有的选项,全部用默认选项就可以了。



三、运行

1、Win 9x:

Apache安装后,会在“开始”->“程序”里增加一个“Apache HTTP Server”的组。进入该组,选择“Control Apache Server”->“Start”即可启动Apache。

2、Win NT/2000/XP/2003

在这些系统里,用默认选项安装的Apache,除了在“开始”->“程序”里增加一个“Apache HTTP Server”的组之外,还会在系统的服务里增加一个Apache服务。该服务被设置为系统启动时自动运行。



配置Apache



一、配置文件

Apache是一个后台运行的程序,没有界面。所有的配置,都包含在配置文件里。主配置文件是:

C:\Program Files\Apache Group\Apache\conf\httpd.conf

如果要修改Apache的配置,可以用任何一个文本编辑工具(例如记事本)编辑这个配置文件。在配置文件里,以“#”开头的行是注释行。



二、配置选项

在配置文件里的主要选项如下:



#Listen 3000
#Listen 12.34.56.78:80

Apache的IP地址和端口。一般来说不需要设置,Apache会绑定在本机所有IP地址的80端口上。



Port 80

Apache的端口。默认值是80。



ServerName test.dnschek.net

Web服务器的名字。安装时输入的“Server Name”就是保存在这里。



DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs"

这是网站的根目录。如果您想把网站文件存放在“D:\myweb”目录下,可以把DocumentRoot后面的目录修改为“D:/myweb”。



Options Indexes FollowSymLinks MultiViews

为了安全起见,请把上面的“Indexes”删掉。否则别人可以浏览到您网站里的所有文件。



DirectoryIndex index.html

默认首页文件名。在浏览器里输入一个地址(例如[url]http://test.dnschek.net/[/url])的时候,Apache会查找这个默认的首页文件打开。如果要配置多个默认首页文件名,请用空格分开。



ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/"

CGI文件存放路径。



三、高级配置


1、设置虚拟目录

在配置文件中找下面这行:

<IfModule mod_alias.c>

在这行下面添加如下内容:

Alias /vdir/ "c:/comexe/"

<Directory "c:/comexe/">
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

这样,通过访问 [url]http://test.dnschek.net/vdir/[/url],就可以访问到c:\test\目录下的内容。

Apache默认开设了两个虚拟目录:“/icons/”和“/manual/”。这两个虚拟目录没有用,可以在配置文件中删除。



2、如何解决中文网页显示乱码

(1)在配置文件中找包含“AddLanguage”或“AddCharset”的行,在这些行最前面增加一行:

AddDefaultCharset GB2312

(2)养成良好的习惯,在每个网页的<head></head>里加入这行:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

一般的中文版网页编辑工具(例如FrontPage、Dreamweaver等)都会自动加上这行。



3、如何解决中文文件名无法访问

在ie中选择 工具 -> internet选项 -> 高级 -> 取消“总是以UTF-8发送URL”。

这个方法很麻烦,请尽量不要使用中文的网站文件名。



请注意:

1、Apache配置过程中最关键的两点是:网站根目录和默认首页文件名。必须要把网站文件放在所指定的网站根目录下,而且默认首页文件名必须要设置正确,否则将看不到您的网页。

2、每次配置文件更改后,要重新启动Apache才会生效。

————————————————————————————————

特别声明:--

一、本文为原创,著作权及使用权为(作者笔名:闪电cto)本人所有。 ­

二、本文首发于51cto个人博客(http://xudeqiang.blog.51cto.com)。  ­

三、本文只供互联网上的读者分享,不供共享范畴,希知。 ­

四、未经许可严禁对本文作修改、节选、断章性质的处理。 ­

五、可转载,但必须注明原文章首发的出处网址,及文章作者,严禁复制。 ­

六、如若转摘用于杂志网络媒体新闻,必须通知作者得到允许后方可,需收稿费。­

七、作者联系信息:QQ:306718122   邮箱levinboy@foxmail.com

——————————————————————————————