NGINX Webサーバーがあり、Certbot(letsencrypt)を使用してWebサイトの証明書を更新しています。証明書を更新しようとすると、次のエラーが発生します。
binding to port 80: Could not bind to IPv4 or IPv6
だから私はポート80を使用しているものをチェックし、これを手に入れました:
# lsof -Pnl +M -i6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17117 0 7u IPv6 102365521 0t0 TCP *:443 (LISTEN)
nginx 17117 0 9u IPv6 102365523 0t0 TCP *:80 (LISTEN)
nginx 17118 33 7u IPv6 102365521 0t0 TCP *:443 (LISTEN)
nginx 17118 33 9u IPv6 102365523 0t0 TCP *:80 (LISTEN)
nginx 17119 33 7u IPv6 102365521 0t0 TCP *:443 (LISTEN)
nginx 17119 33 9u IPv6 102365523 0t0 TCP *:80 (LISTEN)
sshd 18455 0 4u IPv6 66436292 0t0 TCP *:22 (LISTEN)
3つの異なるnginxが実行されているようですよね?
実行してnginxを停止しようとしました
/etc/init.d/nginx stop
私もこうやってみました
systemctl stop nginx
そして、現在のプロセスを確認すると、上記の停止コマンドを実行しても、2つのnginxが実行されています。
root 17117 0.0 0.1 161720 2284 ? Ss juin06 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 17118 0.0 0.3 161984 8208 ? S juin06 0:00 nginx: worker process
www-data 17119 0.0 0.3 161720 7484 ? S juin06 0:02 nginx: worker process
ちなみに、このエラーが発生したため、NGINXを起動できません:
# systemctl start nginx
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
誰かが私を助けることができればそれは素晴らしいでしょう:)!
Systemdがサービスを正常に管理(停止または再起動)するには、systemdを介して開始されている必要があります。 nginxプロセスが直接開始されている場合、systemctl
はそれを認識せず、2番目のコピーを開始しようとするか、既存のコピーを停止できません。
/etc/init.d
またはSudo nginx
を使用してサービスを開始しないでください。常にsystemctl start nginx
を使用してください。 cronjobまたはCertbotフックが同じことを行うことを確認してください。