实时更新
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
# 2026-08-08
|
||||||
|
|
||||||
|
## 调试:Gitea webhook "无响应"
|
||||||
|
- 现象:Gitea 推送 webhook 测试无响应;手动部署(mes2 链路)正常。
|
||||||
|
- 架构关键事实:push-to-deploy 的 webhook 接收器是**独立服务**,部署在子域 `webhook.cloud-chip.cn`(IP 47.107.30.116),**不属于**本 Laravel 项目(cloud-chip.cn 主站);本工程的 `deploy.sh` 只是被叫醒后 `git pull` 的执行体。
|
||||||
|
- 实测结论(2026-08-08):DNS/TLS/TCP443 全通,但 `/` 与 `/hook` 任意路径均 0 字节超时 → Nginx 活着、upstream(webhook 应用)挂掉/卡死,导致"无响应"。根因在服务端应用层,与网络/证书/本工程无关。
|
||||||
|
- 修复方向(未动手,用户选"只诊断"):在 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 instead`(config/database.php:36,mysql 连接的 `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` 为 true,`Pdo\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/)。
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 部署脚本
|
||||||
|
# 路径: /www/wwwroot/cloud-chip.cn/deploy.sh
|
||||||
|
|
||||||
|
# 配置项
|
||||||
|
SOURCE_DIR="/www/wwwroot/cloud-chip.cn"
|
||||||
|
PUBLIC_DIR="/www/wwwroot/cloud-chip.cn/public"
|
||||||
|
LOG_FILE="/www/wwwroot/cloud-chip.cn/deploy.log"
|
||||||
|
|
||||||
|
# 记录日志函数
|
||||||
|
log_message() {
|
||||||
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
echo "[$timestamp] $1" >> "$LOG_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 解决 Git 2.35.2+ 的「dubious ownership」拦截:把本仓库加入安全目录白名单
|
||||||
|
# (Webhook 进程用户与仓库所有者不一致时会 fatal 报错,加这一行即可)
|
||||||
|
git config --global --add safe.directory "$SOURCE_DIR" 2>/dev/null || true
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
log_message "开始部署..."
|
||||||
|
|
||||||
|
# 进入源码目录
|
||||||
|
cd "$SOURCE_DIR" || {
|
||||||
|
log_message "错误: 无法进入源码目录 $SOURCE_DIR"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 拉取最新代码
|
||||||
|
log_message "拉取最新代码..."
|
||||||
|
git -c safe.directory="$SOURCE_DIR" pull origin main
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
log_message "代码拉取成功"
|
||||||
|
else
|
||||||
|
log_message "错误: 代码拉取失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 安装依赖(如果需要)
|
||||||
|
# log_message("安装依赖...")
|
||||||
|
# npm install
|
||||||
|
# if [ $? -eq 0 ]; then
|
||||||
|
# log_message("依赖安装成功")
|
||||||
|
# else
|
||||||
|
# log_message("错误: 依赖安装失败")
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# 构建项目(如果需要)
|
||||||
|
# log_message("构建项目...")
|
||||||
|
# npm run build
|
||||||
|
# if [ $? -eq 0 ]; then
|
||||||
|
# log_message("项目构建成功")
|
||||||
|
# else
|
||||||
|
# log_message("错误: 项目构建失败")
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# 复制到运行目录(如果需要)
|
||||||
|
# log_message("复制到运行目录...")
|
||||||
|
# cp -r dist/* "$PUBLIC_DIR"/
|
||||||
|
# if [ $? -eq 0 ]; then
|
||||||
|
# log_message("文件复制成功")
|
||||||
|
# else
|
||||||
|
# log_message("错误: 文件复制失败")
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# 重启服务(如果需要)
|
||||||
|
# log_message("重启服务...")
|
||||||
|
# systemctl restart nginx
|
||||||
|
# if [ $? -eq 0 ]; then
|
||||||
|
# log_message("服务重启成功")
|
||||||
|
# else
|
||||||
|
# log_message("错误: 服务重启失败")
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
|
||||||
|
log_message "部署完成!"
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user