我使用数字海洋水滴作为我的开发环境。液滴是Ubuntu 14.04上DO的LAMP堆栈液滴。我已经运行apache来使用phpmyadmin访问我的mysql数据库。
最近phpmyadmin莫名其妙地停止了工作。我检查了一下,看起来apache没有正常启动。我收到以下错误:
* Restarting web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'start' failed.
The Apache error log may have more information.\
所以看起来端口80正被另一个进程占用。有人向我建议我使用netstat
来确定它是哪个过程。果然sudo netstat -tapen | grep ":80"
显示有一些其他进程正在侦听端口80:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 8849 920/nginx
tcp 0 0 104.131.29.69:8000 0.0.0.0:* LISTEN 1000 10361 1683/php5
tcp6 0 0 :::80 :::* LISTEN 0 8850 920/nginx
所以我试图按照this回答来终止这个过程。当我这样做时,再次运行netstat
产生了这个
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 8849 921/nginx: worker p
tcp 0 0 104.131.29.69:8000 0.0.0.0:* LISTEN 1000 10361 1683/php5
tcp6 0 0 :::80 :::* LISTEN 0 8850 921/nginx: worker p
所以这个过程似乎只是改变了数字,但没有死。
我也试过this回答但没有改变。
我不知道这个nginx进程是什么 - 我不记得曾经在我的服务器上启动了一个nginx进程,以防万一我不知道它是如何在我重启服务器的时候幸存下来的(我是也试过)。有几个人建议使用netstat来查找端口上的内容,但我现在还不知道该怎么做才能找到它。为什么我重新启动服务器还能存活?我很确定apache,或者你看到的php服务器都必须在服务器关闭时重新启动。
感谢。
答案 0 :(得分:3)
此命令将显示正在使用端口80的进程:
sudo lsof -i:80
请务必使用“sudo”。
答案 1 :(得分:1)
可能是一个init服务,它将在系统启动时重新启动。
答案 2 :(得分:0)
使用以下命令停止nginx。
sudo /etc/init.d/nginx stop