常见问题排查:502、空白页与缓存

按“进程 → 数据库 → 反向代理 → 主题/缓存”的顺序快速定位。

排查线上问题时,先确认请求走到了哪一层,再逐层缩小范围,比反复重启服务更有效。

第一步:进程是否活着

ss -lntp | grep 23180
ps -eo pid,ppid,user,cmd | grep 'cms serve'
curl -i http://127.0.0.1:23180/health/live

本地健康检查都失败时,问题在应用或数据库;本地正常而域名 502,问题在 Nginx 或上游代理。

第二步:数据库与迁移

source shared/configs/runtime.env
./current/bin/cms doctor

doctor 会检查连接、迁移、目录权限、主题与插件状态。常见原因是数据库密码未注入、账号权限不足,或者迁移执行到一半被中断。

第三步:反向代理

nginx -t
tail -f /www/wwwlogs/站点.error.log
curl -I -H 'Host: cms.example.com' http://127.0.0.1/

确认 proxy_pass 端口、证书路径和 Host 头。开启了 CDN 时,还要检查回源地址与回源 Host。

第四步:主题与缓存

  • 页面白屏或 500:执行 cms theme validate --source shared/themes/当前主题,检查标签和资源引用。
  • 改了模板但不生效:确认改的是 shared/themes 而不是旧版本目录,并清理浏览器/CDN 缓存。
  • 发布后列表没更新:页面缓存最多 5 分钟自然过期;多实例部署会在几秒内广播失效。
  • 搜索没有结果:执行 cms search reindex 重建索引,或确认后台搜索模式。

其他常见提示

现象优先检查
invalid plugin secret keyauth.identity_hash_key 是否为 Base64 的 32 字节
database.password is requiredruntime.env 是否使用 export 并被服务加载
管理员密码文件被拒绝密码文件权限必须为 0600
License Cloud 502本地无法访问 Cloud 时的环境问题,不影响社区版使用
后台入口 404确认 app.yaml 的 admin_path 与访问地址一致,并带末尾斜杠

收集信息

提交问题前,请准备:CMS 版本、部署方式、doctor 输出、相关时间段的错误日志、请求的 X-Request-Id。这些信息能显著缩短定位时间。

讨论

发表评论