見つけるのに時間がかかりましたが、最近のアップデートのように、Ubuntu 12.04またはUbuntu 14.04サーバーでNginxを停止できません。
Sudo service nginx stop
を実行し、nginx start/running, process 16178
を取得します。
Sudo service nginx stop
を再試行し、nginx start/running, process 16206
を取得します。
プロセス番号がどのように変化するかに注意してください。
/var/log/syslog
で理由がわかります:
Jun 11 11:57:51 kernel: [2318556.994508] init: nginx main process ended, respawning
。
NginxはSudo service nginx stop
を実行するたびに再生成されます。完全に停止することはありません。
Ubuntuを更新して再起動し、ローカルのテストイメージにサーバーを再インストールしました(Puppetを使用しています)。何も違いはありません。また、これに関連するバグを無駄に検索しようとしました。
誰も私がこの問題を解決する方法を知っていますか? Sudo service nginx stop
を実行し、結果としてすべてのnginxプロセスを停止できるようにしたいと思います。
Nginxサーバーは、新興プロセスによって処理されているようです。
/ etc/initフォルダーを見て、nginxを処理するファイルがないかどうかを確認します。
grep -r nginx /etc/init
次に、このファイルを編集して、構成ファイルのrespawn
オプションを削除します。
Sudo nginx -s quit
を使用してnginxプロセスを停止できます
/etc/init/nginx
で確認できます
certbot
によって、一時的なWebサーバーを使用してletsencrypt証明書を更新したいとき、私は同じ問題を抱えていました:毎回、nginxを停止しました
service stop nginx
数秒後に自動的に再起動したため、ドメインcertbotの証明を提供する際に、再生成されたnginxによってポート443がすでに使用されていました。
私はこれを直そうと急いでいたので、本当に汚い回避策を始めましたが、うまくいきました:
while true; do service nginx stop; sleep 2; done
今、証明書を更新し、後で正しい方法でnginxを完全に停止する方法を見つけることができました;)