当前位置: 代码迷 >> 综合 >> Linux-安装-Supervisor
  详细解决方案

Linux-安装-Supervisor

热度:45   发布时间:2023-12-26 04:33:02.0

20191115 作者:陈文小超

准备工作

  1. 安装依赖
# 安装Supervisor
yum install python-setuptoolseasy_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

参考文献

  • Bamboosupervisor安装部署和使用实例
  • Linux配置Supervisor 配置遇到的坑
  • centos/ubuntu/Mac中使用Supervisor监控管理laravel queue队列进程
  • no such group
  • 如何使用Supervisor管理Laravel 队列进程?
  • 为laravel队列安装supervisor并配置
  • Supervisor 解决 can’t find command php*