apache2 没有运行但它在端口 80 上监听

apache2 没有运行但它在端口 80 上监听

我制作了一个运行一个网站的私有 Amazon EC2 映像,然后开始安装 redmine。完成所有安装后,即将重新启动 Apache 时,我遇到了以下问题(抱歉,您可能需要放大才能看到屏幕截图): 在此处输入图片描述

我对所发生情况的理解是,apache2 没有运行,但它正在监听端口 80。然后我尝试: 在此处输入图片描述 这给出了同样令人困惑但一致的结论,apache2 没有运行,但我确信是进程 18304,即 apache2 正在监听端口 80。最后,我不得不终止该进程并重新启动 apache,这样就成功了。有人能向我解释一下是什么原因造成的,并给出解决方法吗?

更新1:

下列的合成器patel建议使用lsof在此处输入图片描述 这和之前的问题完全一样,只是流程不同。

答案1

有时当您停止 apache(或任何其他程序)时,脚本无法正确关闭程序,因为它在等待某些东西(例如 IO),但删除了 pid 文件。因此,脚本认为 apache 没有运行,因为没有 pid 文件,但 apache 正在运行,或者有时没有真正运行,而是卡在端口上。

在这些情况下,您必须终止进程,然后才能启动程序。我见过很多这种类型的卡住进程,来自 apache、slapd、cirus……有时会发生这种情况。

答案2

尝试运行

lsof -n | grep TCP 

此外.. apache2 控制器并不总是最可靠的,它只检查 PID 文件,而不是实际进程。

ps -aef | grep httpd

$1 表示您仍有 httpd 正在运行。

答案3

正如上面的海报所说,使用

lsof -n | grep TCP

或者

lsof -n | grep "*:www"

此外,在 Ubuntu 中,它使用进程名称“apache2”,因此您应该使用以下命令进行检查:

ps -ax |grep apache

而不是 grep httpd

答案4

跑步

ps aux|grep apache

你有看到

/usr/share/apache2/ask-for-passphrase localhost:443 RSA

如果是这样

其中一个站点包含带密码的 SSL 证书。因此,当 Apache 尝试在系统启动时启动时,如果没有人手动输入密码,它就无法继续。

因此,您有两个选择来解决这个问题:

  1. 添加SSLPassPhrase对话框指令到您的配置。

  2. 删除你的密码(安全性较低)

相关内容