启动apache失败(无法绑定到地址0.0.0.0:80)

问题描述 投票:44回答:12

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

我有Ubuntu 11.10

当我运行命令启动apache2时:

sudo /etc/init.d/apache2 start

我收到以下错误消息:

启动Web服务器apache2 apache2:无法可靠地确定服务器的完全限定域名,使用127.0.1.1 for 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启动失败。

有什么建议?

apache port kill netstat
12个回答
109
投票

为我运行此命令工作:

fuser -k -n tcp 80

0
投票

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

root# ps aux |grep apache

它将显示Apache PID,只是杀死该PID并重启Apache Server。


0
投票

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


0
投票

使用其中之一

sudo killall httpd

要么

sudo killall apache2

检查是否有人使用80端口

sudo netstat -tulpn| grep :80

重启

sudo service httpd start

然后重新启动服务器。我花了一整天的时间来理解这个问题

enter image description here


16
投票

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

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


4
投票

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

    sudo netstat -ltnp | grep ':80'

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

删除Hiawatha修复了问题(sudo dpkg --purge hiawatha)。 Ubuntu 12.04.2服务器。


4
投票

我有同样的问题

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

杀戮进程无效,因为守护进程不断实例化它。

apachectl stop   

解决了这个问题。


2
投票

试试这个,它对我有用......

sudo netstat -ltnp | grep ':80'

这将返回以下内容:

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

然后

sudo kill -9 1047

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


1
投票

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


1
投票

我要做的只是检查/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文件中的内容。它为我做了诀窍,重新启动和杀死进程根本没有帮助。反正它没有开始。


1
投票

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

$ netstat -anp | grep

例如。 $ netstat -anp | grep 80

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


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
© www.soinside.com 2019 - 2024. All rights reserved.