Skip to content

Supervisor 进程管理

本机使用 Supervisor 管理多个项目的进程,配置文件位于 /usr/local/etc/supervisor.d/

进程配置文件说明端口
redisredis.iniRedis 服务 (共用)6379
factory-horizonfactory-horizon.ini队列管理 (Laravel Horizon)-
factory-reverbfactory-reverb.iniWebSocket 服务 (Laravel Reverb)8080
factory-schedulerfactory-scheduler.ini定时任务调度-
进程配置文件说明端口
innocn-horizoninnocn-horizon.ini队列管理 (Laravel Horizon)-
innocn-reverbinnocn-reverb.iniWebSocket 服务 (Laravel Reverb)8081
innocn-schedulerinnocn-scheduler.ini定时任务调度-

前置条件

两个项目的 .env 都需要:

  • QUEUE_CONNECTION=redis
  • BROADCAST_CONNECTION=reverb

常用命令

bash
supervisorctl status                          # 查看所有进程状态
supervisorctl restart all                     # 重启所有进程
supervisorctl restart factory-horizon         # 重启 Factory 队列
supervisorctl restart innocn-horizon          # 重启 innoshop.cn 队列
supervisorctl stop all                        # 停止所有进程
supervisorctl start all                       # 启动所有进程
supervisorctl tail factory-horizon            # 查看实时日志

日志位置

进程日志存放在各项目 storage/logs/ 目录下:

  • Factory: storage/logs/{horizon,reverb,scheduler}.log
  • innoshop.cn: storage/logs/{horizon,reverb,scheduler}.log
  • Redis: Factory/storage/logs/redis.log

注意事项

  • schedule:work 是常驻进程,不需要配置系统 crontab
  • 生产环境建议使用 crontab + schedule:run 替代 schedule:work
  • Horizon 仪表盘地址:http://your-domain/horizon
  • 两个项目的 Reverb 端口不同:Factory 用 8080,innoshop.cn 用 8081
  • Redis 是共用的,只需一个实例

帆连科技 · 基于 OSL 3.0 许可发布