CentOS6でletsencript更新に失敗した時の解決策
昨年設定したletsencriptの更新お知らせメールが届いたので
certbot-auto renewを行ったがエラーが出て更新できなかった。
エラーメッセージはこちら↓↓↓
Error: Command '['/opt/eff.org/certbot/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
さんざん検索しまくり、結果python3系ではなく、python2系を使う事で成功しました。
まず私のサーバー環境はCentOS6.9
経緯としては、昨年の※月に初めてletsencriptを特に問題なく設定。有効期間が3ヶ月のため
設定から2ヶ月後に、残り1ヶ月で利用期限がくるので更新して下さい。と案内メールが届く。
$./certbot-auto renew
で無事更新終了。その2ヶ月後再び利用期限のメールが届いたので前回と同じ手順で更新しようとしたら
冒頭に書いた通りエラーで更新できず。
letsencryptのコミュニティサイトで同じエラーを解決した例がありました。
Failed to run certbot-auto successfully on CentOS 6.5 - Server - Let's Encrypt Community Support
A workaround working for me on CentOS 6.9:
(訳:この回避策で私の場合CentOS5.9でうまくいった)
$ sudo scl enable python27 './certbot-auto renew'
(訳:パイソン27で./cerbot-auto renew)
その直前のコメントでは
export LC_ALL=C
という投稿があった、この解決策は他のサイトでも見かけたが
私の環境では解決できなかったのでパイソン2系を試した。
pythonの2系と3系の使い分けにはいくつかのアプローチがありますが、
今回は下のサイトを参考にしてSoftware Collections (SCL) を使いました。
https://qiita.com/murachi1208/items/202bff84964188619f57
そして、上のletsencriptコミュニティサイトでのコメントの通り
$ sudo scl enable python27 './certbot-auto renew'
を実施。
無事更新成功。
Installation succeeded.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
今回は更新エラーの対策でしたが、新規設定の際にも有効かも。