Supervisor实现进程守护

在开发过程中经常需要server时候运行在cloud上。这里介绍一个比较好的工具实现这种需求。
Supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程。

以守护nginx为例
环境:ubuntu
运行Supervisor需要root权限
官方文档:http://www.supervisord.org

1 安装Supervisor

apt-get install supervisor

安装完成后我们可以在/etc/supervisor/找到Supervisor

2 supervisord 配置

/etc/supervisor/supervisord.conf 即为Supervisor配置文件.
我们编写该配置文件启动Supervisor即可以对特定进程进行守护:

vi /etc/supervisor/supervisord.conf
配置文件中注释是用冒号注释;

[include]
files = /etc/supervisor/conf.d/*.conf
我们在[include]后面添加新program

program相关参数说明:

[program:nginx] nginx为我们定义进程名,
directory=/home/ubuntu/webvideo/nginx 待守护程序所在根目录
command=/home/ubuntu/webvideo/nginx/sbin/nginx -g ‘daemon off;’ 启动程序命令
autostart =true 在 supervisord 启动的时候也自动启动
startsecs=5 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart =true 程序异常退出后自动重启
startretries=3 启动失败自动重试次数,默认是 3
user=ubuntu 用哪个用户启动
redirect_stderr=true 把 stderr 重定向到 stdout,默认 false,用于保存程序输出作为log
stdout_logfile_maxbytes=20MB stdout 日志文件大小,默认 50MB
stdout_logfile_backups=20 stdout 日志文件备份数,即一个log写满后会接这开一个log往下写
stdout_logfile =/home/ubuntu/webvideo/nginx/logs/nginx_stdout.loglog存储路径

sample:
[program:nginx]
directory=/home/ubuntu/webvideo/nginx
command=/home/ubuntu/webvideo/nginx/sbin/nginx -g 'daemon off;'
autostart=true
startsecs=3
autorestart=true
startretries=3
user=root
redirect_stderr=true
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=20
stdout_logfile = /home/ubuntu/webvideo/nginx/logs/nginx_stdout.log

[program:x] 其中x使我们定义进程名,我们可以在 supervisorctl 中通过这个值来对程序进行 start、restart、stop 等操作。
Nginx 使用nginx -g ‘daemon off;’ 命令将nginx运行在前台,因为supervisord 无法监控后台进程

3 启动supervisord

sudo supervisord -c /etc/supervisor/supervisord.conf 

ps aux | grep supervisord 我们可以用这条命令看supervisord 是否已经启动
netstat -ntl可以查看端口占用情况

4 supervisord 常用操作

以下命令均需要root权限

supervisorctl status          #查看守护程序状态
supervisorctl stop nginx      #停止nginx
supervisorctl start nginx     #启动nginx
supervisorctl restart nginx   #重启 nginx  程序
supervisorctl reread          #读取有更新(增加)的配置文件,但不会启动新添加的程序
supervisorctl update          #重启配置文件修改过的程序

更新了配置文件需要update一下 才能生效

5 supervisord 进程状态

STOPPED (0) 进程已停止
STARTING (10) 该进程由于启动请求而开始。
RUNNING (20) 该过程正在运行。
BACKOFF (30)该过程进入“ 启动”状态,但随后退出的速度太快而无法移至“ 运行”状态。 前面有startsecs 这个参数设定
STOPPING (40) 由于停止请求,该进程正在停止。
EXITED (100)该进程从RUNNING状态退出(预期或意外)。
FATAL (200)该过程无法成功启动。
UNKNOWN (1000)该进程处于未知状态(supervisord 编程错误)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值