CentOS6で運用しているサービスをいくつか管理しているのですが、最近、Let’s Encrypt(certbot-auto)によるSSL証明書の更新が失敗するようになりましたので対処しました。
エラーの原因は、以下のとおりです。
- certbotのバージョンが新しくなった
- 新しいcertbotはpython2.7以上が必要
- CentOS6のpythonのバージョンは2.6.6
つまり、CentOS6にインストールされているpythonのバージョンが古いため、新しいcertbotが起動できずエラーが発生したということのようです。
ならば、CentOS6のpythonを手動で2.7以降にバージョンアップすれば良いということになりますが、それをやってしまいますと別の困った問題が発生します。CentOS6のyumはpython2.6を必要とします。2.7にバージョンアップするとyumが使えなくなってしまい、もっと困ったことになるのです。
そこで、Software Collections (SCL)という、複数のパージョンのアプリケーション(PHP、Ruby、Python、MySQLなど)を使い分けるためのパッケージを導入して対策してみました。
導入方法は以下のとおりです。
# リポジトリを追加します。/etc/yum.repos.d/CentOS-SCL.repo が追加されます。
yum install centos-release-SCL
# SCL用のpython3.6をインストールします(通常のpython3.6とは異なります!)
yum install rh-python36
# bashでpython3.6を使用できるようにする
scl enable rh-python36 bash
以上のように設定すると、bashでpython3.6が使えるようになります。
yumも問題なく使用できます。
※bash上で上記の作業を行った場合は、一旦bashを出て入り直すとpython3.6に切り替わります。
Let’s Encrypt用のシェルスクリプトを作ります。
私の環境では、以下のようなスクリプトで問題なく動いています。
(パス等は各々の環境に合わせて適宜書き換えてください。)
#!/bin/bash
/usr/bin/certbot-auto renew --renew-hook "/sbin/service httpd reload"
このシェルスクリプトに実行権限を与えて、cronに登録してやればOKです。
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント