supervisor 的简单使用

supervisor 使用

简介

详情见官网: http://supervisord.org/

简单来说, 当我们在linux 服务器进行部署服务时, 比如 flask项目, 这个时候如果使用 main.py的形式启动(现不说 gunicorn ), 你就必须得保持 shell 界面的开启.
那我们想要他后台一直启动, 该如何呢? 可以使用 nohup等方式,但当进程异常退出了, 我们的服务也就停了. 
现在需要一个能够管理我们的服务的程序, 能让我们服务24小时运行, 并且异常退出了还能重新拉起一个新的进程服务.

supervisor 就是做这个的.

组件

- supervisor: 
	
- supervisord: 
	supervisord是supervisor的服务端程序。
	干的活:启动supervisor程序自身,启动supervisor管理的子进程,响应来自clients的请求,重启闪退或异常退出的子进程,把子进程的stderr或stdout记录到日志文件中,生成和处理Event

- supervisorctl:
	如果说supervisord是supervisor的服务端程序,那么supervisorctl就是client端程序了。
	supervisorctl有一个类型shell的命令行界面,我们可以利用它来查看子进程状态,启动/停止/重启子进程,获取running子进程的列表等等。。。最牛逼的一点是,supervisorctl不仅可以连接到本机上的supervisord,还可以连接到远程的supervisord,当然在本机上面是通过UNIX socket连接的,远程是通过TCP socket连接的。
	

安装

yum install supervisor

生成配置

echo_supervisord_conf
echo_supervisord_conf > /etc/supervisord.conf

修改主配置

vim /etc/supervisord.conf

# 开启web管理界面, 注意公网安全问题
[inet_http_server]
port=10.0.0.1:9001
username=xxxx
password=xxxx


# 配置监控进程的配置文件目录
[include]
files = /etc/supervisord.d/*.ini

添加子进程配置文件

#项目名
[program:blog]
#脚本目录
directory=/opt/bin
#脚本执行命令
command=/usr/bin/python /opt/bin/test.py
# 这里可以配置启动的环境变量
environment=PROJECT_ENV=onlie	
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的
autorestart=true
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
startsecs=1
#脚本运行的用户身份 
user = test
#日志输出 
stderr_logfile=/tmp/blog_stderr.log 
stdout_logfile=/tmp/blog_stdout.log 
#把stderr重定向到stdout,默认 false
redirect_stderr = true
#stdout日志文件大小,默认 50MB
stdout_logfile_maxbytes = 20
#stdout日志文件备份数
stdout_logfile_backups = 20


开启服务

systemctl status supervisord
systemctl start supervisord
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值