端口是空闲的,但是 Apache 失败了:“地址已经在使用中:make_sock:无法绑定到地址”

端口是空闲的,但是 Apache 失败了:“地址已经在使用中:make_sock:无法绑定到地址”

Apache(Linux Red Hat 4.1.x)启动失败,并显示消息:“地址已在使用中:make_sock:无法绑定到地址”。

# /etc/init.d/httpd start
Starting httpd: (98)Address already in use: 
make_sock: could not bind to address 0.0.0.0:8000
no listening sockets available, shutting down
Unable to open logs
                                                       [FAILED]

已经尝试做过:

killall -9 httpd

Apache 似乎没有运行。端口 8000 是空闲的,因此没有什么可以阻止 Apache 占用它。(nginx 在 :80 上作为反向代理)

 # netstat -tulpn| grep :80
 tcp  0   0 0.0.0.0:8001    0.0.0.0:*   LISTEN 17181/DarwinStreami
 tcp  0   0 0.0.0.0:80      0.0.0.0:*   LISTEN 7962/nginx.conf

也许有人会对如何解决这个问题有什么想法?

更新1:Apache 配置选项包括:

ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5

<IfModule prefork.c>
StartServers       1
MinSpareServers   5
MaxSpareServers   20
ServerLimit     200
MaxClients  200
MaxRequestsPerChild 2000

User apache
Group apache

DocumentRoot "/var/www/html"

NameVirtualHost *:8000

更新2:未找到 Pid:

# ls /etc/httpd/run/*.pid
/etc/httpd/run/crond.pid          /etc/httpd/run/sshd.pid
/etc/httpd/run/dhclient-eth0.pid  /etc/httpd/run/streamingadminserver.pid
/etc/httpd/run/haldaemon.pid      /etc/httpd/run/syslogd.pid
/etc/httpd/run/messagebus.pid     /etc/httpd/run/syslog-ng.pid
/etc/httpd/run/nginx.pid          /etc/httpd/run/xfs.pid

更新3:重启服务器没有帮助;)

更新4: nc -l 8000工作正常,所以问题不在于 8000 端口,而在于 Apache 本身。

更新5:“# /usr/sbin/lsof -i :8000”——无输出

答案1

您多次对同一套接字发出了 Listen 指令。使用这个指令grep -r Listen /etc/httpd/conf.d/*.conf /etc/httpd/conf/httpd.conf来找出罪魁祸首。

Apache 文档

错误条件
对同一 IP 地址和端口的多个 Listen 指令将导致出现 Address already in use 错误消息。

答案2

有时,当上次 Apache 停止时未删除 PID 文件时,我就会遇到这种情况。如果 PID 存在,请尝试在重新启动之前将其删除。

当我尝试使用与 apache 配置的运行帐户不同的帐户启动 apache 时,有时也会出现这种情况。

相关内容