Apache HTTP服务器 2.0版本在Microsoft Windows中的使用

此文档解释了如何在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



1、下载

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”的安装文件下载。



2、安装

运行下载的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地址。

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



3、运行

一、Win 9x:

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

二、Win NT/2000/XP/2003

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



配置Apache



1、配置文件

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

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

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



2、配置选项

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



#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文件存放路径。



3、高级配置


一、设置虚拟目录

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

<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/”。这两个虚拟目录没有用,能够在配置文件中删除。



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

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

AddDefaultCharset GB2312

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

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

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



三、如何解决中文文件名没法访问

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

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



请注意:

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

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

———————————————————————————————— css

特别声明:-- html

1、本文为原创,著做权及使用权为(做者笔名:闪电cto)本人全部。 ­ web

2、本文首发于51cto我的博客(http://xudeqiang.blog.51cto.com)。  ­ apache

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

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

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

6、如若转摘用于杂志网络媒体新闻,必须通知做者获得容许后方可,需收稿费。­ 浏览器

7、做者联系信息:QQ:306718122   邮箱levinboy@foxmail.com 安全

—————————————————————————————— 服务器

相关文章
相关标签/搜索