Nginx守护进程停止失败

问题描述:

我已经安装了Ubuntu 11.04 i386服务器并安装了nginx 1.0.11。另外,我正在使用this init.d script,这是我在几个不同的地方发现的唯一一个。它很好地启动服务器,但是,在停/复它说Nginx守护进程停止失败

* Stopping Nginx Server...  [fail] 

当然,守护进程没有停止,并且在重新启动时的配置不再被重新装入。

我该如何修复?

它很可能无法杀死进程。

打开位于/etc/??.d/nginx中的nginx脚本,并找到nginx.pid被认为是的位置。它会像“/var/run/nginx.pid”。

如果pid文件不存在,请打开nginx.conf并查找pid设置。如果它不匹配 - 将conf值设置为脚本认为应该在的位置,例如, (任何端口,你正在使用或使用)

sudo fuser -k 80/tcp

或者:

# pid of nginx process 
pid /var/run/nginx.pid; 
+2

对我来说,这是'/运行/ nginx.pid'在nginx.conf中,我用'/ var/run/nginx.pid'取代了它,并且它工作正常。谢谢!我的问题中的 – 2016-02-25 14:06:29

+0

是该路径的引号 – 2016-05-04 11:38:53

+0

谢谢 - 我看到两个dirs中的pid文件,但将init和nginx.conf更改为指向'var'dir,而是解决了与停止/重新启动脚本相同的问题。 – Scott 2018-03-06 22:08:39

这里是与许多基于Debian的发行版,包括Ubuntu 11.04的作品Nginx上的init脚本,我修改(基于过时的offical init script):

https://github.com/hulihanapplications/nginx-init-debian

这工作得很好,在我的Ubuntu服务器。希望这可以帮助。

sudo service nginx restart会给你这样的事情:

Stopping nginx:           [FAILED] 
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
nginx: [emerg] still could not bind() 

然后通过他们的口手工杀掉该进程,通过他们的ID杀死进程:

ps -ef |grep nginx 
kill <pid> 

我曾遇到过类似的问题。

通常我使用apache/apache2。

以下可以帮助你:

sudo nginx -s stop | ps -ef | grep nginx | awk {'print $2'} | xargs sudo kill -9 | sudo service apache2 start 

对于文档请参考本Github Gist

+0

它为我工作。感谢分享。 – 2016-05-11 04:23:35

试试这个命令:

sudo fuser -k 80/tcp