一般情况下, 部署应用主要是下面几个步骤:
- 代码的准备, 可以直接拷贝, 也可以通过git拉取
- 运行环境的准备
- 依赖的安装
- 运行并监控程序的运行状况
由于python的包管理器没有项目依赖单独管理的功能, 只有全局安装依赖的功能(强烈吐槽这个弱鸡的包管理器, 看看隔壁的npm), 所以为了防止各个项目依赖的包都安装在全局环境下相互冲突, 我们需要为每个项目单独建立一个虚拟环境, 并安装本项目需要的包
运行环境的准备
直接使用venv(Python3)或者virtualenv(Python2)创建虚拟环境并激活虚拟环境
参考: [ Python ] Pipenv & virtualenv
依赖的安装
# 将项目所需的包写入文本文件中, 保存在版本控制中
# 拉取代码的时候一起拉取到部署环境中
pip freeze > requirements.txt
# 根据requirement.txt安装项目代码运行所需的依赖
pip install -r requirements.txt
PM2运行python应用的方法
pm2原本是为node.js设计的负载均衡管理和运行监控程序, 但是pm2可以管理各种程序, 当然也可以应用于python
首先, 建立好你的python环境, 用pipenv或者virtualenv都行, 假设你建立的虚拟python环境位于项目根目录目录下的venv目录中
安装依赖, 执行, source ./venv/bin/activate
激活该虚拟环境(在windows下是执行./venv/Scripts/activate.bat)
运行pip, 根据requirements.txt
安装依赖: pip install -r requirements.txt
安装依赖成功之后, 运行deactivate
退出虚拟环境
这时, 通过pm2来管理我们的应用, 可以直接用pm2的命令, 也可以通过pm2的配置文件
命令方式: pm2 start /path/to/your/script.py --name your_app_name --interpreter /path/to/venv/bin/python
配置文件的方式(以yaml格式的配置文件为例):
# app.yml
name: your-app-name
script: /path/to/your/script.py
interpreter: /path/to/venv/bin/python
cwd: /current/working/directory
# 配置了cwd之后, script和interpreter可以采取相对路径, pm2会自动的切换到cwd目录再执行启动应用的操作
配置文件写好之后, 运行下面的命令来启动我们的应用
pm2 start app.yml