Centos7 openSSL

阅读时长:10分钟

本文内容: 在阿里云Centos7上部署python3.10.6项目时遇到openSSL协议不支持,导致无法下载第三方包

本文目的:

  1. 通过手动编译,升级openssl版本
  2. centos7 重编译 python3.10.6
  3. github下载缓慢解决
  4. 镜像源记录

阿里云Centos7 安装openSSL以及python3.10

整个部署问题的起因就是centos7上系统上自带的openssl版本太低了,导致无法使用 python3+版本。所以要先升级openssl版本

在CentOS7中安装 Python3.10,需要先升级 OpenSSL,系统默认的 OpenSSL版本为1.0.2,版本太低了, 在后面编译安装PIP的时候会报错。

一、升级openssl

bash 复制代码
yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel

2.进入到 /usr/local/src 目录,将稍后下载的文件放在此目录。

bash 复制代码
cd /usr/local/src

3.到OpenSSL官方网站下载源码,解压并进入软件包目录:

bash 复制代码
wget <https://www.openssl.org/source/openssl-1.1.1q.tar.gz> --no-check-certificate
tar -zxvf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q

4.编译安装

bash 复制代码
./config
make && make install

5.备份系统中的旧 OpenSSL 可执行文件

bash 复制代码
mv /usr/bin/openssl /usr/bin/openssl.old

6.创建符号链接以关联新安装的 OpenSSL 可执行文件

bash 复制代码
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl

7.向动态链接库配置文件添加新的 OpenSSL 库路径

bash 复制代码
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

8.使用 ldconfig 命令刷新动态链接库缓存,使新配置生效

bash 复制代码
ldconfig -v

9.检查版本是否升级成功

bash 复制代码
openssl version

安装python3.10

1.进入到 /usr/local/src 目录,将下载的文件放在此目录。

bash 复制代码
cd /usr/local/src
# 下载
wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz
# 解压
tar -xvzf Python-3.10.6.tgz

2.提前安装稍后编译时会用到的工具

bash 复制代码
yum -y install gcc zlib zlib-devel libffi libffi-devel

3.配置并编译

bash 复制代码
# 查看
ls -a
# 进入目录
cd Python-3.10.6
# 运行 configure 脚本,配置编译参数(configure是一个没有后缀的脚本文件)
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --enable-shared --enable-optimizations
# 使用 make 命令编译 Python 3.10 源代码
# make 命令会根据配置参数编译源代码并生成可执行文件
make & make install

4.创建软链接,centos默认安装有python2.7版本,本文两个版本共存

bash 复制代码
# 第一个地址是 源文件的路径,也就是软链接指向的文件。这个文件通常是 python3 的一个安装位置
# 第二个地址是 软链接的路径,也就是你想要创建的软链接的位置。这个位置通常是系统路径,系统会在这个路径下搜索可执行文件。
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

5.检查是否安装成功

bash 复制代码
python -V
pip -V

其他错误

  1. 在通过 python -V 验证 python版本时出现报错:

python3: error while loading shared libraries: libpython3.10.so.1.0: cannot open shared object file: No such file or directory

解决办法:

bash 复制代码
# 查看
cd /usr/local/lib

# 将下载的python包目录中的文件 复制一份到 指定目录
sudo cp /usr/local/src/Python-3.10.6/libpython3.10.so.1.0 /usr/local/lib

# 设置动态链接库地址。注意该目录下就是上一步的 指定目录 。该目录下有文件:libpython3.10.so.1.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
#查看
echo $LD_LIBRARY_PATH

问题解析:

这个报错是python的动态链接库找不到导致的报错,只需要重新设置动态链接库地址即可。

  1. 找到python3的位置,查找指令:whereis python3 。 python的安装位置在上面配置configure时通过prefix进行配置,在此处是: /usr/local/python3. python文件下载位置上面也有,位于 /usr/local/src/Python-3.10.6
  2. 通常当安装了python3后,python3的动态链接库都位于 /usr/local/lib
  3. 临时设置动态链接:通过上面的export的方式设置,只存在与当前会话窗口,关机后就没了
  4. 永久设置动态链接: 通过在文件 /etc/ld.so.conf 中写入 存放动态链接文件的位置(也可以是python的lib目录) 并保存
bash 复制代码
# 编辑
vi /etc/ld.so.conf

# 添加一行: /usr/local/lib

# 让改动生效
sudo ldconfig

以下是我的 /etc/ld.so.conf 文件中的内容

bash 复制代码
include ld.so.conf.d/*.conf
/usr/local/openssl/lib
/usr/local/lib

  • 在Linux系统中,LD_LIBRARY_PATH 是一个环境变量,用于指定动态链接器搜索共享库时的路径
bash 复制代码
# 设置 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/the/path/you/want/set
export LD_LIBRARY_PATH=/the/path/you/want/set
# 查看动态链接库设置
echo $LD_LIBRARY_PATH
# 清除所有动态链接库设置
unset LD_LIBRARY_PATH

阿里云centos7 访问github缓慢

  • git clone 特别慢,是因为 github.global.ssl.fastly.net 域名被限制了,只要找到这个域名对应的 IP 地址,然后在 hosts 文件中加上 ip-->域名 的映射,刷新 DNS 缓存便可。
bash 复制代码
# 安装
yum -y install bind-utils

# 获取两组 Name 和 Address
nslookup github.global.ssl.fastly.net
nslookup github.com

添加

bash 复制代码
$ sudo vim /etc/hosts

例如我拿到上面得到的IP地址后,添加了两行:

bash 复制代码
69.171.229.73 http://global-ssl.fastly.net 
13.250.177.223 http://github.com

nscd 命令更新 DNS 缓存

bash 复制代码
# 如果没有安装,则需要安装一下
yum install -y nscd

# 更新 DNS 缓存
nscd -i hosts

然后再次执行 git clone https://github.com/XXX,速度起飞

设置下载源

  1. 临时更改:在安装包时,使用-i参数指定源的URL。

例如,使用清华源安装包packagename,命令为
pip install packagename -i https://pypi.tuna.tsinghua.edu.cn/simple

  1. 永久更改:使用 pip config set global.index-url命令直接指定下载源的URL,这样就不用每次都手动修改了。

例如,将下载源永久更改为清华源,命令为pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

或者通过打开文件手动更改: vi ~/.pip/pip.conf

bash 复制代码
[global]
index-url = <http://pypi.douban.com/simple/>

[install]
trusted-host = pypi.douban.com

卸载Python3

bash 复制代码
#卸载python3
rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps 

#删除所有残余文件
whereis python3 |xargs rm -frv

#查看现有安装的python,验证是否删除干净
whereis python 

其他指令

查看当前虚拟环境的值:

  • echo $VIRTUAL_ENV (仅当激活了虚拟环境时,才会有值)
相关推荐
try2find1 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取2 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector3 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习4 小时前
Python入门Day2
开发语言·python
Vertira4 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉4 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗4 小时前
黑马python(二十四)
开发语言·python
晓13135 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr
是小王同学啊~5 小时前
(LangChain)RAG系统链路向量检索器之Retrievers(五)
python·算法·langchain
AIGC包拥它5 小时前
提示技术系列——链式提示
人工智能·python·langchain·prompt