使用supervisor管理进程

嘉美伯爵

Python supervisor 201

supervisor安装

全局安装,控制虚拟环境

pip install supervisor

生成配置文件

echo_supervisord_conf  >/etc/supervisord.conf

修改配置文件

vi /etc/supervisord.conf

# 修改最后两行,将前两行分号去掉   .conf 文件的 ; 和 # 为注释
[include]
files = /etc/supervisor/*.conf

配置子进程

mkdir /ect/supervisor
touch web.conf  # 文件名可自定义
vi /ect/supervisor/web.conf

programs=Django-8999

[program:Django-8999]
command=/data/env2/pyweb/bin/uwsgi -x /data/wwwroot/blog/blog.xml
directory=/data/wwwroot/blog
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/home/log/Django.log
loglevel=info

非开机启动

命令

supervisord -c /etc/supervisord.conf

查看 supervisord 是否在运行

ps aux | grep supervisord

开机启动

新建

vi /usr/lib/systemd/system/supervisord.service

配置

[Unit]
Description=supervisor
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

设置

systemctl enable supervisord
systemctl is-enabled supervisord   # 验证一下是否为开机启动

后台supervisorctl

supervisorctl

> status    # 查看程序状态
> stop tornadoes:*   # 关闭 tornadoes组 程序
> start tornadoes:*  # 启动 tornadoes组 程序
> restart tornadoes:*    # 重启 tornadoes组 程序
> update    # 重启配置文件修改过的程序