启动 apache 失败(无法绑定到地址 0.0.0.0:80)
Posted
技术标签:
【中文标题】启动 apache 失败(无法绑定到地址 0.0.0.0:80)【英文标题】:Starting apache fails (could not bind to address 0.0.0.0:80) 【发布时间】:2012-04-26 23:15:37 【问题描述】:更新:已修复,似乎 VirtualHosts 配置文件之一在启用站点时出错。
我有 Ubuntu 11.10
当我运行命令启动 apache2 时:
sudo /etc/init.d/apache2 start
我收到以下错误消息:
启动 web 服务器 apache2 apache2:无法可靠地确定服务器的完全合格 域名,使用 127.0.1.1 作为 ServerName (98)Address 已经在 使用: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 启动失败。
有什么建议吗?
【问题讨论】:
那么 pid 1176 是什么? (ps -wlp1176
)
5 D 33 1176 1 0 80 0 - 0 退出? 00:00:00 apache2
那么,这对你有什么建议吗?提示:与您尝试开始的内容进行比较。
在我看来 apache 它已经在运行,但它不提供页面,它不会停止,也不会启动或重新启动。
我也遇到过类似的情况。 pid 为 1345 的 apache2 进程占用了端口 80,但没有响应任何内容。 kill 1345
杀死了那个进程,然后我可以启动一个新的 apache2 进程。
【参考方案1】:
为我运行此命令工作:
fuser -k -n tcp 80
【讨论】:
在 Debian 4.0.4 中也为我工作。 每次重启实例时都会出现这个错误。你知道如何彻底解决吗? 对于那些没有遇到端口绑定问题并收到 vhost 语法错误的人,您首先要做的是查找 Listen 值。查看 Conflicting Listen directives 部分的wiki.apache.org/httpd/CouldNotBindToAddress 这个答案需要解释为什么它真正有用。【参考方案2】:可能是skype或者nginx使用80端口。
尝试关闭Skype,或运行:sudo /etc/init.d/nginx stop
【讨论】:
【参考方案3】:我遇到了同样的错误,只是想确认正在运行
sudo netstat -ltnp | grep ':80'
帮我指出 Hiawatha 网络服务器阻碍了 Apache2。
删除 Hiawatha 解决了该问题 (sudo dpkg --purge hiawatha)。 Ubuntu 12.04.2 服务器。
【讨论】:
【参考方案4】:试试这个,它对我有用……
sudo netstat -ltnp | grep ':80'
这将返回以下内容:
tcp6 0 0 :::80 :::* LISTEN 1047/apache2
然后
sudo kill -9 1047
然后我能够重新启动 Apache,一切正常。
【讨论】:
【参考方案5】:进入设备管理器,从菜单/视图中选择“显示隐藏的设备”,进入“非即插即用驱动程序”/HTTP,双击禁用它(并禁用或手动一些依赖它的服务)。 重新启动并享受!
【讨论】:
【参考方案6】:我遇到了同样的问题
对我来说,apache 已经在运行,但运行方式错误。
杀死进程不起作用,因为一个守护进程不断地重新实例化它。
apachectl stop
解决了这个问题。
【讨论】:
【参考方案7】:这是因为重复安装 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
【讨论】:
【参考方案8】:我要做的只是检查您的 /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 文件中的内容。它对我有用,因为重新启动和终止进程根本没有帮助。无论如何它都没有开始。
【讨论】:
【参考方案9】:我使用以下程序修复了它。 以 root 用户身份运行以下命令。
root# ps aux |grep apache
它将向您显示 Apache PID,只需终止该 PID 并重新启动 Apache 服务器。
【讨论】:
【参考方案10】:看起来其他进程正在使用端口 80。
$ netstat -anp | grep
例如。 $ netstat -anp | grep 80
通过上面你得到进程名称,如果你想使用端口那么你需要停止进程或更改端口
【讨论】:
【参考方案11】:您只能在一个 .conf 文件中监听 PORTNUMBER。不要把它放在多个文件中。试试看:)
【讨论】:
【参考方案12】:使用任一
sudo killall httpd
或
sudo killall apache2
检查是否有人使用 80 端口
sudo netstat -tulpn| grep :80
重启
sudo service httpd start
然后重启服务器。我花了一整天才明白这个问题
【讨论】:
以上是关于启动 apache 失败(无法绑定到地址 0.0.0.0:80)的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Windows Server 2008 R2 上启动 Apache
Docker:(13)权限被拒绝:AH00072:make_sock:无法绑定到地址 0.0.0.0:80
Apache 错误:地址已在使用中:make_sock:无法绑定到地址 [::]:443
通过 SSH 隧道的 Java Swing 应用程序 MySQL 连接失败,并显示“本地端口 127.0.0.1:...无法绑定...地址已在使用中:JVM_Bind”