Apache 无法重新启动 - httpd 已死但子系统已锁定

Apache 无法重新启动 - httpd 已死但子系统已锁定

我希望有人能紧急帮助我。
我一直在尝试让我的 Centos 服务器恢复运行。

我昨天按计划进行了 yum 更新,但是今天早上我发现 httpd 已死(我猜是 logrotate 的问题)。

我可以发出“service httpd start”,它似乎可以正常启动,但状态显示“httpd 已死但子系统已锁定”。
我可以删除子系统锁定并重新启动,但随后我收到:
“(98)地址已在使用中:make_sock:无法绑定到地址 0.0.0.0:80
没有可用的监听套接字,正在关闭
无法打开日志”

然后运行 ​​netstat -plant 显示 httpd 正在运行

tcp 0 0 0.0.0.0:80 0.0.0.0:* 监听 8191/httpd
tcp 0 0 0.0.0.0:443 0.0.0.0:* 监听 8191/httpd

我可以从我的 httpd.conf 中删除 Listen 80,这样可以消除第一个错误,但随后它会显示:“(98) 地址已在使用中:make_sock:无法绑定到地址 0.0.0.0:443
没有可用的监听套接字,正在关闭
无法打开日志”

我的配置文件中没有 443 的条目?

运行 tail -f /var/log/messages 后,我收到一个令人担忧的条目:
www kernel: httpd[8189]: segfault at 0 ip b7367c48 sp bf89f4fc error 4 in libc-2.5.so[b72f8000+152000]

请问有什么想法吗?

你的,克里斯

答案1

您可能仍有 httpd 在端口 80 和 443 上运行。尝试 pkill httpd;或 pkill -9 httpd
然后再次运行 netstat -plant 并检查端口 80 和 443 上的 httpd 是否消失。
现在再次启动 apache。

您说您的配置中没有 443,那么“grep -ril 443”/etc/apache2 说了什么?

答案2

您还可以使用 lsof -i tcp:443 检查是否有任何进程绑定到 443;然后您可以终止该进程或找到有问题的服务。

答案3

我也遇到过类似的事情。原来 httpd 确实一直在运行!显然,如果您在检查服务状态时权限不足,则“httpd 已死但子系统已锁定”消息可能会产生误导。切换到 root 并查看是否收到不同的消息,或者 ping 您的服务器,您可能会发现它正在运行!

答案4

可能还有另一个 httpd 实例正在运行,请执行

`lsof -i :80` 

并且应该显示它是否正在运行。如果它正在运行,请执行以下操作

kill -9 <pid>

此外,您可能需要检查 /etc/httpd/httpd.conf 文件中是否存在错误,因为这可能会导致服务启动错误

相关内容