17
2020
02

Supervisor安装与配置(Linux/Unix进程管理工具)

简介请参考:https://blog.csdn.net/xyang81/article/details/51555473


1. 安装相关

1.1 切换到root用户

sudo -i


1.2 安装Python包管理工具

wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python


1.3 安装supervisor

easy_install supervisor

注:supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。


2. 配置相关

2.1 创建配置文件目录并生成主配置文件

mkdir /etc/supervisor && mkdir /etc/supervisor/config.d && echo_supervisord_conf > /etc/supervisor/supervisord.conf

2.2 修改主配置文件,加载 config.d 路径下的进程管理配置

vim /etc/supervisor/supervisord.conf

将 include 部分注释打开,如下:

[include]
files = /etc/supervisor/config.d/*.ini

2.3 进程管理配置文件(/etc/supervisor/config.d 目录下)说明如下:


[program:lianyun-job-worker]  #设置进程的名称,使用 supervisorctl 来管理进程时需要使用该进程名,这里为 lianyun-job-worker
process_name  #默认为 %(program_name)s,即 [program:x] 中的 x 这个是进程名,如果我们下面的numprocs参数为1的话,就不用管这个参数
                                 了,它默认值%(program_name)s也就是上面的那个program冒号后面的
command #这个就是队列执行的命令
directory #命令执行的目录或者说执行 command 之前,先切换到工作目录 可以理解为在执行命令前会切换到这个目录
autostart #是否自动启动
autorestart #程序意外退出是否自动重启
user #这个参数可以设置一个非root用户,当我们以root用户启动supervisord之后。我这里面设置的这个用户,也可以对supervisord进行管理
numprocs #进程数量当不为1时的时候,就是进程池的概念,注意process_name的设置
startsecs #自动重启间隔 
stderr_logfile #错误日志文件 当redirect_stderr=true。这个就不用
stdout_logfile #子进程的stdout的日志路径 输出日志文件
environment=HOME="/home/pirate", USER="pirate"  #配置环境变量

例子:

[program:lianyun-job-worker]
process_name=%(program_name)s_%(process_num)02d
command=/home/pirate/programs/php/bin/php /home/pirate/programs/lianyun/lib/ScriptRunner.php -p shipgirl -n 19 -f JobProcess.php -d 1
directory=/home/pirate/programs/lianyun
autostart=true
autorestart=true
user=pirate
numprocs=1
startsecs=10
stderr_logfile=/home/pirate/log/supervisor/lianyun-job.err.log
stdout_logfile=/home/pirate/log/supervisor/lianyun-job.out.log
environment=HOME="/home/pirate", USER="pirate"


3.服务运行相关

3.1 服务的启动

supervisord -c /etc/supervisor/supervisord.conf


3.2 进程的管理(交互终端的使用)

supervisord启动成功后,可以通过 supervisorctl 客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。输入help可以查看可以执行的命令列表,如果想看某个命令的作用,运行help 命令名称,如:help stop

例子:


3.2.1 新增服务 在 /etc/supervisor/config.d 下,新增进程配置文件 shipgirl-job-worker.ini,内容如下


[program:shipgirl-job-worker]
process_name=%(program_name)s_%(process_num)02d
command=/home/pirate/programs/php/bin/php /home/pirate/programs/OBJECT/lianyun/lib/ScriptRunner.php -p shipgirl -n 19 -f JobProcess.php -d 1
directory=/home/pirate/programs/OBJECT/lianyun
autostart=true
autorestart=true
user=pirate
numprocs=1
startsecs=10
stderr_logfile=/home/pirate/log/supervisor/shipgirl-job.err.log
stdout_logfile=/home/pirate/log/supervisor/shipgirl-job.out.log
environment=HOME="/home/pirate", USER="pirate"


3.2.2 重新加载配置文件

supervisorctl
reload






« 上一篇 下一篇 »

公告:

跟着我一起每天进步一点点,让学习成为一种习惯!

公告:

跟着我一起每天进步一点点,让学习成为一种习惯!