有一个nginx进程在端口80上进行侦听,我不知道它是如何到达那里的

时间:2015-01-24 01:11:28

标签: apache nginx

我使用数字海洋水滴作为我的开发环境。液滴是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服务器都必须在服务器关闭时重新启动。

感谢。

3 个答案:

答案 0 :(得分:3)

此命令将显示正在使用端口80的进程:

sudo lsof -i:80

请务必使用“sudo”。

答案 1 :(得分:1)

可能是一个init服务,它将在系统启动时重新启动。

答案 2 :(得分:0)

使用以下命令停止nginx。

sudo /etc/init.d/nginx stop