CentOS 6.5 certbot-auto更新掉坑记

中午一客户的ssl证书到期了,

原本以为照着之前设定好的计划任务脚本执行一次,

就可以顺利地把letsencrypt的证书续期,

谁曾想。。。

本想温柔地进入,却一搞就是差不多4个小时!!

一下掉坑里了!

先贴执行续期命令后的报错截图:

未分类

CentOS 6.5 certbot-auto renew找不到argparse==1.4.0

首先我们来仔细看这个错误输出,

不但指出了错误原因,还给出了解决方法,以及参考文档,

看来certbot官方的同学没少做工作。

错误原因

No matching distribution found for argparse==1.4.0

建议的解决办法(小坑)

You are using pip version 8.0.3, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

更多的参考资料

Consult https://certbot.eff.org/docs/install.html#problems-with-python-virtual-environment
for possible solutions.

看看这个参考页面打开后的截图:

未分类

内存不够,增加swap交换分区

作者特意用红色文字标出与这种情况相对应的错误提示:

internal compiler error: Killed (program cc1)

看来我可以跳过了(不过因为服务器没有配置swap分区,看内存剩余也不多了,就顺便配置了一个)。

百度、谷歌了一圈,汇总三种解决办法如下(看来我遇到的是第四种)

  1. pip install –upgrade pip (跟错误提示中的建议方法一致)

  2. 创建swap分区并启用(跟官方参考文档中的方法一致)

  3. 修改~/.pip/pip.conf,一种直接改名,另一种修改里面的源地址为另一个,说阿里云的源非最新的

上述三种都尝试了,先把python从2.6.6升级到Python-2.7.11,

然后从python官网下载安装了如下几个所需的扩展:

  • setuptools-34.3.2

  • argparse-1.4.0

  • pip-9.0.1

  • virtualenv-15.1.0

然并卵,执行certbot-auto renew命令报错依然。。

而且明明pip -V都说已经是最新的9.0.1版本了:

pip 9.0.1 from /usr/bin/lib/python2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)

会不会是certbot-auto脚本里用的pip版本不是9.01?

于是抱着死马当活马医的心态,

打开certbot-auto脚本,按斜杠搜索pip-8,一搜不打紧,还真的搜到一句:

如图:

未分类

certbot-auto脚本中写死了pip版本

虽然不是太懂python,但是看的出来它是要下载这个压缩包下来然后安装用。

于是果断到python官网找了最新的pip-9.0.1版的下载地址,

注释掉原来两句,替换为上图框出来的部分,

保存,重新执行renew更新ssl证书命令,经过漫长的一两分钟的等待。。。

看到一个“Congratulations”,赶紧重启nginx:

/usr/sbin/nginx -s reload

down机近4小时的https接口服务终于恢复了!!

总结爬坑技巧

  • 仔细看错误提示
  • 不要过于相信搜索引擎(百度可以直接忽略)
  • 大胆尝试

末了,

觉得有必要进一步了解下python,

尤其是pip的结合,魅力非凡!