启动 apache 失败(无法绑定到地址 0.0.0.0:80)

Posted

技术标签:

【中文标题】启动 apache 失败(无法绑定到地址 0.0.0.0:80)【英文标题】:Starting apache fails (could not bind to address 0.0.0.0:80) 【发布时间】:2012-04-26 23:15:37 【问题描述】:

更新:已修复,似乎 VirtualHosts 配置文件之一在启用站点时出错。

我有 Ubuntu 11.10

当我运行命令启动 apache2 时:

sudo /etc/init.d/apache2 start

我收到以下错误消息:

启动 web 服务器 apache2 apache2:无法可靠地确定服务器的完全合格 域名,使用 127.0.1.1 作为 ServerName (98)Address 已经在 使用:make_sock:无法绑定到地址 0.0.0.0:80 没有监听 套接字可用,正在关闭 无法打开日志 操作“开始” 失败了。

我运行这个命令是为了获取正在使用端口 80 的进程:

sudo netstat -ltnp | grep ':80'

返回此输出:

tcp6       0      0 :::80                   :::*                    LISTEN      1176/

要知道我运行这个命令是哪个进程:

ps -wlp1176

返回:

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
5 D    33  1176     1  0  80   0 -     0 exit   ?        00:00:00 apache2

但如果我尝试终止进程:

sudo kill -9 1176

它不会杀死它,如果我再次运行 netstat 命令仍然显示正在侦听并且 apache 启动失败。

有什么建议吗?

【问题讨论】:

那么 pid 1176 是什么? (ps -wlp1176) 5 D 33 1176 1 0 80 0 - 0 退出? 00:00:00 apache2 那么,这对你有什么建议吗?提示:与您尝试开始的内容进行比较。 在我看来 apache 它已经在运行,但它不提供页面,它不会停止,也不会启动或重新启动。 我也遇到过类似的情况。 pid 为 1345 的 apache2 进程占用了端口 80,但没有响应任何内容。 kill 1345 杀死了那个进程,然后我可以启动一个新的 apache2 进程。 【参考方案1】:

为我运行此命令工作:

fuser -k -n tcp 80

【讨论】:

在 Debian 4.0.4 中也为我工作。 每次重启实例时都会出现这个错误。你知道如何彻底解决吗? 对于那些没有遇到端口绑定问题并收到 vhost 语法错误的人,您首先要做的是查找 Listen 值。查看 Conflicting Listen directives 部分的wiki.apache.org/httpd/CouldNotBindToAddress 这个答案需要解释为什么它真正有用。【参考方案2】:

可能是skype或者nginx使用80端口。

尝试关闭Skype,或运行:sudo /etc/init.d/nginx stop

【讨论】:

【参考方案3】:

我遇到了同样的错误,只是想确认正在运行

    sudo netstat -ltnp | grep ':80'

帮我指出 Hiawatha 网络服务器阻碍了 Apache2。

删除 Hiawatha 解决了该问题 (sudo dpkg --purge hiawatha)。 Ubuntu 12.04.2 服务器。

【讨论】:

【参考方案4】:

试试这个,它对我有用……

sudo netstat -ltnp | grep ':80'

这将返回以下内容:

tcp6 0 0 :::80 :::* LISTEN 1047/apache2

然后

sudo kill -9 1047

然后我能够重新启动 Apache,一切正常。

【讨论】:

【参考方案5】:

进入设备管理器,从菜单/视图中选择“显示隐藏的设备”,进入“非即插即用驱动程序”/HTTP,双击禁用它(并禁用或手动一些依赖它的服务)。 重新启动并享受!

【讨论】:

【参考方案6】:

我遇到了同样的问题

对我来说,apache 已经在运行,但运行方式错误。

杀死进程不起作用,因为一个守护进程不断地重新实例化它。

apachectl stop   

解决了这个问题。

【讨论】:

【参考方案7】:

这是因为重复安装 apache 或端口被另一个服务使用

sudo lsof -i | grep "httpd"

您将找到进程 ID 和服务的侦听端口。然后检查

cd /proc/(process id of http)

然后使用命令杀死该进程

kill -9 pid

现在

sudo netstat -nltp

再次杀死进程

语法:-

kill -9 pid

现在启动 apache

sudo ./apachectl start

【讨论】:

【参考方案8】:

我要做的只是检查您的 /etc/apache2/sites-available/your-domain-name.com.conf 中是否设置了以下内容

SSLEngine on 
SSLCertificateFile /your/path/to/your-domain.com.crt
SSLCertificateKeyFile /your/path/to/your-domain.com.key
SSLCACertificateFile /your/path/to/your-domain.com.ca-bundle

并且没有任何输入错误的目录或任何其他不应该出现在您的 .conf 文件中的内容。它对我有用,因为重新启动和终止进程根本没有帮助。无论如何它都没有开始。

【讨论】:

【参考方案9】:

我使用以下程序修复了它。 以 root 用户身份运行以下命令。

root# ps aux |grep apache

它将向您显示 Apache PID,只需终止该 PID 并重新启动 Apache 服务器。

【讨论】:

【参考方案10】:

看起来其他进程正在使用端口 80。

$ netstat -anp | grep

例如。 $ netstat -anp | grep 80

通过上面你得到进程名称,如果你想使用端口那么你需要停止进程或更改端口

【讨论】:

【参考方案11】:

您只能在一个 .conf 文件中监听 PORTNUMBER。不要把它放在多个文件中。试试看:)

【讨论】:

【参考方案12】:

使用任一

sudo killall httpd

sudo killall apache2

检查是否有人使用 80 端口

sudo netstat -tulpn| grep :80

重启

sudo service httpd start

然后重启服务器。我花了一整天才明白这个问题

【讨论】:

以上是关于启动 apache 失败(无法绑定到地址 0.0.0.0:80)的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Windows Server 2008 R2 上启动 Apache

Docker:(13)权限被拒绝:AH00072:make_sock:无法绑定到地址 0.0.0.0:80

无法绑定到“127.0.0.1:6600”:地址已在使用中

Apache 错误:地址已在使用中:make_sock:无法绑定到地址 [::]:443

通过 SSH 隧道的 Java Swing 应用程序 MySQL 连接失败,并显示“本地端口 127.0.0.1:...无法绑定...地址已在使用中:JVM_Bind”

Akka,发送Udp失败,“无法分配请求的地址”