我已經安裝了Ubuntu 11.04 i386服務器並安裝了nginx 1.0.11。另外,我正在使用this init.d script,這是我在幾個不同的地方發現的唯一一個。它很好地啓動服務器,但是,在停/復它說Nginx守護進程停止失敗
* Stopping Nginx Server... [fail]
當然,守護進程沒有停止,並且在重新啓動時的配置不再被重新裝入。
我該如何修復?
我已經安裝了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;
這裏是與許多基於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
它爲我工作。感謝分享。 – 2016-05-11 04:23:35
試試這個命令:
sudo fuser -k 80/tcp
對我來說,這是'/運行/ nginx.pid'在nginx.conf中,我用'/ var/run/nginx.pid'取代了它,並且它工作正常。謝謝!我的問題中的 – 2016-02-25 14:06:29
是該路徑的引號 – 2016-05-04 11:38:53
謝謝 - 我看到兩個dirs中的pid文件,但將init和nginx.conf更改爲指向'var'dir,而是解決了與停止/重新啓動腳本相同的問題。 – Scott 2018-03-06 22:08:39