重新启动nginx: nginxnginx: [紧急] 绑定到0.0.0.0:80失败(98: 地址已经在使用中)。

5

当我试着通过sudo /etc/init.d/nginx restart重启nginx时,我看到了主题中的信息。

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

我在两个不同的服务器上有两个安装版本...一个是从源代码编译而来的,另一个是自带phusion passenger的。

我尝试了这个命令:

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个回答

5
解决方案是在nginx.conf文件中取消注释此行代码:
pid        /var/run/nginx.pid;

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


2
我通过运行以下fuser命令来解决了这个问题: $ sudo fuser -k 80/tcp 这会终止使用80端口的任何进程。希望不会影响其他东西。
此技巧的来源: https://goo.gl/6oc0xD

0
$ sudo nginx -t 

为了查看所有进程,有时您可能没有完全的权限


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接