作者:E4b9a6, 创建:2018-09-27, 字数:1662, 已阅:711, 最后更新:2024-03-10
Supervisor
是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,用于监听、启动、停止、重启一个或多个进程
安装如下
sudo yum update
sudo yum install supervisor
sudo systemctl enable supervisord
sudo systemctl start supervisord
通常情况下,supervisor自定义脚本位于以下2个位置
下面是我常用的脚本示例,更多详细设置可以参考官网配置文档)
[program:blog]
# 程序启动目录
directory=/home/chancel/apps/blog
# 程序启动命令
command=/home/chancel/apps/blog/venv/bin/gunicorn --pid /home/chancel/apps/blog/pid --bind unix:/home/chancel/apps/blog/socket flaskr:app
# 开机自启
autostart=true
# 在进程挂掉后自动拉起
autorestart=true
# 日志配置
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
stdout_logfile_maxbytes=10MB
# 运行用户
user=chancel
# 运行环境
environment=PATH="/home/chancel/apps/blog/venv/bin:%(ENV_PATH)s"
environment=FLASKR_CONFIG="/home/chancel/apps/blog/flaskr-prod.json"
添加脚本后,我们可以使用supervisorctl
热启动刚才添加的脚本进程
sudo supervisorctl update
supervisorctl
是用于操作管理supervisor后台进程的CLI,常见操作如下
# 打印所有后台进程状态
sudo supervisorctl status
# 启动/停止/重启 后台进行
sudo supervisorctl start/stop/restart [progress_name]
# 重新读取所有后台进程(谨慎:这会重启所有后台进程)
sudo supervisorctl reload
# 热加载新添加的程序
sudo supervisorctl update
如果你需要web界面来监控后台进程的运行情况,可以编辑/etc/supervisor.conf
,如下所示开放web接口页面用于监控后台进程运行状况
...
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ; ip_address:port specifier, *:port for all iface
;username=user ; default is no username (open server)
;password=123 ; default is no password (open server)
...