今天安装 Certbot 时遇到各种问题,踩了各种坑,记录下来,分享给大家
我的Linux系统是CentOS7(cat /etc/redhat-release #查看Linux版本),所以安装官网给的安装过程为:
yum install epel-release
sudo yum install certbot-nginx
不同的版本有不同的安装过程,上官网查看各个版本的安装
安装成功后,
通过命令一键生成证书,然后就出现各种问题
sudo certbot --nginx
首先,执行命令的时候报错:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
提示pyOpenSSL版本低然后就更新版本
pip install -U pyOpenSSL
更新完版本后,查看一下pyOpenSSL版本
pip show pyOpenSSL
Metadata-Version: 2.0
Name: pyOpenSSL
Version: 17.5.0
Summary: Python wrapper module around the OpenSSL library
Home-page: https://pyopenssl.org/
Author: Hynek Schlawack
Author-email: [email protected]
Installer: pip
License: Apache License, Version 2.0
Location: /usr/lib/python2.7/site-packages
Requires: six, cryptography
发现版本为 17.5.0,发现跟系统提示要求的0.14版本不一样 ,不管了。再执行一下生成命令试试,还是报同样的错误。既然它要求pyOpenSSL必须是0.14版本,那就按照要求安装一个0.14版本的吧。
pip install pyOpenSSL==0.14
在查看一下版本,的确是0.14的,那应该没问题了吧。
Metadata-Version: 1.1
Name: pyOpenSSL
Version: 0.14
Summary: Python wrapper module around the OpenSSL library
Home-page: https://github.com/pyca/pyopenssl
Author: Jean-Paul Calderone
Author-email: [email protected]
License: APL2
Location: /usr/lib/python2.7/site-packages
Requires: cryptography, sixsudo certbot --nginx
再继续执行生成证书命令:
sudo certbot --nginx
没有天理了,还是报错,在百度查的所有的方案,什么删除pyOpenSSL重新安装啊。删除cetbot重新安装啊。各种招,都不好使,或者开始报其他的错误了,一环接着一环。不知道为什么别人安装那么的顺利呢。
这种情况必须放大招:google,浪费那么长时间,你说我刚开始就google多好。找到国外网站的解决办法:
yum install http://cbs.centos.org/kojifiles/packages/pyOpenSSL/16.2.0/3.el7/noarch/python2-pyOpenSSL-16.2.0-3.el7.noarch.rpm
搞定。
我把我遇到的各种问题,踩过的坑分别列出来,供大家参考:
问题:pkg_resources.DistributionNotFound: The 'certbot==0.22.0'
distribution was not found and is required by the application
解决:pip install certbot==0.22.0
问题:AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
解决:pip install pyOpenSSL==16.2.0
问题:raise ImportError("No module named '%s'" % (name,))
ImportError: No module named 'requests.packages.urllib3'
解决:pip install -U urllib3
问题:pkg_resources.ContextualVersionConflict:
(idna2.6(/usr/lib64/python3.4/site-packages),
Requirement.parse('idna<2.6,>=2.5'), {'requests'})
解决:pip install idna<2.6
问题:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 1: ordinal not in range(128)
原因:因为默认情况下,Python采用的是ascii编码方式
解决:在/usr/lib/python2.7/site-packages/目录下添加一个sitecustomize.py文件,加入内容
import sys sys.setdefaultencoding('utf-8')
推荐阅读
技术:大牛:你真的懂反射吗?
技术:设计图都不会画,还想做”架构师“?
技术:漫画:煮酒论语言
技术:Google在推动AI普及又往前迈了一步-Learn with Google AI
技术:项目有BUG?代码审查没做好?没关系!SonarQube详细使用教程
技术:30分钟如何学会使用Shiro
工具:如何通过技术手段 “干掉” 视频APP里讨厌的广告?
工具:通过技术手段 “干掉” 视频APP里讨厌的广告之(腾讯视频)
干货分享:
分享:1T 软件开发视频资源分享
分享:深度机器学习56G视频资源分享
博主11年java开发经验,现从事智能语音工作的研发,关注微信公众号与博主进行技术交流!更过干货资源等你来拿!