无法在 Ubuntu 12.10 上启动 Apache:没有可用的监听套接字

无法在 Ubuntu 12.10 上启动 Apache:没有可用的监听套接字

我无法启动使用 apt-get 安装的 apache2。我在两个不同的 Ubuntu 12.10 安装中都遇到了同样的错误,一个在我的台式电脑上,另一个在 VirtualBox 中运行:

michal@michaltest:~$ sudo service apache2 start
 * Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
           [fail]

lsof 说:

michal@michaltest:/var/log/apache2$ sudo lsof -i :80
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ubuntu-ge  2074 michal   11u  IPv4  23978      0t0  TCP michaltest.local:47578->mulberry.canonical.com:http (CLOSE_WAIT)
firefox   25194 michal   71u  IPv4  42477      0t0  TCP michaltest.local:59793->69.59.197.29:http (ESTABLISHED)
firefox   25194 michal   76u  IPv4  41834      0t0  TCP michaltest.local:59698->69.59.197.29:http (ESTABLISHED)
gvfsd-htt 25320 michal   12u  IPv4  42568      0t0  TCP michaltest.local:56203->lb260.amst.cotendo.net:http (CLOSE_WAIT)

netstat 说:

michal@michaltest:/var/log/apache2$ sudo netstat -lnp | grep '80'
unix  2      [ ACC ]     STREAM     LISTENING     8030     876/acpid           /var/run/acpid.socket

/var/log/apache2/error.log:

[Thu Nov 08 11:13:30 2012] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Thu Nov 08 11:17:32 2012] [notice] caught SIGTERM, shutting down

/etc/apache2/ports.conf:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

感谢您的帮助。

编辑#1:

michal@michaltest:~$ sudo netstat -ano | grep '443'
tcp       54      0 10.0.2.15:58504         91.189.92.70:443        CLOSE_WAIT  off (0.00/0/0)

答案1

你只需要删除 nginx(3 个包)就可以了.....

你的主要问题是没有可用的监听套接字.您遇到此问题是因为另一个应用程序/服务获取了端口 80在您的 Ubuntu 服务器上。

现在您需要终止获取端口 80 的进程。您可以使用以下命令轻松找到该进程:-

sudo netstat -ltnp | grep':80'

这将返回类似以下内容:-

tcp 0 0 127.0.0.1:80 0.0.0.0:* 监听 1588/aolserver4-nsd

对于上述情况进程号 1588获得端口 80,您需要终止该进程 1588。

sudo kill -9 1588

现在你可以通过以下命令启动 Apache 服务器

sudo /etc/init.d/apache2 启动

答案2

解决“apache2:无法可靠地确定服务器的完全限定域名,使用 127.0.1.1 作为 ServerName”错误,请在 apache2.conf 文件中指定以下内容

ServerName HOSTNAME_OF_THE_SERVER

保存conf文件并重新启动apache服务器。

请发布输出sudo netstat -ano | grep '443'

另外,请确保如果您配置 apache 来监听 443/ssl 端口,那么您应该在 apache 网络服务器上配置 ssl 证书。

答案3

你有没有看到:

Unable to open logs

我认为您可以检查 /var/log/apache2 的权限!

答案4

听起来问题在于另一个进程打开了端口 443。您需要先终止该进程。

linux - 如何删除CLOSE_WAIT套接字连接 - 堆栈内存溢出说:

CLOSE_WAIT意味着您的程序仍在运行,并且尚未关闭套接字(内核正在等待它关闭套接字)。添加-pnetstat获取 pid,然后更强制地将其杀死(如果SIGKILL需要)。这应该可以摆脱您的CLOSE_WAIT套接字。您也可以使用ps来查找 pid。

相关内容