无法启动 httpd 服务器:地址已被使用

Failed to start httpd server: Address already in use

我当然知道这里已经 post 提出了同样的问题。但是,当我搜索它时,状态与我不同,我无法理解答案。因此我 post 我的问题在这里。抱歉重复问题。

我的主页突然不能用了,发现是httpd服务启动失败。下图是我命令 'sudo service httpd start'

时的结果

Starting httpd: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80 (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down AH00015: Unable to open logs [FAILED]

重启也不行。

$ sudo service httpd restart
Stopping httpd: [FAILED]
Starting httpd: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80 (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down AH00015: Unable to open logs [FAILED]

我应该怎么做才能重启httpd服务并恢复我的主页?

您的 httpd 服务器已经启动。尝试重新启动服务而不是重新启动它:

 sudo service httpd restart

错误98通常发生在某些网络服务器正在使用端口时,这里是80,或者 干净的版本 port/address 没有完成。

如果其他网络服务器正在使用端口,请关闭服务器。您可以通过

找出哪个服务正在使用端口80
netstat -pan |grep 80

然后关闭服务。

如果服务器不正常关闭时端口没有释放,那么

sudo service networking restart

从绑定中释放 address/port 组合。这通常会为我修复错误 98。

  1. 在 conf.d 中定义的文件会将监听端口设置为 80,并在 httpd.conf 中重复声明监听端口,这可能会导致此问题。
  2. 似乎端口 80 被一些其他进程使用,可以通过 "netstat -anp|grep :80" 检查或为 httpd.conf 中的 Listen 指令分配一个新的可用端口并重新启动 httpd。

我也遇到了同样的问题。所以我查看了 netstat:

sudo netstat -tulpn | grep :80

并收到:

tcp6       0      0 :::80                   :::*                    LISTEN      7836/docker-proxy

终止进程后:

sudo kill 7836