我今天早上来的时候,我们的网络服务器没有运行,所以我关闭了 apache 并尝试重新启动它。至少 2-3 周以来,这台服务器没有发生任何变化。上次我重新启动它时,httpd.conf 还在运行。我试过重新启动服务器,但没有成功。下面是我尝试启动 apache2 时收到的消息。
username:~$ sudo /etc/init.d/apache2 start
* Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
...fail!
答案1
已有一个进程正在监听端口 80。
您可以通过运行以下命令来识别它:
sudo netstat -anp | grep "0.0.0.0:80"
最右边的列将为您提供有问题的进程的 PID。
如果您确定您的 Apache 实例是此系统上唯一应绑定到端口 80 的实例,并且运行 init“stop”脚本没有任何效果,则可以尝试kill INSERTPIDHERE
它们,然后尝试再次启动 Apache。
答案2
最好的选择是,早期的 HTTPD 服务器的部分或全部仍在运行,无论是处于活动状态还是挂起状态。我建议您:
sudo /etc/init.d/apache2 stop && ps -leaf | egrep -i "(http|apache)"
grep 打印的任何内容都可能是可疑的。如果没有打印任何内容,则应检查是否有其他进程正在监听或使用端口 80。
答案3
虽然如果重新启动服务器不能解决问题,但挂起的 Apache 进程不太可能占用端口 80。最后一部分:
Unable to open logs
...fail!
这表明驱动器上或至少日志文件位置的剩余磁盘空间可能非常小。您可以通过键入来检查可用的可用空间df -h
。如果空间已满,可能需要尝试删除一些日志文件或其他不必要的文件。
答案4
这意味着另一个软件使用端口 80。
netstat -plan |grep :80 “此命令将显示正在使用端口 80 的用户”