Apache 启动失败,地址已被使用(但实际上并非如此)

Apache 启动失败,地址已被使用(但实际上并非如此)

我正在尝试设置运行 Ubuntu 12.04 的虚拟机。我使用端口 80 配置了两个虚拟主机,但 Apache 无法启动。

我收到此错误:
(98) Address already in use: make_sock: could not bind to address 0.0.0.0:80

输出netstat -tulpn显示没有任何东西使用端口 80。这可能是什么原因造成的?

答案1

确保您没有Listen 80在 .conf 文件中声明两次。

例如,您可能同时拥有 inports.conf和 inn sites-enabled/www.conf

要找出答案,请使用:grep -ri listen /etc/apache2

仅保存Listen 80在一个地方。

答案2

回答我解决这个问题的方法。将来可能会对某人有所帮助。

尝试netstat -ltnp | grep :80

这将返回类似

tcp6 0 0 :::80 :::* 监听 1047/apache2

然后运行

sudo kill -9 1047

其中 1047 是在端口 80 上运行的程序的 pid。您可以替换从netstat

答案3

我有一个 Nginx 服务器在监听我的 AWS EC2 服务器,我认为它是在我构建 EC2 时配置的,因此我得到了 Address already in use 错误。所以我停止了该服务并启动了 Apache2 服务:

sudo service nginx stop
sudo service apache2 start

答案4

当我遇到这个问题时,原来是因为我的 Apache 无法在启动时启动,因为我有一个 SSL 站点,需要输入证书密码。

判断您是否属于这种情况的一个好方法是运行ps -ef | grep apache:如果返回的进程看起来像是/bin/bash /usr/share/apache2/ask-for-passphrase mysite.com:443 RSA等待在您永远看不到的终端中输入密码。

首先,我杀死了挂起的进程(kill -HUP向 /usr/sbin/apache2 进程的进程 ID 发送一个应该足以杀死其他进程,但ps -ef | grep apache为了确保万无一失,还要再做一次)。

然后我按照说明在这篇文章中创建一个不需要输入密码的 SSL 密码文件。然后一切service apache2 start正常,Apache 在重启后正常启动。

相关内容