如何修改数据库连接
经常会遇到数据库迁移等原因需要修改数据库连接,那么需要如何操作呢?
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 # 如果文件不存在忽略
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,那么就会遇到这个问题。
为什么这会导致问题?
-
每天的冲突:每天凌晨的第一次
schedule:run执行时,Laravel 发现今天的日志文件还没创建。 -
身份被抢占:因为定时任务是
root跑的,它会顺手创建一个所有者为root的日志文件。 -
权限封死:默认权限是
644(即:root可读写,其他人只能读)。 -
Supervisor 崩溃:你的 Supervisor 守护进程(Horizon)是用
www用户跑的,它想往日志里记东西,但发现没权限写,于是报错停止。
这正是导致日志文件权限变为 root 的直接原因。
在宝塔面板添加定时任务时,默认的执行用户通常是 root。
为什么这会导致问题?
-
凌晨 0:00 的冲突:每天凌晨的第一次
schedule:run执行时,Laravel 发现今天的日志文件还没创建。 -
身份被抢占:因为定时任务是
root跑的,它会顺手创建一个所有者为root的日志文件。 -
权限封死:默认权限是
644(即:root可读写,其他人只能读)。 -
Supervisor 崩溃:你的 Supervisor 守护进程(Horizon)是用
www用户跑的,它想往日志里记东西,但发现没权限写,于是报错停止。
解决方案:如何修复
修改宝塔定时任务用户:
-
进入宝塔面板 -> 计划任务。
-
找到那个
schedule:run的任务,点击“编辑”。 -
在“执行用户”下拉菜单中,将
root改为www。 -
保存。















