最近做了一个Python Django应用,到生产环境部署的工作,总结备忘。
基本特征:
- 1. Linux环境的Python一般都还是2.7
- 2. 开发环境的Python总是越高越好,本例是3.7
- 3. 生产环境没有外网连接,没有yum源、pypi
安装Python 3.7:
- 需要libffi-devel
- 升级的openssl版本需要
编译安装时
./configure —prefix=/usr/local/python3.7 —with-openssl=/opt/openssl1.0.1/
python 3.7 自带virtualenv(创建自己的venv,不要覆盖Linux的python默认环境)
python -m venv <venv_dir>
开发测试环境的准备:
pip freeze > requirements.txt
使用pip下载离线wheel
pip download -d packages -r requirements.txt
or
pip wheel —wheel-dir=packages -r requirements.txt
完成这一步后,需要的python wheel就都保存在packages文件夹下了,但是有一个需要注意特别处理的问题,就是开发平台可能和部署平台不一致问题——有些下载的wheel文件是平台相关的,比如我的开发环境是mac,那这个文件名就带macos,这种情况下,需要手工下载生产环境对应平台文件——linux x86_64之类的。 pyzmq、SQLAlchemy都存在这个问题。
将相关文件copy到生产环境,在之前准备的venv下:
pip3 install —no-index —find-links=packages -r requirements.txt