質問: 以下の環境でのSSL証明書の更新に失敗します。 * OS:CentOS release 6.8 (Final) * webサーバ:nginx 1.10.3 * ドメイン名:example.com ※仮 * crontabの設定: ``` 0 2 1 * * /etc/init.d/nginx stop;/usr/local/certbot/certbot-auto renew --nginx --force-renewal;/etc/init.d/nginx start ``` * その他:レンタルサーバ(さくらVPS) 単に失敗しているだけであれば、設定なり、環境なりが間違っていると考えたのですが、 手動で以下のコマンドを実行すると、正常に更新します。 ``` /usr/local/certbot/certbot-auto renew --nginx ``` エラー時のログ(抜粋) 出力されたエラーは大きく下記の二つでした。 > > 2017-09-16 13:22:03,471:INFO:certbot.main:Could not choose appropriate plugin: > > The nginx plugin is not working; there may be problems with your existing configuration. > > The error was: NoInstallationError() > > 2017-09-16 13:22:03,471:WARNING:certbot.renewal: > > Attempting to renew cert (example.com) from /etc/letsencrypt/renewal/example.com.conf produced an unexpected error: > > The nginx plugin is not working; there may be problems with your existing configuration. > > The error was: NoInstallationError(). Skipping. > > > ・なぜ、手動だと成功するのか。 ・エラーの原因は何か。 どちらかでも構いません。教えていただけないでしょうか。 よろしくお願いいたします。 情報が不足しているようでしたら、お手数ですが、ご指摘いただければと思います。
回答: cron から実行する際に nginx が、パスの通った場所にないのではないでしょうか。 cron 時の環境変数 PATH に nginx があるパスを追加してみてください。