Python程序生产环境离线部署纪要

最近做了一个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

Leave Comment