Apache2摔倒了

在我的开发服务器上。 艾维经常apache2只是倒下。 它不再作为一个过程运行。

服务器详细信息:Linux Debian蚀刻Apache2

# ps aux | grep apache www-data 6782 99.9 0.2 4792 2912 ? R Oct12 8592:53 /usr/sbin/apache/log root 22418 0.0 0.0 2852 704 pts/2 S+ 13:31 0:00 grep apache # apache2ctl restart httpd not running, trying to start (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 

当我检查/var/log/apach2/error.log时没有任何内容。

我想我想做两件事情。

  1. 找出为什么阿帕奇正在摔倒。 修理它

  2. 在哪里nessacary Congifure所以它不会再发生,也许设置日志文件更好?

如果我重新启动机器,我可以得到apache并再次运行。 任何人都可以解释这里发生了什么?

谢谢,德里克

恐怕你可能被黑客入侵了。 我会运行一个工具,检查一个root工具包,并寻找任何stream氓php脚本。 检查/ tmp的任何奇怪的文件或脚本。 我认为debian在合适的回购中已经有了。 祝你好运。

我要做的第一件事就是去找一个/ usr / sbin / apache / log文件,看看到底是什么东西。 这看起来很奇怪。 即使它看起来像一个有效的二进制文件,尝试“strings / usr / sbin / apache / log | less”,以查找任何可疑的东西。

ps应该在那里显示执行的命令,afaik,并且不存在像/ usr / sbin / * / log这样的命令。 在我的系统上(ubuntu),ps列出了/ usr / sbin / apache2。 我也经常使用debian,据我所知,在Debian上的设置是相同的。 另外,检查“pgrep -l apache”的输出。

如果你发现正常的事情正在发生(即你的服务器没有被黑客入侵),那么你可以尝试确保你没有运行与某些模块(特别是PHP)不兼容的multithreadingmpm。 另外,请检查磁盘空间,权限等。如果Apache的日志文件不可访问,Apache会放弃并崩溃,但通常在启动时发生。 类似的事情可能会发生,直到后来才打开的文件(虽然我不能认为这些文件是什么 – htaccess和密码文件应该优雅地失败)。

看起来pid 6782是一个apache进程,所以你为什么认为它没有运行? 这个过程可能会打开端口80,这就是为什么你不能开始一个新的。

我敢打赌,什么是杀死它是“重新启动”,当它旋转日志文件时发生。 但是直到它再次发生,你才会知道,你可以得到一个真正的“ps”输出,也可能是卡住的过程中的“strace”或“truss”。

我唯一一次看到这样的事情是networking接口没有configuration,并且apache有点开始但是自己挂了。 如果您的系统configuration为通过DHCP分配IP,这可能是一个弱点。 当然,如果你把sshjoinapache监听的同一个接口,那么这不是问题!

也许可以通过这种方式找出在端口80上听什么:

 lsof -Pni | grep ":80 "