facc04aa65
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交 (5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。 一、docs 结构整改(整改 #14) 根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入, 随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录 树并存于 docs/,共 791 文件、双分类体系冲突。 修复动作: - b2 同名异主题文件改名迁移保全 9 个 - C 类 39 个孤立文件按主题正确归类 - A/B1 类 222 个重复文件删除(新结构已有内容副本) - 9 个旧独有空目录删除 - 270 处内部引用按 verified 映射改写 - 整改记录 #14 登记于 04-运维文档/部署运维 结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。 残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。 二、compose 双目录对齐(消除踩坑 A) - docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist 改为 src/frontend-*/dist(h5 / agent / admin / terminal) - docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/ - 效果:本地 docker compose up 不再把根目录 stale dist 挂回, 与线上一致,分叉隐患消除(已 docker compose config 校验通过) 防复发铁律: - 重构须提交;仓库修复须 git stash -u 或先 commit - 新结构须 git add 并提交,避免再次 untracked 复活 - H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
137 lines
4.4 KiB
Markdown
137 lines
4.4 KiB
Markdown
# 蓝绿部署指南
|
||
|
||
## 概述
|
||
|
||
蓝绿部署是一种零停机部署策略,通过维护两套完全相同的运行环境(Blue 和 Green),实现快速切换和回滚。
|
||
|
||
## 架构
|
||
|
||
```
|
||
┌─────────────────┐
|
||
│ Nginx │
|
||
│ (流量入口) │
|
||
└────────┬────────┘
|
||
│
|
||
┌──────────────┴──────────────┐
|
||
│ │
|
||
▼ ▼
|
||
┌────────────────┐ ┌────────────────┐
|
||
│ Blue 环境 │ │ Green 环境 │
|
||
│ (当前活动) │ │ (待验证) │
|
||
│ backend:8000 │ │ backend_green: │
|
||
│ │ │ 5002 │
|
||
└────────────────┘ └────────────────┘
|
||
│ │
|
||
└──────────────┬──────────────┘
|
||
│
|
||
┌──────────────┴──────────────┐
|
||
│ │
|
||
▼ ▼
|
||
┌────────────────┐ ┌────────────────┐
|
||
│ PostgreSQL │ ←──→ │ Redis │
|
||
│ (共享) │ │ (共享) │
|
||
└────────────────┘ └────────────────┘
|
||
```
|
||
|
||
## 文件说明
|
||
|
||
| 文件 | 位置 | 说明 |
|
||
|------|------|------|
|
||
| docker-compose-green.yml | /opt/wecom-it-desk/ | Green 环境配置 |
|
||
| switch-blue-green.sh | /opt/wecom-it-desk/ | 切换脚本 |
|
||
| nginx.conf | /opt/wecom-it-desk/nginx/ | Nginx 配置(包含 upstream) |
|
||
|
||
## 部署步骤
|
||
|
||
### 1. 部署 Green 环境
|
||
|
||
```bash
|
||
cd /opt/wecom-it-desk
|
||
|
||
# 构建并启动 Green 环境
|
||
docker-compose -f docker-compose-green.yml up -d
|
||
|
||
# 验证 Green 环境健康
|
||
curl http://localhost:5002/health
|
||
```
|
||
|
||
### 2. 测试 Green 环境
|
||
|
||
通过端口 5080 访问 Green 环境进行测试:
|
||
- H5: http://服务器IP:5080/itdesk/
|
||
- 坐席: http://服务器IP:5080/itagent/
|
||
- 管理后台: http://服务器IP:5080/itadmin/
|
||
|
||
### 3. 切换流量到 Green
|
||
|
||
```bash
|
||
# 方法一:使用切换脚本
|
||
./switch-blue-green.sh to-green
|
||
|
||
# 方法二:手动修改 Nginx 配置
|
||
sed -i 's/wecom_it_backend:8000/wecom_it_backend_green:8000/' /opt/wecom-it-desk/nginx/nginx.conf
|
||
docker restart wecom_it_nginx
|
||
```
|
||
|
||
### 4. 验证切换
|
||
|
||
```bash
|
||
# 检查 Nginx upstream 配置
|
||
grep -A1 'upstream backend_api' /opt/wecom-it-desk/nginx/nginx.conf
|
||
|
||
# 测试 API
|
||
curl https://itsupport.servyou.com.cn/api/v1/system/health
|
||
```
|
||
|
||
### 5. 回滚(如有问题)
|
||
|
||
```bash
|
||
# 方法一:使用切换脚本
|
||
./switch-blue-green.sh to-blue
|
||
|
||
# 方法二:手动修改
|
||
sed -i 's/wecom_it_backend_green:8000/wecom_it_backend:8000/' /opt/wecom-it-desk/nginx/nginx.conf
|
||
docker restart wecom_it_nginx
|
||
```
|
||
|
||
## 端口说明
|
||
|
||
| 端口 | 服务 | 说明 |
|
||
|------|------|------|
|
||
| 80/443 | Nginx (Blue) | 生产入口 |
|
||
| 5002 | Backend (Green) | Green 后端 API |
|
||
| 5080 | Nginx (Green) | Green 测试入口 |
|
||
| 5443 | Nginx (Green) | Green HTTPS |
|
||
|
||
## 注意事项
|
||
|
||
1. **数据库共享**:Blue 和 Green 共用同一个 PostgreSQL 和 Redis
|
||
2. **文件上传**:上传的文件保存在挂载目录,不受切换影响
|
||
3. **会话影响**:切换后用户可能需要重新登录
|
||
4. **WebSocket**:切换后现有 WebSocket 连接会断开
|
||
|
||
## 快速命令汇总
|
||
|
||
```bash
|
||
# 查看状态
|
||
docker ps
|
||
|
||
# 查看 Green 日志
|
||
docker logs wecom_it_backend_green
|
||
|
||
# 切换到 Green
|
||
sed -i 's/wecom_it_backend:8000/wecom_it_backend_green:8000/' /opt/wecom-it-desk/nginx/nginx.conf
|
||
docker restart wecom_it_nginx
|
||
|
||
# 切换回 Blue
|
||
sed -i 's/wecom_it_backend_green:8000/wecom_it_backend:8000/' /opt/wecom-it-desk/nginx/nginx.conf
|
||
docker restart wecom_it_nginx
|
||
|
||
# 停止 Green 环境
|
||
docker-compose -f docker-compose-green.yml down
|
||
```
|
||
|
||
## 更新日志
|
||
|
||
- 2026-07-05: 初始版本
|