我尝试重新启动 Apache 2.2.14(也在 Ubuntu 10.04 上使用 PHP 5.3.2,以 root 身份运行所有命令)。它关闭了,但不会重新启动。这是一个全新的 VPS,没有防火墙或 IP 表。当我运行 时apache2ctl start
,我收到以下响应:
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
apache2ctl status
产生这个:
Looking up localhost
Making HTTP connection to localhost
Alert!: Unable to connect to remote host.
lynx: Can't access startfile http://localhost/server-status
'www-browser -dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars
lsof | grep http
不返回任何内容
netstat -plant
:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1139/mysqld
tcp 0 0 209.40.198.146:53 0.0.0.0:* LISTEN 1153/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1153/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1125/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1153/named
tcp 0 240 209.40.198.146:22 66.214.136.198:37853 ESTABLISHED 1280/0
tcp6 0 0 :::53 :::* LISTEN 1153/named
tcp6 0 0 :::22 :::* LISTEN 1125/sshd
tcp6 0 0 ::1:953 :::* LISTEN 1153/named
我最多是个 Linux 新手,但我看到的所有其他东西都要求提供这些报告。没有任何东西阻止端口 80,但 Apache 却无法绑定到它。问题出在 Apache 上吗?我设置了虚拟主机,但它们非常简单,我以前也使用过相同的配置。如果需要,我可以发布 .conf 文件。
apache2ctl -t
:语法正确
service apache2 start
:
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
答案1
假设您以 root 身份运行 apache(service apache start
比手动更好apachectl
),因为用户无法绑定特权端口,请检查您是否没有语法错误:
apachechtl -t
然后检查你的NameServer
指令配置和解析机制。
确保您NameServer myhost.example.com
所引用的地址可以解析(检查 /etc/hosts 或您的 DNS 缓存)。
答案2
如果您Listen 80
在配置中多次指定(或其他端口),就会发生这种情况。每次出现时,Apache 都会尝试绑定指定的端口。第二次出现时,Apache 将无法绑定端口,因为实际上该地址已被使用。请仔细检查配置并删除重复的Listen
指令。