雑な雑記帳

IT関連メモ主にLinux、DTM

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

今回は更新エラーの対策でしたが、新規設定の際にも有効かも。