侧边栏壁纸
博主头像
蔡关荣博客 博主等级

行动起来,活在当下

  • 累计撰写 19 篇文章
  • 累计创建 9 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Supervisor 进程管理程序

Administrator
2019-06-20 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程

注:本文以centos 7.5 为例,supervisor 版本3.4.0。

目前我在项目中的使用场景是 think-queue 队列的监听,关于think-queue 的使用:传送门

Supervisor 使用很简单,下面是一个配置示例:

[program:system_msg_queue]

command=php think queue:work --queue system_msg_queue

directory= /data/your project path/

process_name=%(process_num)02d

numprocs=5

autostart=true

autorestart=true

startsecs=1

startretries=20

redirect_stderr=true

user=vagrant

stdout_logfile=/data/supervisor-log/supervisord.out.log

stderr_logfile=/data/supervisor-log/supervisord.err.log

其他配置参考官方文档:http://www.supervisord.org/configuration.html#program-x-section-example

安装:

第一种:yum 或 apt 方式安装

#yum

sudo yum info supoervisor # 查看安装源中的版本

sudo yum install -y supervisor # 安装 

#apt

sudo apt-cache show supervisor # 查看安装源中的版本

sudo apt-get install supervisor # 安装

安装完成后会添加几个系统命令 supervisord supervisorctl echo_supervisord_conf 默认的配置都已经生成,其中supervisord.conf是supervisord的配置文件,文件路径为:`/etc/supervisord.conf`

编辑配置文件

vim /etc/supervisord.conf

找到最后一行,这里我将配置文件放在 /etc/supervisord.d 目录下

;[include]

files = supervisord.d/*.ini

files= /etc/supervisord.d/*.conf # 定义配置文件目录,这里我讲.ini 改为.conf

第二种:使用pip 安装,pip 是一个Python 包安装和管理工具

先看看是否安装了pip pip --version 如果提示命令不存在 sudo: pip: command not found ,则可以使用以下方法来安装:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本

 sudo python get-pip.py    # 运行安装脚本

安装完成再次运行 pip --version 如下输出就安装成功了

[root@VM-142-222-centos supervisord.d]# pip --version

pip 20.1.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)

接下来安装supervisor

sudo pip install  supervisor

![](uploads/article/20200719/zszLwfW0wjEirjXlW6NWMmcZb8n8thJ4gw43Xwjk.png)

设置开机启动

im /etc/rc.local

# 在最后一行添加

/usr/bin/supervisord -c /etc/supervisor/supervisord.conf

新建配置文件

# 配置文件内容

[program:自定义名称] 

command=php think queue:work --queue register_handle --daemon --tries 10 #要执行的命令

directory= /www/wwwroot/admin.xxx.com  #执行目录

process_name=%(process_num)02d #进程名称

numprocs=5

autostart=true #代表这个进程跟随 Supervisor,只要 Supervisor 启动了,就启动这个进程;

autorestart=true #代表要求 Supervisor 监听进程状态,假如异常退出就再次启动;

startsecs=1 

startretries=20

redirect_stderr=true 

user=www #代表以 www 身份启动进程

stdout_logfile= /www/wwwroot/admin.xxx.com/test.out.log #代表将进程的输出保存到日志文件中。

stderr_logfile=/www/wwwroot/admin.xxx.com/test.err.log #代表将进程的错误输出保存到日志文件中。

supervisor 启动、停止、重启 、状态查看命令

service supervisord start #启动服务

service supervisord stop #终止服务

service supervisord restart #重启服务

supervisorctl status #检查是否正常运行 状态是 RUNNING 说明运行正常

0

评论区