参考资料

  1. Fresns 核心安装要求汇总
  2. Fresns 伪静态设置
  3. Fresns 的 APP_KEY 是应用加密密钥
  4. Fresns 的定时任务基于 Laravel 的 Task Scheduler 机制
  5. Fresns 的 .env 文件是安装成功后才会在根目录自动生成
  6. Fresns 对 Composer 的版本要求很明确:不低于 2.5
  7. Fresns 配合 Octane 和 Swoole,同样能让应用常驻内存,性能提升十倍以上
  8. Fresns 的软链接,核心是解决“本地存储的文件无法被公网访问”的问题

Supervisor 是 Fresns 在生产环境中运行队列的标准方案

Supervisor 是 Fresns 在生产环境中运行队列的标准方案。它本质上是一个进程监控器,负责确保 php artisan queue:work 进程一直存活,如果意外退出会自动拉起。

📦 安装 Supervisor

Fresns 官方文档明确要求:只要修改了队列连接方式(如改为 redis),就必须配置 Supervisor。

宝塔面板安装(推荐)

  1. 登录宝塔面板,进入「软件商店」

  2. 搜索「Supervisor 进程守护管理器」

  3. 点击安装,等待状态显示「正在运行」

命令行安装(通用 Linux)

sudo apt-get install supervisor   # Debian/Ubuntu
sudo yum install supervisor       # CentOS/RHEL

⚙️ 配置队列进程

宝塔面板配置
进入「Supervisor 进程守护管理器」→「添加守护进程」,填写:

配置项填写内容
进程名称fresns-queue
启动用户www(必须与网站所有者一致,避免日志权限问题)
运行目录/www/wwwroot/你的Fresns路径
启动命令php artisan queue:work redis --queue=fresns --sleep=3 --tries=3
自动启动勾选
异常重启勾选

命令行配置(备用)
创建 /etc/supervisor/conf.d/fresns-worker.conf:

[program:fresns-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /www/wwwroot/fresns/artisan queue:work redis --queue=fresns --sleep=3 --tries=3
autostart=true
autorestart=true
user=www
numprocs=1
redirect_stderr=true
stdout_logfile=/www/wwwroot/fresns/storage/logs/worker.log

numprocs=1 表示启动 1 个 worker 进程。如果队列任务积压严重,可以增大这个数字来并行处理。

🔄 应用配置

宝塔面板:添加后自动生效,在进程列表中查看状态是否为 RUNNING。

命令行:

sudo supervisorctl reread    # 重新读取配置
sudo supervisorctl update    # 应用新配置
sudo supervisorctl start fresns-worker:*   # 启动进程

💡 关键注意事项

启动命令中的参数

  • redis:与 .env 中 QUEUE_CONNECTION=redis 对应

  • --queue=fresns:与 .env 中 REDIS_QUEUE=fresns 一致

  • --tries=3:任务失败最多重试 3 次

  • --sleep=3:队列为空时休眠 3 秒再检查

Fresns 队列的 PHP 函数依赖
使用 Redis 异步队列时,服务器必须保留 pcntl_signal、pcntl_alarm、pcntl_async_signals 三个函数,否则队列进程无法正常运作。

插件升级后重启队列
插件升级后,必须重启 Supervisor 中的队列进程,否则新代码不会生效。在宝塔中点击「重启」,或执行:

php artisan queue:restart

多站点隔离
同一服务器运行多个 Fresns 实例时,必须修改各自的 REDIS_QUEUE 名称或 REDIS_DB 索引,避免队列数据混淆。

作者:王壹杰
时间:2026-10-01 17:05:35
来源:https://fresns.ciilii.com/