简介请参考: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