当我尝试使用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上......
有什么建议吗?
答案 0 :(得分:5)
解决方案是在nginx.conf中取消注释这一行:
pid /var/run/nginx.pid;
看起来不同的安装方式不同,但正确的做法是取消注释。
答案 1 :(得分:2)
我能够通过运行以下fuser命令来解决这个问题
$ sudo fuser -k 80 / tcp
会杀死正在使用端口80的任何进程。但是并没有将其他任何东西搞砸。
答案 2 :(得分:0)
$ sudo nginx -t
查看所有流程,有时您没有完整的权限