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



我使用数字海洋液滴作为我的开发环境。这个液滴是 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

所以我试图按照这个答案杀死这个过程。当我这样做时,再次运行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

所以这个过程似乎只是改变了数字,但没有死亡。

我也尝试了这个答案,但没有任何变化。

我不知道这个nginx进程是什么 - 我不记得曾经在我的服务器上启动过nginx进程,以防我不知道它如何在我多次重新启动服务器后幸存下来(我也尝试过)。有几个人建议使用 netstat 来找出端口上正在侦听的内容,但现在我不确定该怎么做,因为我已经找到了它。另外,为什么它在我重新启动服务器后幸存下来?我很确定 apache,或者你在那里看到的 php 服务器都必须在服务器关闭时重新启动。

谢谢。

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

sudo lsof -i:80

确保使用"sudo"。

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

使用以下命令停止 nginx。

sudo /etc/init.d/nginx stop

相关内容

最新更新