Supervisor 进程守护使用说明

Supervisor 是一个进程管理工具,当进程中断时,Supervisor 能自动重新启动它。它可以运行在各种类 Unix 的机器上。Supervisor 是用 Python 开发的一套通用的进程管理程序,能将一个普通的命令行进程转变为后台守护进程,并监控进程状态。当进程异常退出时,Supervisor 能自动重启。

使用场景

针对在线服务可能出现的不稳定宕机情况,进程守护能够快速重新启动服务。同时,结合 Supervisor 自带的 Web 工具,可以作为简便的服务管理工具,如下图所示。特别是在一个服务器上部署了多个服务的情况下,当服务器重启时,可以通过开机启动 Supervisor,再由 Supervisor 快速重新启动服务。

安装

pip3 install -U pip 'setuptools<42' wheel
pip3 install supervisor
echo_supervisord_conf> /etc/supervisord.conf

上面的命令,生成了一个默认的配置文件 /etc/supervisord.conf, 接下来,做一些建议的改动。

file=/var/supervisor/supervisor.sock
logfile=/var/supervisor/supervisord.log
pidfile=/var/supervisor/supervisord.pid
serverurl=unix:///var/supervisor/supervisor.sock

配置 web 界面

[inet_http_server]
port=127.0.0.1:9001
username=<your username>
password=<your password>

引入外部配置

[include]
files = /home/web/workspace/config-files/process/*.conf

新建 /usr/lib/systemd/system/supervisord.service 文件,内容如下

[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c/etc/supervisord.conf
ExecReload=/usr/bin/supervisorctl reload
ExecStop=/usr/bin/supervisorctl shutdown
User=web

[Install]
WantedBy=multi-user.target
注意

以普通用户运行 supervisord, 而不是 root, 比如这里用的 web 这个普通用户。

启动服务

service supervisord status
service supervisord start
chkconfig supervisord on

管理服务

supervisorctl status
supervisorctl start vitepress
supervisorctl restart vitepress
supervisorctl stop vitepress
supervisorctl reread
supervisorctl update vitepress

所有的服务脚本,建议用一个 git 项目进行管理。服务配置说明参考

相关推荐