54

更新:已修复,似乎 VirtualHosts 配置文件之一在启用站点时出错。

我有 Ubuntu 11.10

当我运行命令启动 apache2 时:

sudo /etc/init.d/apache2 start

我收到以下错误消息:

启动 web 服务器 apache2
apache2:无法可靠地确定服务器的完全限定域名,使用 127.0.1.1 作为 ServerName (98) 地址已在使用中:make_sock:无法绑定到地址 0.0.0.0:80 没有可用的侦听套接字,正在关闭无法打开日志操作“开始”失败。

我运行此命令以获取使用端口 80 的进程:

sudo netstat -ltnp | grep ':80'

返回此输出:

tcp6       0      0 :::80                   :::*                    LISTEN      1176/

要知道哪个进程是我运行这个命令:

ps -wlp1176

返回:

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
5 D    33  1176     1  0  80   0 -     0 exit   ?        00:00:00 apache2

但是,如果我尝试终止该进程:

sudo kill -9 1176

它不会杀死它,如果我再次运行 netstat 命令仍然出现在监听并且 apache 启动失败。

有什么建议么?

4

12 回答 12

116

为我运行此命令工作:

fuser -k -n tcp 80
于 2012-11-08T16:09:56.557 回答
18

它可能是使用端口 80 的 Skype 或 nginx。

尝试关闭Skype,或运行:sudo /etc/init.d/nginx stop

于 2013-04-04T19:31:56.127 回答
6

我有同样的错误,只是想确认运行

    sudo netstat -ltnp | grep ':80'

帮助我指出 Hiawatha 网络服务器阻碍了 Apache2。

删除 Hiawatha 解决了这个问题 (sudo dpkg --purge hiawatha)。Ubuntu 12.04.2 服务器。

于 2013-05-17T12:23:38.497 回答
5

我有同样的问题

对我来说,apache 已经在运行,但运行方式错误。

杀死进程不起作用,因为守护进程不断重新实例化它。

apachectl stop   

解决了这个问题。

于 2014-07-18T15:59:43.683 回答
3

试试这个,它对我有用……</p>

sudo netstat -ltnp | grep ':80'

这将返回以下内容:

tcp6 0 0 :::80 :::* LISTEN 1047/apache2

然后

sudo kill -9 1047

然后我能够重新启动 Apache,一切正常。

于 2013-07-31T07:03:07.270 回答
2

使用任何一个

sudo killall httpd

或者

sudo killall apache2

检查是否有人使用 80 端口

sudo netstat -tulpn| grep :80

重启

sudo service httpd start

然后重新启动服务器。我花了一整天的时间才明白这个问题

在此处输入图像描述

于 2018-09-02T10:00:15.997 回答
1

转到设备管理器,从菜单/视图中选择“显示隐藏的设备”,转到“非即插即用驱动程序”/HTTP,双击它以禁用它(并禁用或手动一些依赖它的服务)。重新启动并享受!

于 2013-09-04T11:13:52.810 回答
1

看起来其他进程正在使用端口 80。

$ netstat -anp | grep

例如。$ netstat -anp | grep 80

通过上面你得到进程名称,如果你想使用端口,那么你需要停止进程或更改端口

于 2017-11-26T04:56:21.540 回答
0

这会因为重复安装 apache 或端口被另一个服务使用而发生

sudo lsof -i | grep "httpd"

您将找到进程 ID 和服务的侦听端口。然后检查

cd /proc/(process id of http)

然后使用命令杀死该进程

kill -9 pid

现在

sudo netstat -nltp

再次杀死进程

句法:-

kill -9 pid

现在启动apache

sudo ./apachectl start
于 2014-10-09T06:19:02.443 回答
0

我要做的只是检查您的 /etc/apache2/sites-available/your-domain-name.com.conf 中是否设置了以下内容

SSLEngine on 
SSLCertificateFile /your/path/to/your-domain.com.crt
SSLCertificateKeyFile /your/path/to/your-domain.com.key
SSLCACertificateFile /your/path/to/your-domain.com.ca-bundle

并且没有任何输入错误的目录或任何其他不应该在您的 .conf 文件中的内容。它对我有用,因为重新启动和终止进程根本没有帮助。无论如何它并没有开始。

于 2015-03-15T14:46:26.873 回答
0

我使用以下程序修复了它。以 root 用户身份运行以下命令。

root# ps aux |grep apache

它将向您显示 Apache PID,只需杀死该 PID 并重新启动 Apache 服务器。

于 2015-05-27T11:14:35.923 回答
0

您只能在 .conf 的一个文件中监听 PORTNUMBER。不要把它放在多个文件中。尝试一下 :)

于 2018-05-12T16:46:44.460 回答