サイトをSSL化する作業は、この記事(ウェブサイトのSSL化(その1))にある通りだが、Let’s EncryptのSSL証明書は定期的に更新する必要がある。で、cronを使って自動化していたのだが、どうも、SSL証明書を取得する際に、Nginxを停止 → Nginxを再起動、としていたはずなのに、Nginxが起動していない様子で、定期的にウェブサーバが止まってしまっていた。
ウェブサーバが原因不明でよくとまるみたいだけど、なんでかなぁ、と思っていたのだが、Nginxを止める作業は、手作業ではしていないし、yumでアップデートするときは、必ず手作業で再起動しているし、SSL証明書の更新のときかも、と今更ながら気づいて、cronで動かしているシェルスクリプトを確認したところ、見事にNginxの再起動に失敗していた。
まあ、sudoで動かせばよかっただけです。ちゃんちゃん。
#!/bin/sh LOGFILE=/var/log/letsencrypt/renew.log sudo systemctl stop nginx.service if [ -f "$LOGFILE" ]; then savelog -c 90 -q "$LOGFILE" fi if ! certbot renew > "$LOGFILE" 2>&1 ; then echo Automated renewal failed: cat "$LOGFILE" exit 1 fi if [ -f "$LOGFILE".0 ]; then diff -u "$LOGFILE".0 "$LOGFILE" fi sudo systemctl start nginx.service
このスクリプトを、1週間に1回動かしています。これからは大丈夫、と思います。
コメント