我们有一台 RHEL 6.5 服务器,它充当本地 YUM 服务器,并使用 httpd。它在端口 6809 上运行。直到昨天,它都运行良好。我的一位同事正在另一台服务器上进行一些额外的部署,这些服务器应该使用 YUM 服务器,但 yum 无法连接。他承认,他也在 YUM 服务器上做了一些工作,但他不知道做了与 httpd 配置相关的工作。
因此我们意识到 YUM 服务器上的 httpd 没有运行并且拒绝启动:
# service httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address 172.29.84.41:6809
no listening sockets available, shutting down
Unable to open logs
[FAILED]
我们已经使用 lsof 和 netstat 检查过端口 6809 没有被占用:
lsof -iTCP -sTCP:LISTEN -P -n
和
netstat -tupan | grep -Ei LISTEN
一切正常,没有其他进程。
我们还在 /etc/httpd 目录中查找了 Listen,并且只有一个带有 6809 端口的指令:
httpd# grep -Ri listen *
conf/httpd.conf:# Listen: Allows you to bind Apache to specific IP addresses and/or
conf/httpd.conf:# Change this to Listen on specific IP addresses as shown below to
conf/httpd.conf:#Listen 12.34.56.78:80
conf/httpd.conf:#Listen 80
conf.d/ssl.conf:# When we also provide SSL we have to listen to the
conf.d/ssl.conf:#Listen 443
conf.d/yum.conf:Listen yum-server:6809
logs/test.log:read(4, "Listen yum-server:6809\nServe"..., 4096) = 496
logs/test.log:listen(3, 511) = 0
logs/test.log:write(2, "no listening sockets available, "..., 46no listening sockets available, shutting down
Binary file modules/mod_info.so matches
Binary file modules/mod_wsgi.so matches
Binary file modules/mod_proxy_ftp.so matches
Binary file modules/mod_cgid.so matches
因此它不是重复的。
该 IP 是服务器本地的。
也没有任何 httpd 进程正在运行。
我们还重新安装了 httpd RPM。
SELinux 未运行:
# sestatus
SELinux status: disabled
请问还有什么问题?
非常感谢您的建议。
添加2:
致@André Fernandes:
# lsof -n -P -i :6809
# find /etc/httpd -type f | xargs grep Listen
/etc/httpd/conf.d/ssl.conf:#Listen 443
/etc/httpd/conf.d/yum.conf:Listen yum-server:6809
/etc/httpd/conf/httpd.conf:# Listen: Allows you to bind Apache to specific IP addresses and/or
/etc/httpd/conf/httpd.conf:# Change this to Listen on specific IP addresses as shown below to
/etc/httpd/conf/httpd.conf:#Listen 12.34.56.78:80
/etc/httpd/conf/httpd.conf:#Listen 80
对于@MadHatter,我缩短了输出并删除了真实姓名。但别名 yum_server 仍然存在:
# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.somewhe.re localhost trap-host
172.29.84.41 <FQDN and name> yum-server <other aliases>
...
添加 3:
ip addr show 输出:
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/ether 3c:4a:92:ed:c0:28 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/ether 3c:4a:92:ed:c0:28 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
link/ether 68:b5:99:c6:42:4c brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
link/ether 68:b5:99:c6:42:4c brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond2 state UP qlen 1000
link/ether 68:b5:99:c6:42:4e brd ff:ff:ff:ff:ff:ff
7: eth5: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond2 state UP qlen 1000
link/ether 68:b5:99:c6:42:4e brd ff:ff:ff:ff:ff:ff
8: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 3c:4a:92:ed:c0:28 brd ff:ff:ff:ff:ff:ff
inet 172.29.84.41/26 brd 172.29.84.63 scope global bond0
9: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 68:b5:99:c6:42:4c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global bond1
10: bond2: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 68:b5:99:c6:42:4e brd ff:ff:ff:ff:ff:ff
inet 10.1.212.71/24 brd 10.1.212.255 scope global bond2
答案1
我们找到了原因。它被隐藏了在 /etc/hosts 中。IP 和所有行内容都列在那里两次。在我们的产品所需的其他条目中,再次添加了该条目。当我们注释掉第二个条目时,httpd 开始按预期运行并停止双重绑定尝试。