※記事内に商品プロモーションを含む場合があります
年末年始の休みの時に構築した、新自宅サーバ。
使用用途は主にファイルサーバで、
テスト用のWordPressもインストールしてあります。
ファイルサーバのファイル転送には、主にsambaを使用しますが
一部、WebDAVも使用します。
これにより、外出先から自宅のファイルにアクセスできたり
iPhoneから、写真をファイルサーバにアップロードする事ができます。
WebDAVはSSLを利用するので証明書をLet’s Encryptで取得しています。
Let’s Encryptはサーバ構築時には導入していて、
cronで20日に自動更新する設定にしていました。
しかし、20日に更新に失敗したメールが届いたので
再度確認してみました。
Let’s Encrypt証明書の更新で問題が発生
自動更新失敗した時の、メールにはこのように書かれていました。
Upgrading certbot-auto 0.20.0 to 0.21.0…
Replacing certbot-auto…
Creating virtual environment…
/usr/bin/certbot-auto: 966: /usr/bin/certbot-auto: virtualenv: not found
念のため、SSHで実行してみてダメでした。
試しにブートストラップを無視してもダメでした。
/usr/bin/certbot-auto renew –force-renew –no-bootstrap
virtualenvが原因
コマンドラインでの更新時でも、
Creating virtual environment…
で止まり、エラーが出ます。
検索しましたが日本語ではなかなか出なかったので
英語での検索で見つかりました。
setuptools pkg_resources pip wheel failed with error code 2
SSL添加失败,求教军哥!
問題の切り分け
この問題は、virtualenvが複数インストールされている事で発生します。
そこで、Ubuntuで動いているファイルサーバでは、
このコマンドで確認しました。
dpkg -l|grep virtualenv
すると、なぜか3種類も入っていました。
ii python-virtualenv 15.0.1+ds-3ubuntu1 all Python virtual environment creator
ii python3-virtualenv 15.0.1+ds-3ubuntu1 all Python virtual environment creator
ii virtualenv 15.0.1+ds-3ubuntu1 all Python virtual environment creator
dpkg はDebianのパッケージ管理システムなので
ディストリビューションに合わせて、変更して下さい。
対処法
複数のvirtualenvが競合していることが原因なので
一旦、すべてのvirtualenvをアンインストールしてから、再インストールします。
apt-get purge python-virtualenv python3-virtualenv virtualenv
pip install virtualenv
これで、SSHで試しましたが、Let’s Encryptの更新ができるようになりました。
あとがき
今回のサーバは、Ubuntuなので
ディストリビューションによりコマンドが使えない可能性があります。
また、この方法で出来なかったり、何か不具合が発生しても知りません。
自己責任でお願いします。