以服务方式运行Apache for Windows

来源:互联网 发布:刀具推荐知乎 编辑:程序博客网 时间:2024/05/01 17:15

转自:http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/platform/windows.html#winsvc

以服务方式运行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)所有文档和脚本目录(例如:htdocscgi-bin)的权限。
  5. 确认新建的帐号对Apache的logs目录具有读/写/删除(RWD)的权限。
  6. 确认新建的帐号对Apache.exe二进制文件具有读取和执行(RX)的权限。
一个很好的实践经验是赋予运行Apache服务的用户读取和执行(RX)整个Apache2目录的权限,并且对logs子目录具有读/写/删除(RWD)的权限。

如果你允许使用这个帐号作为一个用户和服务登录,你就可以用这个帐号登录上去测试执行脚本、读取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服务器。

0 0
原创粉丝点击