重启nginx:nginxnginx:[emerg] bind()到0.0.0.0:80失败(98:地址已经在使用中)

时间:2013-04-13 00:59:41

标签: nginx bind pid

当我尝试使用sudo /etc/init.d/nginx restart重新启动nginx时,我收到了来自主题的消息。

我发现原因很可能是脚本不知道如何停止守护程序,因为pid文件(/var/run/nginx.pid)不是在启动时创建的。

我在两个不同的服务器上安装了两个...一个是从源代码编译的,另一个是由phusion乘客编写的。

我试过这个命令:

start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid --exec /usr/sbin/nginx -- -c /etc/nginx/nginx.conf

在两台机器上和一个pid文件上创建,另一方面它不是 - 在那台机器上路径有点不同(但我不认为这是相关的):

start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid --exec /opt/nginx/sbin/nginx -- -c /opt/nginx/conf/nginx.conf

流程开始,pid没有写......

我在Debian上......

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

解决方案是在nginx.conf中取消注释这一行:

pid        /var/run/nginx.pid;

看起来不同的安装方式不同,但正确的做法是取消注释。

答案 1 :(得分:2)

我能够通过运行以下fuser命令来解决这个问题

$ sudo fuser -k 80 / tcp

会杀死正在使用端口80的任何进程。但是并没有将其他任何东西搞砸。

归功于: https://goo.gl/6oc0xD

答案 2 :(得分:0)

$ sudo nginx -t 

查看所有流程,有时您没有完整的权限