CentOS如何安装支持ssl的Python3?

CentOS系统默认安装的python版本是2.X系列,python2版本与python3在语法上有点不一样,现在越来越多的软件需要python3来运行,而且由于https的网站越来越多,支持ssl就成了不可或缺的功能。

如果我们直接把python升级到3版本,但是系统自身的很多软件是依赖于python2的,例如yum。所以我们不能直接卸载原来的2版本,而是在保留原来的python2的基础上,多安装一个3版本。

安装的具体步骤如下:

1、安装源码编译器等工具

yum -y install gcc gcc-c++ autoconf automake make zlib zlib-devel

2、安装openssl

2.1 下载

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

2.2 解压

tar -zxvf openssl-1.1.1d.tar.gz

2.3 指定安装路径,然后编译安装

cd openssl-1.1.1d
./config --prefix=/usr/bin/openssl
make && make install

这里需要特别注意的是,如果不指定安装路径,默认会安装到/usr/bin/ssl,但include和lib目录不在这个目录里,会对后面编译安装python3造成麻烦。

3、安装python3

3.1 下载Python安装包

wget https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tgz

3.2 解压

tar -xzvf Python-3.6.13.tgz

3.3 修改编译选项

cd Python-3.6.13
vi Modules/Setup.dist
搜索找到SSL,将附近几行进行如下修改:
# Socket module helper for socket(2)
_socket socketmodule.c                ## 去掉这行前面的#
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/openssl          ## 去掉连续4行前面的#,并且将本行修改为前面安装openssl的路径
_ssl _ssl.c \
      -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
      -L$(SSL)/lib -lssl -lcrypto

3.4 指定安装路径,然后编译安装

./configure --prefix=/usr/local/python3 --enable-optimizations
make && make install

4、创建python2的软连接

ln -s /usr/bin/python2.7 /usr/bin/python2
注意:这里可以先用ll /usr/bin/py*看一下原来python2的具体版本。有可能是python2.6。

5、对于依赖Python2的软件,修改代码(以yum为例)

vim /usr/bin/yum

将第一行"#!/usr/bin/python"
修改为"#!/usr/bin/python2"

6、运行yum,检查python2是否正常

yum update

7、如果出现错误,则重新安装python2(由于yum出现错误,因此不能用yum来安装。可以用rpm来安装)

7.1 下载:

wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/python-2.7.5-90.el7.x86_64.rpm

7.2 安装

rpm --force -ivh --oldpackage python-2.7.5-90.el7.x86_64.rpm

由于系统原来已经安装过python2,因此这里需要加上–force参数来强制安装。安装完之后,再按照步骤6来确认python2正常。

8、建立软连接,将python指向Python3

rm /usr/bin/python
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

9、测试安装结果

直接运行命令:

python

可以看到输出信息:

Python 3.6.13 (default, Feb 23 2021, 07:28:44) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> exit()

分别输入 import ssl(测试对ssl的支持)、exit(),按回车退出python。

安装成功!

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注