5月に導入した無償SSL証明書(Let’s Encrypt)の自動更新が行われておらず、おや?と思ってからドはまりしたので備忘録を残しておきます。

本件のきっかけは、以下のメッセージでした。

# /usr/bin/certbot-auto renew --post-hook “service nginx restart”
WARNING: couldn’t find Python 2.7+ to check for updates.
Error: couldn’t get currently installed version for /opt/eff.org/certbot/venv/bin/letsencrypt:
/usr/bin/certbot-auto: /opt/eff.org/certbot/venv/bin/letsencrypt: /opt/eff.org/certbot/venv/bin/python3: bad interpreter: そのようなファイルやディレクトリはありません

読んで字のごとくPython 2.7以降でないとダメなようで、ネットで検索しても同様でした。
んー、3ヶ月前にインストールするときはこんなメッセージ出ていなかったのにな・・・まぁそれはそれとしてモタモタしていると証明書が切れてしまうのでPython 2.7化を行います。

まず、以下の2行を入れてみます。
# yum install centos-release-SCL
# yum install python27

すると1行目から「パッケージ centos-release-SCL は利用できません。」
早速問題発生です。SCLは32ビットOSだと対応していないとのこと・・・

で、いろいろ調べながら手動で入れた結果を下記に記します。
※振り返りながら記載していますので抜け漏れがあるかもしれません、但し流れ的にはこれでうまくいきました。本件に困っていらっしゃる方向けと言うことで自己責任でお願いします。

  1. バージョン確認
    # python --version
    Python 2.6.6
  2. Python2.7ダウンロード(今回は2.7.9としています)
    # cd
    # curl -O https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
    # tar zxf Python-2.7.9.tgz
  3. SSL有効化(この工程を省くと途中でエラーになりました)
    # cd Python-2.7.9
    # vi Module/Setup
    以下をコメントイン
    SSL=/usr
    _ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto
  4. インストール
    # ./configure
    # make && make altinstall
    # /usr/local/src/Python-2.7.9/python --version
    Python 2.7.9
  5. 既存Python2.6の退避
    # mv /usr/bin/python /usr/bin/python2.6.6
    # cp -ip /usr/local/src/Python-2.7.9/python /usr/bin/python
  6. yum設定の変更(yumは引き続きPython2.6を使う設定)
    # vi /usr/bin/yum
    #!/usr/bin/python

    #!/usr/bin/python2.6
  7. pipのアップグレード
    # easy_install --upgrade pip
  8. virtualenvのインストール
    # pip install virtualenv