上传源代码版本
This commit is contained in:
238
deployment/QUICK_START.md
Normal file
238
deployment/QUICK_START.md
Normal 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`
|
||||
|
||||
祝部署顺利!🚀
|
||||
Reference in New Issue
Block a user