Apache正在运行;但是,它报告说它没有运行,也不会重新启动。
# /etc/init.d/httpd status
httpd.worker is stopped
# /usr/sbin/lsof -iTCP:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd.wor 1169 root 3u IPv6 2974 TCP *:http (LISTEN)
httpd.wor 1211 daemon 3u IPv6 2974 TCP *:http (LISTEN)
httpd.wor 1213 daemon 3u IPv6 2974 TCP *:http (LISTEN)
httpd.wor 1215 daemon 3u IPv6 2974 TCP *:http (LISTEN)
httpd.wor 1352 daemon 3u IPv6 2974 TCP *:http (LISTEN)
#/etc/init.d/httpd restart
Stopping httpd: [FAILED]
Starting httpd: [Wed Mar 24 10:33:51 2010] [warn] module proxy_ajp_module is already loaded, skipping
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[FAILED]操作系统: Linux发行版: CENTOS 5
重新启动服务器没有帮助,也没有杀死apache并启动它。
你知道是什么导致了这种不一致吗?
发布于 2010-03-24 15:22:55
通常,init.d脚本使用文件来存储已启动的守护进程的PID,例如/var/run/httpd.pid或类似的东西。可能是脚本存储了错误的PID,或者是过时的PID,或者存在权限问题,而脚本一开始就不能创建文件。
发布于 2010-03-24 15:22:22
我猜您在之前的Apache发布中有一个过时的PID文件。我没有访问CentOS系统的权限,但是在我的Fedora 11机器上,这个文件位于/var/run/httpd/httpd.pid中--您可以通过在/etc/init.d/httpd中搜索"pidfile“来检查您的位置(我假设您使用的是从RPM安装的Apache版本;如果没有使用apache2 /usr/local/apache2或类似的文件,PID文件可以放在/usr/local/apache2/log中)。
停止Apache,删除陈旧的PID文件,然后重新启动,您应该会没事的。
发布于 2010-03-24 15:40:51
D文件通常只是一个shell脚本--它很可能调用apachectl来启动和停止进程。检查它发送的命令以停止进程,并查看在不使用init.d文件的情况下运行它直接使用的任何命令时会发生什么。
如果仍然不起作用,请检查see服务器的错误日志,看看其中是否有任何有用的信息。
为了进行调试,您还可以尝试使用apachectl graceful命令发送--它将重新加载配置并重新启动子进程,而不需要删除主进程。(问题是,这意味着有一些配置更改不会生效,但除非您正在进行调优,否则这可能并不重要)
https://serverfault.com/questions/125812
复制相似问题