快速使用 PM2 部署 Python 脚本

476 阅读1分钟

虽然 PM2 是专注于 Node 项目的守护进程管理器,但用来部署并管理 Python 脚本也是极好的。

安装 PM2

确保已经安装了 node,然后运行:

npm install pm2 -g

顺便推荐用 fnm 管理 node 版本。

编写配置

为了便于设置程序运行的配置,编写一个配置文件 test.config.js

module.exports = {
    apps: [{
        name: 'test',
        cmd: 'python test.py',
        cwd: '/home/usr/python_project',
        autorestart: false,
        watch: false,
        env: {
            ENV: '/home/usr/miniconda3/envs/3.12/bin/python'
        },
    }],
};

name 是 app 的显示名称,cmd 是运行指令,cwd 是运行时的工作路径。

需要正确指定 Python 环境到 ENV 中。使用以下命令查看 Python 解释器的路径:

which python

运行脚本

pm2 start test.config.js

然后使用 pm2 ps 就能看到运行的 test 脚本了。

其他常用指令:

  • pm2 stop test,停止对应程序
  • pm2 logs test,查看程序日志
  • pm2 delete test,删除程序(要先 stop)

开机自启

pm2 save
pm2 startup

根据提示进行配置即可。

可以用 unstartup 取消开机自启。

pm2 unstartup

日志轮换

PM2 不原生支持日志轮换。需要装个插件。

pm2 install pm2-logrotate

关于配置可看 keymetrics/pm2-logrotate: Automatically rotate all applications logs managed by PM2 (github.com)

碎碎念

PM2 挺好用,但不支持日志轮换太伤了。pm2-logrotate 这个插件有两年没维护,现在会出现 DeprecationWarning 问题。

Systemd 很强大,但系统自己很多服务都在上面,搞得很乱,配置也麻烦。

下次试试 Supervisor 吧。