Linux-安装-Supervisor

戏子无情 提交于 2019-12-12 08:48:36

20191115 作者:陈文小超

准备工作

  1. 安装依赖
# 安装Supervisor
yum install python-setuptools

easy_install supervisor
  1. 生成配置文件
mkdir /etc/supervisor
mkdir /etc/supervisor/supervisord.conf.d
echo_supervisord_conf > /etc/supervisor/supervisord.conf
  1. 修改配置文件
vim /etc/supervisor/supervisord.conf

# include区段修改为(最后一行,注意include前面的分好也要放开)
[include]  
files = /etc/supervisor/supervisord.conf.d/*.conf  
  1. 编写进程文件
# 在/etc/supervisor/supervisord.conf.d创建
vi /etc/supervisor/supervisord.conf.d/laravel-worker

# 添加内容
[program:laravel-worker] # 和文件名保持一致
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php/bin/php /home/app/wisdom-tree/artisan queue:work --tries=3
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/home/app/wisdom-tree/storage/logs/redis-queue.log
  1. 添加系统服务
# 创建文件
vi /etc/init.d/supervisord

# 添加如下内容

#!/bin/sh  
#  
# /etc/rc.d/init.d/supervisord  
#  
# Supervisor is a client/server system that  
# allows its users to monitor and control a  
# number of processes on UNIX-like operating  
# systems.  
#  
# chkconfig: - 64 36  
# description: Supervisor Server  
# processname: supervisord  
  
# Source init functions  
. /etc/init.d/functions  
  
RETVAL=0  
prog="supervisord"  
pidfile="/tmp/supervisord.pid"  
lockfile="/var/lock/subsys/supervisord"  
  
start()  
{  
        echo -n $"Starting $prog: "  
        daemon --pidfile $pidfile supervisord -c /etc/supervisor/supervisord.conf   # 切记记得更改
        RETVAL=$?  
        echo  
        [ $RETVAL -eq 0 ] && touch ${lockfile}  
}  
  
stop()  
{  
        echo -n $"Shutting down $prog: "  
        killproc -p ${pidfile} /usr/bin/supervisord  
        RETVAL=$?  
        echo  
        if [ $RETVAL -eq 0 ] ; then  
                rm -f ${lockfile} ${pidfile}  
        fi  
}  
  
case "$1" in  
  
  start)  
    start  
  ;;  
  
  stop)  
    stop  
  ;;  
  
  status)  
        status $prog  
  ;;  
  
  restart)  
    stop  
    start  
  ;;  
  
  *)  
    echo "Usage: $0 {start|stop|restart|status}"  
  ;;  
  
esac
  1. 配置并开启
chmod +x /etc/init.d/supervisord  
chkconfig supervisord on  
service supervisord start
  1. supervisord管理
# Supervisord安装完成后有两个可用的命令行supervisor和supervisorctl,命令使用解释如下:

supervisord,# 初始启动Supervisord,启动、管理配置中设置的进程。
supervisorctl stop programxxx,# 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
supervisorctl start programxxx,# 启动某个进程
supervisorctl restart programxxx,# 重启某个进程
supervisorctl stop groupworker: ,# 重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all,# 停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update,# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
# 注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。
  1. 查看Supervisor任务执行状态
supervisorctl status
  1. 配置文件(laravel-worker配置文件)改动时需要执行
supervisorctl reread
supervisorctl update # 注意和supervisorctl reload的区别
supervisorctl start laravel-worker:*

问题总结

laravel-worker: ERROR (no such group)

  • supervisord.conf的include前面的分好没有删除一定不要少了后缀名.conf
  • include下面的files路劲引入不正确
  • /etc/supervisor/supervisord.conf.d下面的配置文件不正确:文件名和进程名不一致,文件名少写.conf后缀

laravel-worker can’t find command ‘php’

  • 查看 php 的运行目录 which php

  • /etc/supervisor/supervisord.conf.d配置文件的 command 的 php 加上绝对路径

command=/usr/local/php/bin/php /home/app/wisdom-tree/artisan queue:work --tries=3

参考文献

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!