CentOS6でLet's Encryptを使おうとするとpython2.7が入らずに詰まる
無料でSSL証明書が発行できると話題のLet's Encrypt。
先日、CentOS6のサーバに試しに入れてみようとしたところ、python2.7が入らずに詰まってしまいました。
最初に
OSはCentOS 6.7で、gcc, git, nginx以外ほとんど入っていない状態。
導入の参考にしたのはこちらのサイト。
nginxの設定など細かく書いてくださっているので、非常に参考になります。
光の速さのWEBサーバー(nginx)をlet's encryptでSSL化及びHTTP/2化。ついでにセキュリティ評価をA+にする。 - Qiita
現象
Gitでclone後、letsencrypt-autoを叩くと、必要なものが自動でインストールされるわけなのですが、virtualenvがなくて止まります。
$ git clone https://github.com/letsencrypt/letsencrypt $ cd letsencrypt/ $ ./letsencrypt-auto --help Bootstrapping dependencies for RedHat-based OSes... yum is /usr/bin/yum Loaded plugins: fastestmirror Setting up Install Process Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp Package python-2.6.6-64.el6.x86_64 already installed and latest version No package python-virtualenv available. No package python-pip available. 〜 省略 〜 Creating virtual environment... ./letsencrypt-auto: line 165: virtualenv: command not found
上記の、
Package python-2.6.6-64.el6.x86_64 already installed and latest version No package python-virtualenv available. No package python-pip available.
が根本的な原因ですね。
どうやらletsencrypt-autoはpython2.7でないと動かないようですが、CentOS標準のリポジトリではpython2.6までしか落とせず、関連するパッケージについても同様ということのようです。pythonにはあまり詳しくないので、パッケージの詳細については割愛します。
色々調べて、結局このスレッドにたどり着きました。こちらの最後のコメントが解決策になります。
CentOS 6.7 + Python 2.7 errors on letsencrypt-auto run · Issue #1106 · letsencrypt/letsencrypt · GitHub
まとめると、このような感じです。
# SCLをインストール $ sudo yum install centos-release-SCL # python2.7 と scl utilsをインストール $ sudo yum update $ sudo yum install scl-utils python27 python27-scldevel # python2.7をbash上で有効化 $ scl enable python27 bash
yum updateはご自身の判断で行ってください。ここまでやってあげると、問題なく動くようになります。
$ ./letsencrypt-auto --help 〜 省略(インストール後、ヘルプが表示される) 〜
SCLはRedHatが提供しているもので、従来のリポジトリにはない新し目のパッケージを、従来のリポジトリと競合しない形でインストールおよび利用できる仕組みのようです。(主に言語系のパッケージ、Ruby, PHPなどなど)
まず、最初のcentos-release-SCL
のインストールでyumのリポジトリが追加され、上記で言うとpython27がyumでインストールできるようになる。
そして、scl-utils
をインストールすることで、sclコマンドで簡単にバージョンを切り替えることができるようになる、ということみたいです。
めちゃくちゃ便利ですね!