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