为什么 apache 无法启动并且在错误日志中只说“配置失败”?

Mik*_*zke 5 apache-2.2

Apache 2.2.23 无法为我启动,日志文件中的唯一条目是:

[Fri Feb 22 02:54:24 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Feb 22 02:54:24 2013] [notice] Digest: generating secret for digest authentication ...
[Fri Feb 22 02:54:24 2013] [notice] Digest: done
Configuration Failed
[Fri Feb 22 02:54:57 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Feb 22 02:54:57 2013] [notice] Digest: generating secret for digest authentication ...
[Fri Feb 22 02:54:57 2013] [notice] Digest: done
Configuration Failed
Run Code Online (Sandbox Code Playgroud)

这让我发疯了。网络很好,磁盘很好,配置文件通过了语法检查,自从它以前工作以来没有任何改变。它只是拒绝启动,通常是在一些负载峰值之后。

我还提到,如果正常关闭没有成功,重启机制包括执行 kill -9 。

我在谷歌或这里找不到任何关于此的信息。

Mik*_*zke 11

通过删除所有站点配置、模块和配置指令,我终于找到了解决方案。

然后,最后,错误日志产生了这个 gem:

[Fri Feb 22 03:04:22 2013] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.10752) (5)
[Fri Feb 22 03:04:24 2013] [warn] pid file /etc/httpd/run/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
Run Code Online (Sandbox Code Playgroud)

现在,在谷歌上有答案。正如这里和其他地方所提到的,这个错误是由来自 apache 的太多打开的信号量引起的,因为磁盘是空的并且是可写的。

我通过运行解决了这个问题:

ipcs -s | grep www-data | awk '{print $2;}' | while read -r line; do ipcrm sem "$line"; done
Run Code Online (Sandbox Code Playgroud)

并将其添加到重启脚本中。现在,一切都很好。我认为这与使用 kill -9 之间存在相关性,但如果没有它,我就会遇到挂起、无响应的 apache 进程。

  • 在我的 RHEL 服务器上,我不得不用 `grep apache` 替换 `grep www-data`,但你的命令有效。谢谢。 (3认同)