Supervisor安装与配置进程守护

前言

你好,我是Dr.叶子,用心写最优美的博客,弹最好听的钢琴!

 

背景

       当一个进程必须不断运行,但是这个进程可能因为服务器等多种因素而导致中断。这时候,我们希望能自动重新启动它,就需要使用到了Supervisor 起到守护进程的作用。

 

一、安装 Supervisor

  • 方法1:联网安装
# 联网安装
pip install supervisor
  • 方法2:下载安装包上传到服务器,解压安装

PyPi官网: https://pypi.org/project/supervisor/#files
在这里插入图片描述

# 下载 supervisor-4.2.1.tar.gz,解压安装
tar zxvf supervisor-4.2.1.tar.gz
cd supervisor-4.2.1
python setup.py build
python setup.py install

# 或者 supervisor-4.2.1-py2.py3-none-any.whl ,解压安装
pip install supervisor-4.2.1-py2.py3-none-any.whl

 

二、验证安装是否成功

# 执行命令,如果有显示,且没报错,安装成功。
echo_supervisord_conf
  • 安装完成后会生成三个执行程序:
    1.supervisord 守护进程服务(用于接收进程管理命令)
    2.supervisorct 客户端(用于和守护进程通信,发送管理进程的指令)
    3.echo_supervisord_conf 生成初始配置文件程序

 

三、配置进程守护

# 步骤1:运行 echo_supervisord_conf 命令生成 supervisor 的初始化配置文件
echo_supervisord_conf > /etc/supervisord.conf

# 步骤2:编辑 supervisord.conf 
vim /etc/supervisord.conf


# 步骤3:修改以下原有的默认配置
# 原先/tmp/目录是缓存目录,Linux 会根据不同情况自动删除其下面的文件,所以需要替换成/var/目录,防止报错
[unix_http_server]
file=/var/run/supervisor.sock

[supervisord]
logfile=/var/log/supervisord.log
pidfile=/var/run/supervisord.pid

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock



# 步骤4:添加以下配置
[program:nginx]
command=/usr/local/nginx/sbin/nginx -s reload  	; 程序启动命令
autostart=true       							; 在supervisord启动的时候也自动启动
startsecs=10         							; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true     							; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3       							; 启动失败自动重试次数,默认是3
user=root          								; 用哪个用户启动进程,默认是root
priority=999         							; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true 							; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB  					; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20   					; stdout 日志文件备份数,默认是10
stdout_logfile=/usr/local/nginx/logs/nginx.out	; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stopasgroup=false     							; 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     							; 默认为false,向进程组发送kill信号,包括子进程

# 步骤5:保存退出
Esc按键
:wq

# 步骤6:启动 supervisord 服务。默认去找 /etc/supervisord.conf 这个配置文件
supervisord 

# 查看 supervisord 服务是否在运行
ps aux | grep supervisord

# 查看 supervisord 服务是否生效
ps -ef | grep nginx

注意: “;”分号为注释标识。

 

四、Supervisor 常用命令

操作执行命令
重启supervisorctl restart
更新配置文件supervisorctl update
查看所有进程的状态supervisorctl status
停止所有进程supervisorctl stop all
启动所有进程supervisorctl start all
重启所有进程supervisorctl reload all
添加supervisor.sock链接unlink /var/run/supervisor/supervisor.sock
指定配置文件启动supervisord -c /etc/supervisord.conf

 

参考来源

【1】博客园: Python—守护进程管理工具(Supervisor)
【2】博客园: 使用Supervisor守护Python进程
【3】CSDN: supervisor配置 nginx
【4】CSDN: “unix:///tmp/supervisor.sock no such file“ 错误解决方案
【5】CSDN: supervisor出现Unlinking stale socket /tmp/supervisor、unix:/run/supervisor/supervisor.sock no such file


 

后语

  1. 原创内容,转载说明出处哦!
  2. 以上内容本人整理,亲测可行,如有任何问题,敬请指正,谢谢~~
  3. 点赞、收藏、也欢迎打赏,我弹钢琴你听呀~~哈哈!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值