因爲客戶環境斷網且提供非 Root 權限用戶,只能從頭開始採用源碼方式進行安裝。而源碼方式天然免不了對各類開發工具的依賴,好在對於 Yum 來講,提供一個了插件能夠須要的依賴所有下載下來,在離線機器直接採用離線方式便可,免去了手動調整各類依賴的麻煩。html
對於 Python 須要的依賴的包來講,自己 pip 也提供了相似 Yum 離線下載的工具,須要直接導入便可。node
Linux 服務器發行版爲:Centos7.6
python
內核版本爲:Linux 3.10.0-957.el7.x86_64
mysql
Python:3.8.5
sql
在選擇可聯網環境的機器時,建議選擇相同版本的服務器。數據庫
主要過程以下:vim
在聯網服務器上操做:centos
安裝 centos-release-scl
第三方yum源bash
yum install centos-release-scl
安裝 yum 依賴下載插件服務器
yum install yum-plugin-downloadonly
下載 Python 及 Yum 依賴
# 下載 python 源碼 wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz # 下載依賴, python_dependencies 爲保存的目標文件夾 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel --downloadonly --downloaddir=python_dependencies
下載 Python 模塊依賴
# 導出使用的依賴 pip freeze > requirements.txt # 建議在導出後,將 pip,wheel,setuptools 手動寫入到 requirements 文件中。 # 下載, -d 爲目標文件夾 pip download -d python_modules -r ipsla_requirements.txt
在離線服務器上操做:
離線安裝 Yum 依賴(需 root)
rpm -Uvh --force --nodeps python_dependencies/*.rpm
啓用高版本 GCC(爲了在編譯時執行 --enable-optimizations
, GCC 安裝可參見 Gcc 安裝)
scl enable devtoolset-9 bash gcc -v
解壓 Python 源碼
tar -zxf Python-3.8.5.tgz -C /home/user/app/python
配置 make 文件, 指定可執行文件目錄:
configure prefix=/home/user/app/python3 --enable-optimizations
執行編譯:
make
執行安裝
make install
進入到 /home/user/app/python3/bin 目錄下,執行 python3 看是否成功
./python3 --version
配置環境變量,source 後生效:
vim ~/.bash_profile export PYTHON3_PATH=/home/ipsla/app/python3 export PATH=$PYTHON3_PATH/bin:$PATH
因爲離線 Python3.8 自帶的 pip 等版本可能與聯網服務器模塊版本不一致,爲了規避依賴版本問題,先對其版本進行更新:
ipsla_packages 爲下載後的 Python 模塊依賴目錄。
/home/ipsla/user/python3/bin/pip3.8 --upgrade ipsla_packages/pip-20.2.3-py2.py3-none-any.whl /home/ipsla/user/python3/bin/pip3.8 --upgrade ipsla_packages/wheel-0.35.1-py2.py3-none-any.whl /home/ipsla/user/python3/bin/pip3.8 --upgrade ipsla_packages/setuptools-50.3.0-py3-none-any.whl
安裝須要的依賴:
# 根據 requirements 文件安裝 /home/user/app/python3/bin/pip3.8 install --no-index --find-links=ipsla_packages -r ipsla_packages/requirements.txt # 手動指定安裝 /home/user/app/python3/bin/pip3.8 install --no-index --find-links=ipsla_packages/ aiohttp==3.5.4
一般都會搭配 MySQL 等數據庫,若是數據庫也是離線安裝的話,須要調整一下連接文件:
ln -s /home/user/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20 # libmysqlclient 可經過 find /home/user -name "libmysqlclient" 找到