我目前正在开发一个首选 Apache Web 服务器的项目,但 Windows 是强制性的。我已经有几年没有使用 WAMP 了,但我相信这些天它运行良好且稳定。我们有四个 Web 服务器,每个服务器都是两个负载平衡的对。Apache 作为 Windows 服务运行。
一位同事发现一些信息表明在自定义帐户而不是“本地系统帐户”下运行 Apache 更安全。因此,已在每个框上创建了一个本地帐户,并将凭据输入到“服务属性”对话框的“登录”选项卡中。
有时当 Apache 配置发生变化时,我需要重新启动每个服务。为此,我在“服务”窗口中选择 Apache2.4 条目并单击重新启动按钮。但是,对于所有盒子来说,它是否会成功是一触即发的。当它失败时,我收到一条 Windows 错误消息:
Windows 无法在本地计算机上启动 Apache2.4 服务。
错误 1069:由于登录失败,服务未启动。
因此,每当发生这种情况时,我都会尽职尽责地再次添加服务密码,然后它总是会启动。我的一个猜测是对话忘记了给它的密码。它永远不会忘记用户名。
我在“本地安全策略”->“本地策略”->“用户权限分配”->“作为服务属性登录”中检查了授予该本地用户的权限,发现该用户正常在其中,但如果丢失,则Apache 重启将失败。
在研究这个时,我发现了这个相同的场景(尽管这种情况下的服务是 PostgreSQL)。但是,在我看来,使用本地系统帐户的公认答案并不是对所提出问题的答案。问题应该是:为什么用户失去了作为服务登录的权利?
重新加载配置不需要重启 Apache HTTP Server,你可以运行
这样,只有子 Apache HTTP Server 进程将重新启动,并且您的服务器不会错过任何请求。
如果这些 Windows 服务器是域的成员,则某些组策略可能会覆盖此“作为服务登录”的本地策略。
正如 bcs78 所说,在与一位同事讨论过这个问题后,我们非常确定组策略正在修改一些东西。我们还被告知我们没有机会更改政策。
我们有:
我已经不知道问题发生在哪些服务器上,但很可能只是 AD 服务器 (2) 和 (3)。由于这些是 LAN 服务器并位于防火墙后面,因此我们决定将它们切换回以“本地系统帐户”运行 Apache。
我们希望 (1) 中的前端 Web 服务器不会受到此策略的影响,因此我们可以保留我们喜欢的配置。