前回、letsencrypt-autoからcertbot-autoへ切り換えたことを紹介しました。あのとき、実は、きちんと対処していなかったことがあり、ちょっとトラブって、慌てそうになりました。
うまくいかないときに、OSの再インストールを試みる方法をとることがありますが、原則、OSの再インストールは最終手段です。できるかぎり、今の環境を維持しながら運用します。(ちなみに、私はOSの再インストールはしたことがありません。もちろん、システムをアップグレードするためにOSを新規にインストールすることはあります。)
挙動がおかしい原因は大きく分けて2つあります。
**********************************************
1つが、モジュール群の不整合またはバグ。
2つ目が設定ミス。
**********************************************
1番目の対処はモジュールを切り分けて、代替できるモジュールに変えるか、古いまま使うか、改変して使うかです。
2番めの対処は、ひたすらログやエラーメッセージを見て、設定を正しいものへと書き換えます。
また、これらの対処に必要な情報は「google先生」にお頼みしております。
今回は、どのような、状況になったかというと。
certbot-autoを実行して、サーバ証明書を更新すると、下記のようなエラーが出て更新に失敗したのです。前回までは、ちゃんと更新出来ていたので、設定ファイルが間違っているとは思えません。(こんな状況がとてもきついです。前回までは問題なく動作していたのに、前ぶれもなく動作が失敗するという場面に遭遇すると結構、凹みます。)
それでは、どんなエラーメッセージがでたか読んでみます。
# cd /usr/local/certbot
# ./certbot-auto certonly --webroot -w /usr/local/shigi/shigizemi -d shigizemi.com -d www.shigizemi.com -w /usr/local/shigi/shigidtpc -d pc.shigizemi.com -m shigi-info@shigizemi.com --agree-tos
Bootstrapping dependencies for RedHat-based OSes...
yum is /usr/bin/yum
読み込んだプラグイン:changelog, fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* remi-safe: mirror.innosol.asia
* updates: ftp.riken.jp
パッケージ gcc-4.4.7-17.el6.i686 はインストール済みか最新バージョンです
パッケージ dialog-1.1-9.20080819.1.el6.i686 はインストール済みか最新バージョンです
パッケージ augeas-libs-1.0.0-10.el6.i686 はインストール済みか最新バージョンです
パッケージ openssl-1.0.1e-48.el6_8.1.i686 はインストール済みか最新バージョンです
パッケージ openssl-devel-1.0.1e-48.el6_8.1.i686 はインストール済みか最新バージョンです
パッケージ libffi-devel-3.0.5-3.2.el6.i686 はインストール済みか最新バージョンです
パッケージ redhat-rpm-config-9.0.3-51.el6.centos.noarch はインストール済みか最新バージョンです
パッケージ ca-certificates-2015.2.6-65.0.1.el6_7.noarch はインストール済みか最新バージョンです
パッケージ python-2.6.6-64.el6.i686 はインストール済みか最新バージョンです
パッケージ python-devel-2.6.6-64.el6.i686 はインストール済みか最新バージョンです
パッケージ python-virtualenv は利用できません。
パッケージ python-tools-2.6.6-64.el6.i686 はインストール済みか最新バージョンです
パッケージ python-pip は利用できません。
パッケージ 1:mod_ssl-2.2.15-53.el6.centos.i686 はインストール済みか最新バージョンです
何もしません
Checking for new version...
Upgrading certbot-auto 0.6.0 to 0.7.0...
Replacing certbot-auto...
Creating virtual environment...
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 2363, in <module>
main()
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 832, in main
symlink=options.symlink)
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 1004, in create_environment
install_wheel(to_install, py_executable, search_dirs)
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 969, in install_wheel
'PIP_NO_INDEX': '1'
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 910, in call_subprocess
% (cmd_desc, proc.returncode))
OSError: Command /root/.local/share/letsencrypt/bin/python2.7 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel failed with error code 1
Pythonがらみで停止しているようです。今のところ、よくわかりません。では、対処します。
【前提条件】
今まではLet’s Encryptの更新ができていた
<手順>
- 「google先生に」お尋ね
- ログ・エラーメッセージ、システムへの最近の変更から推測、対処
- 動作確認
1.「google先生に」お尋ね
最終行に、エラーメッセージが出ているので、さっそくコピって、「google先生」に貼り付け検索です。
「OSError: Command /root/.local/share/letsencrypt/bin/python2.7 -c “import sys, pip; sys…d\”] + sys.argv[1:]))” setuptools pip wheel failed with error code 1」
でも、何もヒットしません。ちょっと、乱暴ですね。そのままコピペでは「google先生」も返事に困るでしょう。
次に、「OSError: import sys, pip;
」で、「google先生」にお尋ねします。
すると、あるサイトに
sudo easy_install virtualenv==1.10.1
で、virtualenvのバージョンをダウングレードさせると解決なんて情報もありました。
しかし、対象Pythonは2.7.5です。私の環境は2.7.9なので、そのまま実行するには、ちょっと抵抗が有ります。記事は1年以上前のものです。ちょっと古る過ぎですね。
再度、「google先生」への問い合わせますが、ほとんど情報がありません。すこし、途方に暮れます。ちょっと焦ります。なぜなら、次回更新まで3ヶ月の猶予があるとはいうものの、このまま放置していれば3ヶ月なんて直ぐに過ぎてしまいます。その後、サーバ証明書は更新されないのでhttpsで通信できなくなり、webサーバやWordPressの設定をhttp仕様に変更しなければなりません。とても大変な作業です。
なんとかしなければ。
2.ログ・エラーメッセージ、システムへの最近の変更から推測
ここで、エラーメッセージをよーく眺めて見ると、「パッケージ python-virtualenv は利用できません。」や「パッケージ python-pip は利用できません。」「OSError:……….. import sys, pip;」などからpipがきちんと動作していない模様です。pipはPythonで作成されたソフトウェアをインストール・管理するシステムソフトです。このpipを利用して、virtualenvもインストールします。今回は、どうやら、pipに問題がありそうです。
そういえば、前回、letsencrypt-autoからcertbot-autoへ切り換えたとき、一緒に、pipをupgradeしていました。そのあとの対処ができていないのか、upgradeが不調だったのか、とにかく再挑戦します。
もう一度、pipをインストールします。最新版8.1.2がインストールされました。
# easy_install pip
Searching for pip
Best match: pip 8.1.2
Adding pip 8.1.2 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip3.5 script to /usr/local/bin
Installing pip3 script to /usr/local/bin
Using /usr/local/lib/python2.7/site-packages
Processing dependencies for pip
Finished processing dependencies for pip
次に、pipをupgradeします。(前回、実行していましたが、うまくいっていないようなので、念の為)
# pip install --upgrade pip
特に何も表示されません。これは、前回も同じですね。
次に、virtualenvをupgradeします。
# /usr/local/bin/pip install --upgrade virtualenv
Collecting virtualenv
Downloading virtualenv-15.0.1-py2.py3-none-any.whl (1.8MB)
100% |████████████████████████████████| 1.8MB 82kB/s
Installing collected packages: virtualenv
Found existing installation: virtualenv 13.1.2
Uninstalling virtualenv-13.1.2:
Successfully uninstalled virtualenv-13.1.2
Successfully installed virtualenv-15.0.1
お〜!virtualenvのバージョンが15.0.1になっている。先ほどの情報だと、1.10.1にダウングレードせよとあったので、もし、その通りにしていたら?????
おそらく、前回、pipをupgradeした後に、この「/usr/local/bin/pip install –upgrade virtualenv」を実行していなかったことが、そもそもの原因だったかもしれません。
3.動作確認
では、さっそく、サーバ証明書を更新してみます。
念の為に、デバッグモード(末尾に–debug)で実行しました。
# cd /usr/local/certbot
# ./certbot-auto certonly --webroot -w /usr/local/shigi/shigizemi -d shigizemi.com -d www.shigizemi.com -w /usr/local/shigi/shigidtpc -d pc.shigizemi.com -m shigi-info@shigizemi.com --agree-tos --debug
Bootstrapping dependencies for RedHat-based OSes...
yum is /usr/bin/yum
読み込んだプラグイン:changelog, fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* remi-safe: mirror.innosol.asia
* updates: ftp.riken.jp
パッケージ gcc-4.4.7-17.el6.i686 はインストール済みか最新バージョンです
パッケージ dialog-1.1-9.20080819.1.el6.i686 はインストール済みか最新バージョンです
パッケージ augeas-libs-1.0.0-10.el6.i686 はインストール済みか最新バージョンです
パッケージ openssl-1.0.1e-48.el6_8.1.i686 はインストール済みか最新バージョンです
パッケージ openssl-devel-1.0.1e-48.el6_8.1.i686 はインストール済みか最新バージョンです
パッケージ libffi-devel-3.0.5-3.2.el6.i686 はインストール済みか最新バージョンです
パッケージ redhat-rpm-config-9.0.3-51.el6.centos.noarch はインストール済みか最新バージョンです
パッケージ ca-certificates-2015.2.6-65.0.1.el6_7.noarch はインストール済みか最新バージョンです
パッケージ python-2.6.6-64.el6.i686 はインストール済みか最新バージョンです
パッケージ python-devel-2.6.6-64.el6.i686 はインストール済みか最新バージョンです
パッケージ python-virtualenv は利用できません。
パッケージ python-tools-2.6.6-64.el6.i686 はインストール済みか最新バージョンです
パッケージ python-pip は利用できません。
パッケージ 1:mod_ssl-2.2.15-53.el6.centos.i686 はインストール済みか最新バージョンです
何もしません
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Version: 1.1-20080819
Version: 1.1-20080819
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x You have an existing certificate that contains exactly the same x
x domains you requested and isn't close to expiry. x
x (ref: /etc/letsencrypt/renewal/shigizemi.com.conf) x
x x
x What would you like to do? x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x 1 Keep the existing certificate for now x x
x x 2 Renew & replace the cert (limit ~5 per 7 days) x x
x x x x
x x x x
x x x x
x x x x
x x x x
x x x x
x x x x
x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x < OK > <Cancel> x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/shigizemi.com/fullchain.pem. Your cert will
expire on 2016-08-26. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your ceriticates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
途中、サーバ証明書を既存のものをそのまま利用する(1)か、新しい証明書と置き換えるか(2)を聞いてくるので、(2)の置き換えるを選択して、「OK」のまま、Enterキーを押下します。
無事に、サーバ証明書類が、/etc/letsencrypt/live/shigizemi.com/配下に保存されたようです。
有効期限は8月26日です。
さっそく、確認してみました。(「パッケージ python-virtualenv は利用できません。」や「パッケージ python-pip は利用できません。」が表示されていますが、まぁそれはご愛嬌ということで。)
apacheを再起動します。
# service httpd restart
ブラウザ上で、サイトを再読み込みします。
www.shigizemi.comもpc.shigizemi.comも同様に更新されていました。一安心です。Let’s Encryptは新しいシステムなのでまだまだ不安定なところはあるのでしょう。それでも、期待しています。スタッフの方がんばってください。応援しています。
cron実行の自動更新がこの記事とほぼ同じエラーで失敗していることに気づいた時点で、この記事と同様に「google先生に」お尋ね作戦をしました。
2019年2月時点の検索結果もこの記事と同様にひとつもありませんでした。かといってそのまま放置することもできず、やはりOS再インストールからのやりなおしを頭によぎらせながらキーワードを少しずつかえてなんども「google先生に」お尋ねして数時間、やっとこの記事にたどりつきました。
そこからは一本道であっさり解決、本当に助かりました。ありがとうございました。
お役に立てて光栄です。そして、お疲れ様でした。この記事は2016年のものですが、この記事の後、なんのトラブルもなく更新ができております。それでもサーバのログを見るのはハラハラ・ドキドキしています。
Pingback: Let’ Encryptで証明書更新時に発生したpythonエラーとコネクションエラー – Shelitas