虽然 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 吧。