Nginxを停止したいのですが、このように失敗します。
_$ Sudo service nginx stop
Stopping nginx: [FAILED]
_
そしてnginx.pidの場所を定義する_nginx.conf
_には行があります。
_# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
_
しかし、ディレクトリ_nginx.pid
_には_/var/run/
_はありません。
_locate nginx.pid
_はこの出力を示します。
_/var/run/nginx.pid
/var/run/nginx.pid.oldbin
_
しかし、updatedb
の後は、検索に一致するものがありません。 CentOS release 6.5 (Final)
でnginx/1.4.4を使用しています。
Nginxデーモンを停止するにはどうすればよいですか?
これは_ps -ef | grep nginx
_の出力です。nginxデーモンがまだ実行されているようです。
_ironsand 17065 16933 0 15:55 pts/0 00:00:00 grep --color nginx
root 19506 1 0 2013 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
ironsand 19507 19506 0 2013 ? 00:00:25 nginx: worker process
_
そして_Sudo service nginx restart
_がこのエラーを出します。古いものはまだ生きているので、nginx
は起動に失敗すると思います。また、_/var/log/nginx/error.log-2014017
_にもこのエラーが含まれています。
_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()
[FAILED]
_
私は最初にそれのマスタープロセスを殺すことによってnginxを止めることを勧めます。 nginxが正しくシャットダウンされていないのは、initスクリプトを使用して停止できないことが原因である可能性があります。
ps -ef | grep nginx
これにより、nginxマスタープロセスのPIDが表示されます。上記のように:
ルート19506 1 0 2013? 00:00:00 nginx:マスタープロセス/ usr/sbin/nginx -c /etc/nginx/nginx.conf
使用してそれを殺す
殺す-9 19506
実行中のnginxプロセスがあるかどうか、またはポート80が使用されているかどうかをもう一度確認します。ポート80にバインドされているプロセスがある場合は、PIDを特定し、強制終了できるかどうかを確認します。
ps -ef | grep nginx
netstat -tulpn | grep 80
ファイルシステムに問題がなく、/ varファイルシステムに対して読み取り/書き込みができることを確認してください。次にnginxを起動します
サービスnginx開始
私にとって、pidファイル名はこれら2つのファイルで異なっていました:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
これら2つは一致する必要があります。
/usr/lib/systemd/system/nginx.serviceで調整してから、次のようにしました。
systemctl daemon-reload
systemctl start nginx
その後、それは正しく現れました。
私はこの問題を抱えており、ps -ef | grep nginx
は、受け入れられた回答で示唆されているようにマスタープロセスを強制終了しても、スピンアップし続けるワーカーを表示します。
[~]# ps -ef | grep nginx
nginx 10730 1 0 Sep14 ? 00:00:16 nginx: cache manager process
nginx 18469 1 0 Oct09 ? 00:11:02 nginx: worker process
nginx 25779 1 0 Oct13 ? 00:01:31 nginx: worker process
nginx 26458 1 0 15:45 ? 00:00:00 nginx: worker process
だから私の解決策それを修正するのは単にこれでした:pkill nginx && service nginx restart
私の問題は、2つの異なるconfファイルでpid
を指定していたことでした。 1つの参照を削除した後、.pid
ファイルを作成し、nginxを再起動すると、正常に動作し始めました。
Ubuntu 10.10および/ opt/nginx/sbinで実行されているnginxのコンパイル済みバージョンでも同様の問題がありました。
/opt/nginx/conf/nginx.confと/etc/nginx/nginx.confファイルの両方をチェックして、それらが一致することを確認します。
/etc/init.d/nginx起動ファイルを調整して、nginx.pidのロケーションテストと一致するようにします。
Sudo /etc/init.d/nginx configtest # should show no failures
Sudo /etc/init.d/nginx start # should show starting
Sudo /etc/init.d/nginx status # should show running
Sudo /etc/init.d/nginx stop # should show stopping -- (wait for a few)
Sudo /etc/init.d/nginx status # should show can not access PID file for nginx
Sudo netstat -tap # should not show nginx program running with open local address
これは、nginxが以前に起動されていた場合、すぐにクラッシュすることを示しているようです。 /var/log/nginx*
の内容を確認して、プロセスが実行していることを確認しましたか?
編集:また、nginxのOSとバージョンを教えていただければ、より詳細な回答を提供できます。
Nginxを停止するには、マニュアルでその方法を確認してくださいman nginx
。
デフォルトの方法は、nginx -s stop
で停止信号を使用することです。
本当に簡単なはずです。オプションは次のとおりです。
stop, quit, reopen, reload.
これを試して:
Sudo fuser -k 443/tcp
Sudo fuser -k 80/tcp
ここで見つかりました: https://www.digitalocean.com/community/questions/nginx-is-unable-to-bind-to-44
確認するためにもっと情報が必要ですが、あなたはすでにあなたが欲しいngnixのインスタンスではなくanother Webサーバーを実行しているので、それを見つける必要があります-エラーはポート80を示しています使用中ですが、何によってではありません
netstat -tulpn
を試してください。ローカルアドレスの下で:80で終わるエントリを探しています。これにより、プログラム名とPIDがわかるので、それを識別できます。これが私のものです。私はlighttpdを実行しており、3行目に表示されています。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 4684/rtorrent
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 923/php-fpm.conf)
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 972/lighttpd
tcp 0 0 0.0.0.0:6901 0.0.0.0:* LISTEN 4684/rtorrent
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 720/sshd
tcp6 0 0 :::22 :::* LISTEN 720/sshd
udp 0 0 0.0.0.0:6881 0.0.0.0:* 4684/rtorrent
他のWebサーバーをシャットダウンします適切に(upstartから生成される場合、通常の「kill」が機能しない可能性があるため)、ngnixを起動してみます。その場合は、initスクリプトを編集して、他のWebサーバーの起動を停止するか、別の電源でその構成を調整できます。