Xboard 常见使用问题

如何修改数据库连接

经常会遇到数据库迁移等原因需要修改数据库连接,那么需要如何操作呢?

1 找到配置文件路径:

安装目录/.env

2 修改这个 .env 文件里面的数据库部分:

DB_HOST=127.0.0.1          # 改成你的 MySQL 地址(Docker 的话改成 mysql 容器名)
DB_PORT=3306
DB_DATABASE=xboard         # 你的数据库名
DB_USERNAME=xboard         # 你的数据库用户名
DB_PASSWORD=你的密码
DB_CONNECTION=mysql

3 清理缓存

XBoard(以及几乎所有基于 Laravel 的项目)修改 .env 文件后不会自动生效,这是 Laravel 的“配置缓存”机制导致的。所以还需要清理下缓存

改完env文件后在终端执行下面两步就立刻生效:

# 进入网站根目录
cd /www/wwwroot/xboard   # 你的实际路径
php artisan config:cache   # 清除+重新缓存配置

 

修改Redis连接

利用Xboard后,很多时候会需要利用远程的Redis或者修改Redis,那么需要如何修改及迁移呢?

1. 部署并安装好Redis

2. 如果远程Redis,需配置上访问权限,常见设置:

  • 开放6379端口
  • 开放访问IP
  • 宝塔面板需设置Bind,bind 0.0.0.0 # 或 bind 你的VPS公网IP(推荐,更安全),0.0.0.0 表示允许所有 IP 连接(测试用,生产慎用)
  • 设置Redis密码,若使用宝塔面板,可在优化设置,requirepass中设置密码 (建议配置更安全)

3. 测试是否可以连通远程的Redis

redis-cli -h 你的VPS公网IP -p 6379 -a 你的密码 ping

4. 编辑.env 文件,目录同上修改这个 .env 文件里面的

REDIS_HOST=
REDIS_PASSWORD=
REDIS_PORT=6379

5. 清理缓存

改完env文件后在终端执行下面两步就立刻生效,Xboard 会自动重构Redis数据。

# 进入网站根目录
cd /www/wwwroot/xboard   # 你的实际路径
php artisan config:cache   # 清除+重新缓存配置

队列运行状态异常,Supervisor 守护 Horizon进程停止

在 XBoard 等生产环境,必须用 Supervisor(或类似工具如 systemd)守护 Horizon,否则队列任务(如流量统计、订阅更新、订单通知)会中断,导致后台显示“队列运行状态异常”。

常见原因是因为迁移等过程中导致 storage/logs/ 目录权限不足。解决方法如下:

步骤 1: 修复 storage 目录权限(核心!)

cd /www/wwwroot/xboard目录

# 递归修复 ownership 和权限
chown -R www:www storage bootstrap/cache
chmod -R 755 storage bootstrap/cache

# 特别确保 logs 目录和文件可写
chmod 775 storage/logs
chmod 664 storage/logs/*.log 2>/dev/null || true   # 如果文件不存在忽略
步骤 2: 清空旧日志文件(防止残留权限问题)
rm -f storage/logs/*.log   # 删除所有旧日志,新日志会自动创建

步骤 3: Supervisor 配置确认,并重启

 

  • 启动用户:www(不是 root!)
  • 启动目录:/www/wwwroot/xboard目录
  • 启动命令:/www/server/php/84/bin/php artisan horizon
  • 进程数量:1
  • 优先级:999
  • 自动重启:开启
  • 环境变量:如果有,加 APP_ENV=production

 

Logs文件每天自动创建变成644 root权限,导致Supervisor 守护 Horizon 权限不足,进程停止

在服务迁移或者配置错误的情况,可能会遇到 Supervisor 守护 Horizon 权限不足导致进程停止,虽然按照上述方法恢复了权限,但是可能会遇到每天新logs生成的时候又会变成644 root权限,导致supervisor 再次异常。这可能主要的原因是你所配置的定时任务有些问题。

Xboard需要配置每分钟运行 artisan schedule:run,如果你在宝塔面板等添加定时任务时,默认选择了执行用户是 root,那么就会遇到这个问题。

为什么这会导致问题?

  1. 每天的冲突:每天凌晨的第一次 schedule:run 执行时,Laravel 发现今天的日志文件还没创建。

  2. 身份被抢占:因为定时任务是 root 跑的,它会顺手创建一个所有者为 root 的日志文件。

  3. 权限封死:默认权限是 644 (即:root可读写,其他人只能读)。

  4. Supervisor 崩溃:你的 Supervisor 守护进程(Horizon)是用 www 用户跑的,它想往日志里记东西,但发现没权限写,于是报错停止。

这正是导致日志文件权限变为 root 的直接原因

在宝塔面板添加定时任务时,默认的执行用户通常是 root

为什么这会导致问题?

  1. 凌晨 0:00 的冲突:每天凌晨的第一次 schedule:run 执行时,Laravel 发现今天的日志文件还没创建。

  2. 身份被抢占:因为定时任务是 root 跑的,它会顺手创建一个所有者为 root 的日志文件。

  3. 权限封死:默认权限是 644 (即:root可读写,其他人只能读)。

  4. Supervisor 崩溃:你的 Supervisor 守护进程(Horizon)是用 www 用户跑的,它想往日志里记东西,但发现没权限写,于是报错停止。


解决方案:如何修复

修改宝塔定时任务用户:

  1. 进入宝塔面板 -> 计划任务

  2. 找到那个 schedule:run 的任务,点击“编辑”。

  3. 在“执行用户”下拉菜单中,将 root 改为 www

  4. 保存。

 

Xboard 常见使用问题

 

本站TWOIMG所有资源源自网络,仅供学习与参考,请勿用于商业用途TWOIMG » Xboard 常见使用问题
赞(0)