徐勤民
|
b42c2c686b
|
fix: deploy.sh 和 update.sh 补充 SDK_BUGCOLLECT_API_URL 配置
deploy.sh:xuqm.env 模板增加 SDK_BUGCOLLECT_API_URL=${CONSOLE_BASE}/api,
避免新建部署时缺失该配置导致 BugCollect 上报路径拼接错误(double /bugcollect)。
update.sh:Step 2 SDK URL 修复逻辑增加对 SDK_BUGCOLLECT_API_URL 的检测:
- 值为空:追加正确地址
- 含 xuqinmin.com 残留 / 裸 IP:修正为当前 CONSOLE_DOMAIN/api
- 含错误的 /bugcollect 后缀:去除后缀(SDK 自己拼接完整路径)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 22:03:10 +08:00 |
|
徐勤民
|
d353ecdb39
|
fix(update): 在重启 bugcollect-service 前执行 schema 预检和自动修复
避免因 Flyway 迁移 no-op 类问题导致服务启动失败、只能登录服务器手工操作的情况。
新增启动前 schema 预检步骤,使用条件 SQL 检查并补全已知缺失列(build_id),
后续新增迁移问题时可在同一位置追加检查项。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 18:54:18 +08:00 |
|
徐勤民
|
2ad8e6cc13
|
fix(update): bugcollect 建库用户名默认 xuqm
secrets.env 中无 MYSQL_USERNAME / MYSQL_USER key,
与 docker-compose.yml 中 SPRING_DATASOURCE_USERNAME 默认值 xuqm 对齐,
避免 _mysql_user 为空导致 GRANT 不执行。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 17:17:44 +08:00 |
|
徐勤民
|
dcf1baa2c2
|
fix(update): bugcollect 建库失败时打印详细错误信息
原来 2>/dev/null 把 mysql 错误吞掉导致无法排查;
改为捕获 stderr 并在失败时通过 warn 输出,同时打印
container/db/user 便于逐步排查凭据读取问题。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 17:12:51 +08:00 |
|
徐勤民
|
38eaa8fc83
|
fix(update): bugcollect-service 升级时自动创建 xuqm_bugcollect 数据库并授权
旧私有化部署从未运行过 bugcollect-service,upgrade.sh 将服务拉起后
Flyway 因 xuqm_bugcollect 数据库不存在(Access denied 1044)立即崩溃。
在启动 bugcollect-service 前检测运行中的 MySQL 容器,读取 secrets.env
中的 root 密码,自动执行 CREATE DATABASE IF NOT EXISTS + GRANT,
避免首次引入该服务时需要手动建库。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 17:06:57 +08:00 |
|
徐勤民
|
b1faced2f5
|
fix(update): 改用 compose 文件判断是否启动 bugcollect-service
前两次修复均依赖历史容器(docker ps -a),在旧部署从未运行过
bugcollect 的情况下无法检测。
改为检查 docker-compose.yml 是否定义了 bugcollect-service:
- profile 激活:有定义即导出 COMPOSE_PROFILES=bugcollect
- 服务重启:有定义即直接 up,不依赖容器历史状态
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 16:54:16 +08:00 |
|
徐勤民
|
b0dad0b90e
|
fix(update): 修复 bugcollect-service 已停止时升级仍跳过的问题
上次修复用 docker ps(仅运行中)检测 bugcollect,导致容器已停止时
profile 未激活、重启循环也跳过,升级后 502 依旧。
修复:
- profile 检测改用 docker ps -a(含已停止容器)
- bugcollect-service / symbolicator 从主循环拆出,独立用 docker ps -a
检测历史容器,存在即以 COMPOSE_PROFILES=bugcollect 重启,不依赖
当前运行状态
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 16:46:53 +08:00 |
|
徐勤民
|
a1625ade98
|
fix(update): 修复升级时 bugcollect-service 被 --remove-orphans 停掉的问题
问题根因:
1. bugcollect-service 使用 profiles: ["bugcollect"],升级脚本未激活该
profile,docker compose --remove-orphans 将其当孤儿容器停掉
2. Step 6 重启列表未包含 bugcollect-service / symbolicator
修复:
- 启动前检测 bugcollect 容器是否在运行,自动导出 COMPOSE_PROFILES=bugcollect
- Step 6 服务重启列表追加 bugcollect-service、symbolicator
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 16:38:37 +08:00 |
|
|
|
28fdd0ed78
|
fix: update.sh nginx补丁修正Python中文字面量
|
2026-06-12 22:54:53 +08:00 |
|
|
|
65858594e7
|
fix: update.sh 迁移A修正heredoc写法
|
2026-06-12 22:48:29 +08:00 |
|
|
|
7abf1e1f26
|
fix: update.sh 迁移A-nginx拦截注册+兼容现有部署端口+非交互拉镜像
|
2026-06-12 22:43:24 +08:00 |
|
|
|
f04d1cea8c
|
fix: update.sh 兼容现有部署 — 修复硬编码11224/REGISTRY_HOST/非交互拉取镜像
|
2026-06-12 19:40:25 +08:00 |
|
徐勤民
|
de95af8e9f
|
fix(deploy): 解决一键更新后nginx服务停止问题
- 添加检查nginx运行状态逻辑
- 在nginx未运行时自动启动服务
- 防止因--remove-orphans时序问题导致的nginx停止
- 确保部署完成后nginx正常运行
|
2026-05-23 03:52:07 +08:00 |
|
徐勤民
|
3242e7d088
|
fix(deploy): 补齐 LICENSE_PUBLIC_BASE_URL,修复私有化 license 文件域名错误
deploy.sh 和 update.sh 均写入 LICENSE_PUBLIC_BASE_URL,确保
生成的 license.xuqm 中 serverUrl 指向私有服务器而非公有云默认值。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 15:25:25 +08:00 |
|
徐勤民
|
c7e9cb8fa9
|
feat: docker.sock 挂载 + PRIVATE_DEPLOY_ROOT 支持一键更新
- docker-compose.yml:tenant-service 挂载 /var/run/docker.sock 和部署根目录
- deploy.sh:写入 PRIVATE_DEPLOY_ROOT 到 .env
- update.sh:旧版升级时自动补齐 PRIVATE_DEPLOY_ROOT
- .env.example:新增 PRIVATE_DEPLOY_ROOT 注释说明
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 14:47:18 +08:00 |
|
徐勤民
|
33ae1b9599
|
fix(update): 升级时自动补齐旧 secrets.env 缺失的 Spring 密码变量
旧部署的 secrets.env 只有 MYSQL_PASSWORD / REDIS_PASSWORD,
新版 docker-compose.yml 已移除 environment 块中的密码覆盖,
改由 env_file 注入 SPRING_DATASOURCE_PASSWORD 等 Spring 直读变量。
update.sh 升级时自动检测并追加缺失条目,保证幂等且兼容旧部署。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 11:30:23 +08:00 |
|
徐勤民
|
dd1daaaae9
|
fix(update): 重启所有运行中的业务服务而非仅 tenant-service
原脚本只重启 tenant-service 和 nginx,导致 im-service/file-service 等
服务的镜像更新不生效。改为遍历所有可能的业务服务,按实际运行状态
决定是否重启,跳过未激活的可选服务。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 11:08:25 +08:00 |
|
徐勤民
|
34bfa71bd5
|
fix(update): 修复 WebSocket 101 误判 + 清理孤儿容器
- WebSocket 探测:curl 在 101 握手后无法继续 WS 协议会追加 000,
返回值为 "101000",改为 grep '^101' 判断首三位而非精确匹配
- up -d 加 --remove-orphans:自动清理已从 compose 文件移除的容器
(如之前删除的 ops-web),消除每次升级的 WARN 噪音
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 09:27:22 +08:00 |
|
徐勤民
|
777eb23b60
|
fix(update): restart→up -d 确保新镜像生效;新增 WebSocket 连通性自检
- 将 docker compose restart 改为 up -d --no-deps:
restart 仅重启容器进程,不切换镜像;up -d 检测镜像变更后重建容器,
是拉取新镜像后使其生效的正确方式
- 新增 Step 9 WebSocket 自检:
· 探测容器 nginx → im-service 本地握手(HTTP 101 = 正常)
· 同时探测外部域名 WebSocket 握手,失败时输出上层代理配置指引
(覆盖云 SLB/CDN 开启 WebSocket、nginx 补充四行头的两种场景)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-20 19:06:07 +08:00 |
|
徐勤民
|
4ff09ae768
|
feat(update): 完整重写热更新脚本,覆盖所有已知部署问题
Step 1 - CONSOLE_DOMAIN:检测裸 IP,交互提示输入公网域名
Step 2 - SDK URL:修复 xuqinmin.com 残留 / 内网 IP / 空值三种情形
Step 3 - SDK JSON:同步 xuqm-private-sdk.json
Step 4 - 宿主机 nginx WebSocket 头:
· nginx -T 获取完整配置
· Python3 精确定位代理到容器 nginx 的 location 块
· 缺少 proxy_http_version 1.1 / Upgrade / Connection 时自动注入
· 修改前备份 .xuqm.bak,nginx -t 失败自动回滚,成功后 nginx -s reload
· 未发现代理配置时输出标准模板供参考
Step 5 - 拉取镜像(可选)
Step 6 - 重启 tenant-service + nginx
Step 7 - 等待 tenant-service 健康(最长 120s)
Step 8 - 自动处理积压 PENDING 服务开通申请
Step 9 - 全量验证
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-20 18:58:28 +08:00 |
|
徐勤民
|
7d8f916ea5
|
fix(update): 检测并修复 CONSOLE_DOMAIN 及 SDK URL 为内网 IP 的情况
- CONSOLE_DOMAIN 为私有 IP 段时提示用户输入正确的公网域名
- SDK_IM_WS_URL / SDK_IM_API_URL / SDK_FILE_SERVICE_URL 包含
裸 IP(10.x / 172.x / 192.168.x / 127.x)时同样触发修复
- 提取 _url_needs_fix 辅助函数消除重复判断逻辑
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-20 18:49:50 +08:00 |
|
徐勤民
|
28fd8c0793
|
feat(update): upgrade 后自动调用 approve-pending-requests 修复积压申请
update.sh 在 tenant-service 健康后调用
POST /api/private/admin/approve-pending-requests
自动开通所有 PENDING 状态的服务申请,无需用户手动操作。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-20 18:46:00 +08:00 |
|
徐勤民
|
a327a262dd
|
feat(deploy): 移除 ops-web、修复 SDK URL 注入、新增一键升级
核心变更:
- 完全移除 ops-web 容器(私有化部署无需运营后台)
- nginx sub_filter 替换前端 JS bundle 中的公网 SDK URL
- deploy.sh 写入正确的 SDK_IM_WS_URL / SDK_IM_API_URL / SDK_FILE_SERVICE_URL
- 新增 scripts/update.sh:热更新脚本,修复配置 + 可选拉镜像 + 重启 + 验证
- 新增 upgrade.sh:一键升级入口,curl 下载后直接执行,流程同 install.sh
- install.sh 检测已有部署(.env 存在),自动路由到 update.sh 而非重跑向导
- 关键配置文件(.env / secrets.env / xuqm.env)在 tarball 解压前备份后恢复
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-20 18:25:12 +08:00 |
|