扫一扫
关注微信公众号

在Microsoft Windows中使用Apache(2)
2007-09-21   51CTO.com 

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

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

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

Could not start the Apache2 service on \\COMPUTER

Error 1067; The process terminated unexpectedly.

只要启动Apache出错你就会得到这个错误信息。为了弄清是什么引起了错误, 你应该遵循作为控制台程序运行Apache中的建议。

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

这两种"服务"有相当大的区别:

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

Apache -n "服务名" -k start

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

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

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

◆作为控制台程序运行Apache

虽然通常推荐将Apache作为服务来运行,但是在某些情况下从命令行运行反而更加容易。在Windows 9x上,从命令行运行Apache是推荐的方法,因为这些系统中缺乏可靠的服务支持。

可以使用下列命令将Apache作为控制台程序从命令行运行:

apache

Apache将会一直保持运行,直到被Ctl+C组合键中断。

你还可以在安装后通过 开始按钮 --> 程序 --> Apache HTTP Server 2.2.xx --> Control Apache Server 在控制台中运行Apache 。这将会打开一个控制台窗口并在其中启动Apache 。如果你没有将Apache安装为服务,该窗口将一直保持打开,直到被Ctl+C组合键中断,并在几秒钟后退出。如果你已经将Apache安装为服务,那么那个快捷方式将会启动服务,如果Apache服务已经启动了,则什么也不做。

你可以在另外一个控制台窗口中输入以下命令停止正在运行的Apache服务:

apache -k shutdown

这种方法比使用Ctl+C组合键更好,因为它可以让Apache完成所有当前的操作并且优雅的清理所占用的资源。

Apache可以被从新启动,这将导致它重新读取配置文件,重启前所有正在进行的操作都将不被打断的完成。可以使用下面的命令重启Apache :

apache -k restart

请熟悉Unix版本Apache的用户注意,这些命令对应于Unix命令 kill -TERM pid 和 kill -USR1 pid 。命令中之所以使用 -k 选项,就是为了提醒用户这是源自Unix下的kill命令。

如果Apache控制台窗口在启动后出乎意料的立即关闭,请打开一个新的控制台窗口,切换到Apache的安装目录下bin子目录中,运行apache命令并读取错误信息。然后再到日志目录中查看error.log文件以寻找可能的配置错误。如果你的Apache采用的是默认安装,这些命令应当是:

c:

cd "\Program Files\Apache Group\Apache2\bin"

apache

等候Apache停止,或者使用Ctl+C组合键,然后输入下列内容:

cd ..\logs

more < error.log

可以在命令行中为Apache指定一个配置文件,有两种方法可以在命令行中指定配置文件:

-f 可以指定一个绝对路径或相对路径的配置文件:

apache -f "c:\my server files\anotherconfig.conf"

apache -f files\anotherconfig.conf

-n 可以指定已安装的Apache服务所使用的配置文件:

apache -n "服务名"

在这两种情况下,必须在配置文件中设置正确的ServerRoot值。

如果你没有使用 -f 或 -n 指定配置文件的路径,Apache将会使用硬编码在服务器内的路径,比如:conf\httpd.conf 。这个内置的路径是相对于安装目录的,要想检查这个内置的路径,你可以通过 -V 开关调用Apache ,查看名为SERVER_CONFIG_FILE的变量值:

apache -V

Apache将会按照下列顺序检查ServerRoot值:

1.)通过 -C 命令行开关指定的ServerRoot值。

2.)通过 -d 命令行开关指定的值。

3.)当前工作目录。

4.)安装二进制文件时在注册表中登记的项目。

5.)编译进二进制文件的值,该值默认为:/apache ,你可以使用 apache -V 命令查看显示出来的HTTPD_ROOT变量的值。

在安装过程中,将会在注册表中新建一个版本特定的注册表键。这个键的位置取决于安装类型。如果你选择的是"for all users",那么将位于HKEY_LOCAL_MACHINE分支下,如下所示:

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Group\Apache\2.0.43

如果你选择的是"for the current user only",那么将位于HKEY_CURRENT_USER分支下,其中的内容取决于当前登陆的用户,如下所示:

HKEY_CURRENT_USER\SOFTWARE\Apache Group\Apache\2.0.43

这个键已经被编译进了服务器,使得你可以测试新版本而又不影响老版本。当然,你必须注意不要在同一个目录中安装两个不同的版本。

如果你没有使用二进制安装,在某些情况下Apache将会抱怨注册表键丢失。如果在这种情况下服务器仍然可以找到正确的配置文件,那么就可以安全的忽略它。

这个注册表键其实就是包含conf子目录的ServerRoot目录。Apache将要从中读取httpd.conf文件。如果该配置文件中又包含了一个ServerRoot指令,并且指向的目录与注册表中登记的不同,Apache将以配置文件中的指令为准。如果你复制了配置文件或者整个Apache目录到一个新的位置,你要千万记得修改httpd.conf中的ServerRoot指令,使其指向正确的位置。

◆安装的测试

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

http://localhost/

应该出现一个欢迎页面,并且页面上有到Apache用户手册的链接。 如果什么都没有发生或是得到了一个错误,检查logs子文件夹中的 error.log文件。如果你的主机没有联网或者DNS配置有严重问题,你也许需要输入这样的URL :

http://127.0.0.1/

如果你将Apache配置为在非80端口监听(比如:8080),你应当使用下面的URL明确指定端口:

http://127.0.0.1:8080/

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

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

热词搜索:

上一篇:在Microsoft Windows中使用Apache(1)
下一篇:Apache2.2版本的编译安装

分享到: 收藏