Supervisord服务管理

Supervisor是用Python开发的一套通用的进程管理程序,将一个普通的命令行进程变为后台Daemon,并监控进程状态,异常退出时可以进行重启。

安装

pip install supervisor

yum -y install epel-release
yum install -y supervisor

# 查看版本
supervisord -v

如果通过pip安装成功之后,可能会找不到命令,实际是安装在了PYTHON_PATH/bin里,例如我这里在/usr/local/python3/bin下,需要加链接
ln -s /usr/local/python3/bin/echo_supervisord_conf /usr/bin/echo_supervisord_conf
ln -s /usr/local/python3/bin/supervisorctl /usr/bin/supervisorctl
ln -s /usr/local/python3/bin/supervisord /usr/bin/supervisord

相关配置

# 通过pip安装的可能会没有配置文件,需要通过echo_supervisord_conf创建文件
# 执行 echo_supervisord_conf > /etc/supervisord.conf
# supervisor配置文件[supervisor的配置文件默认是不全的,不过在大部分默认的情况下,基本功能已经满足]
/etc/supervisord.conf

# 同样pip安装需要手动创建子进程配置文件路径
# 子进程配置文件路径[默认子进程配置文件为ini格式,可在supervisor主配置文件中修改]
/etc/supervisord.d/

子进程配置文件位置需要在/etc/supervisord.conf中开启路径位置,即以下内容取消注释
[include]
files = /etc/supervisord.d/*.ini

子进程配置

给需要管理的子进程(程序)编写一个配置文件,放在/etc/supervisor.d/目录下,以.ini作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)。如任意定义一个和脚本相关的项目名称的选项组(/etc/supervisord.d/test.ini):

# [program:应用名称]
[program:queue]
# 切换到指定目录执行启动命令
directory=/root/queue
# 命令路径,如果使用python启动的程序应该为python /home/test.py,不建议放入/home/user/, 对于非user用户一般情况下是不能访问
command=php /www/group/yii queue/listen
# 添加环境
environment=PATH=/usr/bin:/usr/local/bin
# 进程数量
numprocs=2
# 当numprocs为1时,process_name=%(program_name)s - 当numprocs>=2时,%(program_name)s_%(process_num)02d
process_name=%(program_name)s_%(process_num)02d
# 如果是true,当supervisor启动时,程序将会自动启动
autostart=true
# 自动重启
autorestart=true
# 启动延时执行,默认1秒
startsecs=10
# 启动尝试次数,默认3次
startretries=3
# 以root用户执行
user=root
# 日志路径
logfile=/tmp/queue.log

# 日志重定向,指定每个文件的大小/文件个数/日志位置
;redirect_stderr         = true
;stdout_logfile_maxbytes = 50MB
;stdout_logfile_backups  = 10
;stdout_logfile          = /srv/awesome/log/app.log

Supervisor管理awesome项目案例

awesome是一个基于aiohttp构建的Web项目,其中app.py为启动入口。

[program:awesome]
command     = python3 /srv/awesome/www/app.py
directory   = /srv/awesome/www
process_name= %(program_name)s
user        = root
startsecs   = 3

redirect_stderr         = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups  = 10
stdout_logfile          = /srv/awesome/log/app.log

命令说明

# 查看所有进程状态
supervisorctl status

# 停止awesome
supervisorctl stop awesome

# 启动awesome
supervisorctl start awesome

# 重启awesome
supervisorctl restart awesome

# 配置更新后加载新配置
supervisorctl update awesome

# 重启配置中所有程序
supervisorctl reload

# 查看日志
supervisorctl tail -f awesome

使用supervisorctl前先启动supervisord,启动命令:/bin/supervisord -c /etc/supervisord.conf/usr/bin/python2 /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

systemctl start supervisord.service     //启动supervisor并加载默认配置文件
systemctl enable supervisord.service    //将supervisor加入开机启动项
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值