supervisor for Mac

参考资料

异常问题

  • error: <class ‘socket.error’>, [Errno 13] Permission denied: file: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py line: 228

    // 加上 sudo
    sudo supervisorctl -c /usr/local/etc/supervisord.ini
  • Unlinking stale socket /usr/local/var/run/supervisor.sock

    find / -name supervisor.sock
    unlink /***/supervisor.sock  // 根据上一步 find中查找的路径执行unlink
  • supervisorctl操作Connection refused

    // 配置完应用之后,重新加载配置
    sudo supervisorctl -c /usr/local/etc/supervisord.ini
    supervisorctl> reload
  • error: <class ‘socket.error’>, [Errno 111] Connection refused: file: /usr/lib64/python2.7/socket.py line: 224

    // 检查supervisord进程
    ps aux|grep supervisord

    // 结果是supervisord进程不在了,启动supervisord, supervisorctl的相关命令就可以执行了

  • 不希望开机启动

    // 每次启动,指定配置文件
    sudo supervisord -c /usr/local/etc/supervisord.ini
  • supervisord 没有加上 sudo,supervisorctl即使加上 sudo,也会显示没有权限

    ➜  supervisor.d supervisord -c /usr/local/etc/supervisord.ini
    ➜  supervisor.d sudo supervisorctl -c /usr/local/etc/supervisord.ini
    project1-laravel-queue:project1-laravel-queue_00   BACKOFF   unknown error making dispatchers for 'project1-laravel-queue_00': EACCES
    project1-laravel-queue:project1-laravel-queue_01   BACKOFF   unknown error making dispatchers for 'project1-laravel-queue_01': EACCES

最终配置与启动

// 基本配置文件
/usr/local/etc/supervisord.ini

// 根据上面文件最后一行 incldue 新建目录 
mkdir /usr/local/etc/supervisor.d

// 新建日志文件,同时修改所属关系
-rw-r--r--   1 user1  staff  373  6  8 22:03 lumen-project1.ini

// lumen-project1.ini 内容
[program:project1-laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /Users/user1/sites/project1/artisan queue:work redis --queue=high,default,low --sleep=5 --tries=2 --timeout=60  --daemon
autostart=true
autorestart=true
user=gujinhe
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/supervisor/project1-queue.log

// 启动 supervisord
sudo supervisord -c /usr/local/etc/supervisord.ini

// 启动 
sudo supervisorctl -c /usr/local/etc/supervisord.ini

// 正常启动会看到目前正在执行的各个配置好的进程
➜  supervisor.d sudo supervisorctl -c /usr/local/etc/supervisord.ini
project1-laravel-queue:project1-laravel-queue_00   RUNNING   pid 30378, uptime 0:06:43
project1-laravel-queue:project1-laravel-queue_01   RUNNING   pid 30377, uptime 0:06:43
supervisor>

// 帮助
supervisor> help

// 错误说明:
EACCES:访问/执行权限不足
EISDIR:目录权限不足,一般可能是日志权限问题,需要修改对应所属和分组;或者文件夹重名等问题

注意事项

  • 每次修改event (实现了队列接口的)最好重启一次supervisor,否则无法及时生效
  • 可以在数据库表 failed_jobs 中查看失败原因,也可以在supervisor中对应的日志中查看
本作品采用《CC 协议》,转载必须注明作者和本文链接
努力是不会骗人的!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!