Files
cloud-chip.cn/.workbuddy/memory/2026-08-08.md
T
2026-08-08 22:47:07 +08:00

3.8 KiB
Raw Blame History

2026-08-08

调试:Gitea webhook "无响应"

  • 现象:Gitea 推送 webhook 测试无响应;手动部署(mes2 链路)正常。
  • 架构关键事实:push-to-deploy 的 webhook 接收器是独立服务,部署在子域 webhook.cloud-chip.cnIP 47.107.30.116),不属于本 Laravel 项目(cloud-chip.cn 主站);本工程的 deploy.sh 只是被叫醒后 git pull 的执行体。
  • 实测结论(2026-08-08):DNS/TLS/TCP443 全通,但 //hook 任意路径均 0 字节超时 → Nginx 活着、upstreamwebhook 应用)挂掉/卡死,导致"无响应"。根因在服务端应用层,与网络/证书/本工程无关。
  • 修复方向(未动手,用户选"只诊断"):在 47.107.30.116 上查 webhook 服务进程/Nginx error.log/上游端口,重启服务;接收器应改为后台执行 deploy.sh 并立即回 200,避免同步阻塞。
  • 安全提醒:Gitea webhook URL 里的 access_key 已暴露在聊天中,建议轮换。

修复:config/database.php 弃用告警(PHP 8.5

  • 现象:PHP 8.5 报 Deprecated: Constant PDO::MYSQL_ATTR_SSL_CA is deprecated, use Pdo\Mysql::ATTR_SSL_CA insteadconfig/database.php:36mysql 连接的 options)。
  • 修复:改为 (\class_exists(\Pdo\Mysql::class) ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA)。symfony/polyfill-php84 在 8.4 以下提供 Pdo\Mysql,故本地 8.3 与线上 8.5 均兼容。
  • 验证:php -l 通过;本地 8.3 class_exists 为 truePdo\Mysql::ATTR_SSL_CA = 1009(与旧常量同值)。app 代码中仅此一处使用 PDO::MYSQL_*
  • 部署提醒:上传后若 config 已缓存,需 php artisan config:clear(或重新 config:cache)方生效。

webhook 接收器架构(关键,已查清)

  • webhook.cloud-chip.cn 是宝塔站点,文档根 /www/wwwroot/webhook.cloud-chip.cn,启用「反向代理」。
  • 反代规则文件:/www/server/panel/vhost/nginx/proxy/webhook.cloud-chip.cn/2ff80e9159b517704ce43f0f74e6e247_webhook.cloud-chip.cn.conf,内容 proxy_pass https://47.107.30.116:8698;
  • 8698 = BT-Panel(宝塔面板主进程),不是 webhook 接收器 → 流量被送进面板,导致 Gitea 测试「无响应」。
  • 真正的接收器是宝塔 WebHook 插件URL 格式 access_key+param 可印证),默认端口 8443;当前未运行(ss 无 8443、无 hook 进程)。
  • 修复方向:安装/启动宝塔 WebHook 插件 → 反代目标改为 http://127.0.0.1:<插件端口> → nginx -s reload → 插件内自测 200 后再去 Gitea 测试。
  • 注意:真正的站点 vhost 在 /www/server/panel/vhost/nginx/(不是空的 /www/server/nginx/conf/vhost/)。

deploy.sh 增强 + 权限建议(cloud-chip.cn 生产)

  • deploy.sh 已加 php artisan config:clear + config:cachegit pull 之后),避免改 config/* 后 Laravel 仍读旧缓存。config:cache 失败仅告警不中断。已由用户手动推送。
  • 权限问题:生产服务器项目文件目前全归 root。要点:
    • 先确认 PHP-FPM 运行用户(宝塔默认 www):grep -r "^user" /www/server/php/*/etc/php-fpm.conf
    • 若 PHP-FPM 为 www:需 chown -R www:www /www/wwwroot/cloud-chip.cn,否则 storage/bootstrap/cache 写不进(日志/缓存/上传 Permission denied)。目录 755、文件 644,可写目录 775.env 限 640。
    • 若 PHP-FPM 以 root 跑:当前 root 归属"能用"但 Web 进程以 root 运行不安全,仍建议改 www 并改归属。
    • 与本次修复关系:弃用修复不依赖权限(config 文件 root 644 可被 Web 读取);关键是 deploy.sh 的 config:clear 让修复生效。权限是独立健壮性项,建议顺手做。
    • deploy.sh 中 config:cache 若以 root 运行会生成 root 所有的 config.php;因已先 config:clear 删除缓存,Laravel 直接读 config 文件,www 可读即可,无需纠结归属。