上传源代码版本

This commit is contained in:
Im-Jenisson
2026-06-01 16:30:29 +08:00
commit b2a9b7d3c2
462 changed files with 104365 additions and 0 deletions

238
deployment/QUICK_START.md Normal file
View File

@@ -0,0 +1,238 @@
# 快速开始指南
## 30秒快速了解
你现在有了一个**零停机部署系统**
- 蓝实例运行在 **端口 5000**
- 绿实例运行在 **端口 5001**
- Nginx 总是指向活跃实例
- 部署时自动切换到另一个端口,客户端**无感知**
## 第一步:初始化(只需一次)
### 1. 创建目录
```powershell
mkdir D:\EPproject\LabelReplaceServer\deployment\{blue,green,backups,logs,scripts,config}
```
### 2. 复制配置文件
将这些文件复制到相应位置:
- `deployment-config.json``deployment/config/`
- `build-and-publish.ps1``deployment/scripts/`
- `health-check.ps1``deployment/scripts/`
- `deploy-blue-green.ps1``deployment/scripts/`
- `stop-instance.ps1``deployment/scripts/`
- `rollback.ps1``deployment/scripts/`
### 3. 第一次启动蓝实例
```powershell
# 编译到blue目录
D:\EPproject\LabelReplaceServer\deployment\scripts\build-and-publish.ps1 `
-OutputDirectory "D:\EPproject\LabelReplaceServer\deployment\blue" `
-Version "1.0.0"
# 启动蓝实例在Command Prompt或PowerShell中
cd D:\EPproject\LabelReplaceServer\deployment\blue
set DEPLOYMENT_INSTANCE=blue
set SHUTDOWN_TIMEOUT=30
CONTROLLER.exe
```
### 4. 验证运行
```powershell
# 打开另一个PowerShell
curl http://localhost:5000/api/health
# 应该看到:
# {"status":"healthy","instance":"blue","port":5000,...}
```
### 5. 配置Nginx
编辑你的Nginx配置文件将以下代码写入
```nginx
upstream backend {
server 127.0.0.1:5000 max_fails=2 fail_timeout=10s;
server 127.0.0.1:5001 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
然后重启Nginx
```powershell
nginx -s reload
```
### 6. 初始化状态
```powershell
# 创建初始状态文件
$state = @{
activeInstance = "blue"
lastUpdate = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
version = "1.0.0"
} | ConvertTo-Json |
Set-Content -Path "D:\EPproject\LabelReplaceServer\deployment\instance_state.json" -Force
```
**完成!初始化结束。**
---
## 第二步:日常部署(每次更新时)
### 一行命令部署新版本
```powershell
D:\EPproject\LabelReplaceServer\deployment\scripts\deploy-blue-green.ps1 -Version "1.1.0"
```
**部署脚本会自动**
1. ✓ 编译新版本
2. ✓ 部署到非活跃实例
3. ✓ 启动新实例
4. ✓ 验证健康状态
5. ✓ 切换流量
6. ✓ 关闭旧实例
**部署过程中**
- 你的客户端继续可以访问 ✓
- 无需手动停止应用 ✓
- 无需手动启动应用 ✓
---
## 问题排查
### 健康检查失败?
```powershell
# 查看新启动的实例是否在运行
Get-Process CONTROLLER
# 手动测试健康检查
curl http://localhost:5000/api/health
curl http://localhost:5001/api/health
# 查看详细日志
Get-Content "D:\EPproject\LabelReplaceServer\deployment\logs\deployment.log" -Tail 100
```
### 需要回滚?
```powershell
# 一条命令回滚到上一个版本
D:\EPproject\LabelReplaceServer\deployment\scripts\rollback.ps1
```
---
## 关键文件位置
| 文件/目录 | 说明 |
|---------|------|
| `deployment/blue/` | 蓝实例应用端口5000 |
| `deployment/green/` | 绿实例应用端口5001 |
| `deployment/logs/deployment.log` | 部署日志 |
| `deployment/instance_state.json` | 当前活跃实例信息 |
| `deployment/scripts/` | 所有部署脚本 |
---
## 监控命令
```powershell
# 查看当前活跃实例
Get-Content "D:\EPproject\LabelReplaceServer\deployment\instance_state.json" | ConvertFrom-Json
# 查看最近部署日志
Get-Content "D:\EPproject\LabelReplaceServer\deployment\logs\deployment.log" -Tail 50
# 测试两个实例
Write-Host "蓝实例 (5000):" -ForegroundColor Green
curl http://localhost:5000/api/version
Write-Host "绿实例 (5001):" -ForegroundColor Cyan
curl http://localhost:5001/api/version
# 查看进程
Get-Process CONTROLLER
```
---
## 工作流示例
### 场景从版本1.0.0升级到1.1.0
```powershell
# 当前状态:蓝实例(1.0.0) 活跃,绿实例待命
# 1. 执行部署
.\deploy-blue-green.ps1 -Version "1.1.0"
# 脚本自动执行:
# ✓ 编译新版本到绿实例
# ✓ 启动绿实例(1.1.0)
# ✓ 健康检查通过
# ✓ Nginx切换到绿实例
# ✓ 关闭蓝实例(1.0.0)
# 2. 验证部署成功
curl http://localhost:5001/api/version
# 返回version: "1.1.0"
# 3. 客户端自动使用新版本
# 无需任何操作!
```
### 场景:发现问题需要回滚
```powershell
# 当前状态:绿实例(1.1.0) 活跃,蓝实例待命
# 1. 执行回滚
.\rollback.ps1
# 脚本自动执行:
# ✓ 从备份恢复蓝实例(1.0.0)
# ✓ 启动蓝实例
# ✓ 健康检查通过
# ✓ Nginx切换到蓝实例
# ✓ 关闭绿实例(1.1.0)
# 2. 验证回滚成功
curl http://localhost:5000/api/version
# 返回version: "1.0.0"
# 完成!客户端已切换回旧版本
```
---
## 下一步
详细信息请查看:
- **完整指南**`deployment/DEPLOYMENT_GUIDE.md`
- **部署配置**`deployment/config/deployment-config.json`
- **应用配置**`src/CONTROLLER/appsettings.json`
有问题?检查日志文件:`deployment/logs/deployment.log`
祝部署顺利!🚀