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

时间:2012-04-15 07:39:16

标签: apache port kill netstat

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

我有Ubuntu 11.10

当我运行命令启动apache2时:

sudo /etc/init.d/apache2 start

我收到以下错误消息:

  

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

有什么建议吗?

12 个答案:

答案 0 :(得分:109)

为我运行此命令:

fuser -k -n tcp 80

答案 1 :(得分:16)

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

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

答案 2 :(得分:4)

我遇到了同样的错误,只想确认正在运行

    sudo netstat -ltnp | grep ':80'

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

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

答案 3 :(得分:4)

我遇到了同样的问题

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

杀戮进程无法正常工作,因为守护进程不断重新实现它。

apachectl stop   

解决了这个问题。

答案 4 :(得分:2)

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

sudo netstat -ltnp | grep ':80'

这将返回以下内容:

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

然后

sudo kill -9 1047

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

答案 5 :(得分:1)

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

答案 6 :(得分: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文件中的内容。它为我做了诀窍,重新启动和杀死进程根本没有帮助。它无论如何都没有开始。

答案 7 :(得分:1)

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

$ netstat -anp | grep

例如。 $ netstat -anp | grep 80

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

答案 8 :(得分: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

答案 9 :(得分:0)

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

root# ps aux |grep apache

它将向您显示Apache PID,只需终止该PID并重启Apache Server。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

使用

sudo killall httpd

sudo killall apache2

检查是否有人使用80端口

sudo netstat -tulpn| grep :80

重启

sudo service httpd start

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

enter image description here