476 lines
8.9 KiB
Markdown
476 lines
8.9 KiB
Markdown
|
|
# TSP智能助手部署升级指南
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
本文档详细介绍了TSP智能助手项目的部署、升级和版本管理策略,包括多种部署方式和完整的回滚机制。
|
|||
|
|
|
|||
|
|
## 目录
|
|||
|
|
|
|||
|
|
1. [版本管理策略](#版本管理策略)
|
|||
|
|
2. [部署方式](#部署方式)
|
|||
|
|
3. [升级流程](#升级流程)
|
|||
|
|
4. [回滚机制](#回滚机制)
|
|||
|
|
5. [最佳实践](#最佳实践)
|
|||
|
|
6. [故障排除](#故障排除)
|
|||
|
|
|
|||
|
|
## 版本管理策略
|
|||
|
|
|
|||
|
|
### 版本号规范
|
|||
|
|
|
|||
|
|
采用语义化版本控制(Semantic Versioning):
|
|||
|
|
- **主版本号(Major)**:不兼容的API修改
|
|||
|
|
- **次版本号(Minor)**:向下兼容的功能性新增
|
|||
|
|
- **修订号(Patch)**:向下兼容的问题修正
|
|||
|
|
|
|||
|
|
示例:`1.2.3` → `1.2.4`(补丁版本)
|
|||
|
|
|
|||
|
|
### 版本管理工具
|
|||
|
|
|
|||
|
|
项目提供了 `version.py` 脚本进行版本管理:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看当前版本
|
|||
|
|
python version.py version
|
|||
|
|
|
|||
|
|
# 增加版本号
|
|||
|
|
python version.py increment --type patch # 1.0.0 → 1.0.1
|
|||
|
|
python version.py increment --type minor # 1.0.1 → 1.1.0
|
|||
|
|
python version.py increment --type major # 1.1.0 → 2.0.0
|
|||
|
|
|
|||
|
|
# 设置部署状态
|
|||
|
|
python version.py status --status production
|
|||
|
|
|
|||
|
|
# 添加变更日志
|
|||
|
|
python version.py changelog --message "修复用户登录问题"
|
|||
|
|
|
|||
|
|
# 创建Git标签
|
|||
|
|
python version.py tag --message "Release version 1.0.1"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 版本信息存储
|
|||
|
|
|
|||
|
|
版本信息存储在 `version.json` 文件中:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"version": "1.0.0",
|
|||
|
|
"build_number": 1,
|
|||
|
|
"release_date": "2024-01-01T00:00:00",
|
|||
|
|
"git_commit": "a1b2c3d4",
|
|||
|
|
"deployment_status": "production",
|
|||
|
|
"changelog": [
|
|||
|
|
{
|
|||
|
|
"version": "1.0.0",
|
|||
|
|
"date": "2024-01-01T00:00:00",
|
|||
|
|
"description": "初始版本发布"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"dependencies": {
|
|||
|
|
"flask": "2.0.0",
|
|||
|
|
"sqlalchemy": "2.0.0"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 部署方式
|
|||
|
|
|
|||
|
|
### 1. 传统部署(推荐)
|
|||
|
|
|
|||
|
|
使用 `deploy.py` 脚本进行自动化部署:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 部署到生产环境
|
|||
|
|
python deploy.py deploy --source . --force
|
|||
|
|
|
|||
|
|
# 部署到测试环境
|
|||
|
|
python deploy.py deploy --source . --environment staging
|
|||
|
|
|
|||
|
|
# 创建备份
|
|||
|
|
python deploy.py backup
|
|||
|
|
|
|||
|
|
# 列出所有备份
|
|||
|
|
python deploy.py list-backups
|
|||
|
|
|
|||
|
|
# 清理旧备份(保留5个)
|
|||
|
|
python deploy.py cleanup --keep 5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Shell脚本部署
|
|||
|
|
|
|||
|
|
使用 `scripts/deploy.sh` 脚本:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 部署到生产环境
|
|||
|
|
./scripts/deploy.sh deploy production yourdomain.com 5000
|
|||
|
|
|
|||
|
|
# 部署到测试环境
|
|||
|
|
./scripts/deploy.sh deploy staging staging.yourdomain.com 5001
|
|||
|
|
|
|||
|
|
# 部署到开发环境
|
|||
|
|
./scripts/deploy.sh deploy development localhost 5000
|
|||
|
|
|
|||
|
|
# 回滚
|
|||
|
|
./scripts/deploy.sh rollback backup_20240101_120000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Docker部署
|
|||
|
|
|
|||
|
|
#### 单容器部署
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 构建镜像
|
|||
|
|
docker build -t tsp-assistant:latest .
|
|||
|
|
|
|||
|
|
# 运行容器
|
|||
|
|
docker run -d \
|
|||
|
|
--name tsp-assistant \
|
|||
|
|
-p 5000:5000 \
|
|||
|
|
-v $(pwd)/data:/app/data \
|
|||
|
|
-v $(pwd)/logs:/app/logs \
|
|||
|
|
tsp-assistant:latest
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Docker Compose部署
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 启动所有服务
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 查看服务状态
|
|||
|
|
docker-compose ps
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker-compose logs -f tsp-assistant
|
|||
|
|
|
|||
|
|
# 停止服务
|
|||
|
|
docker-compose down
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 云平台部署
|
|||
|
|
|
|||
|
|
#### 阿里云ECS部署
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 上传代码到服务器
|
|||
|
|
scp -r . user@your-server:/opt/tsp_assistant
|
|||
|
|
|
|||
|
|
# 2. 在服务器上执行部署
|
|||
|
|
ssh user@your-server
|
|||
|
|
cd /opt/tsp_assistant
|
|||
|
|
python deploy.py deploy --force
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Kubernetes部署
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# k8s-deployment.yaml
|
|||
|
|
apiVersion: apps/v1
|
|||
|
|
kind: Deployment
|
|||
|
|
metadata:
|
|||
|
|
name: tsp-assistant
|
|||
|
|
spec:
|
|||
|
|
replicas: 3
|
|||
|
|
selector:
|
|||
|
|
matchLabels:
|
|||
|
|
app: tsp-assistant
|
|||
|
|
template:
|
|||
|
|
metadata:
|
|||
|
|
labels:
|
|||
|
|
app: tsp-assistant
|
|||
|
|
spec:
|
|||
|
|
containers:
|
|||
|
|
- name: tsp-assistant
|
|||
|
|
image: tsp-assistant:latest
|
|||
|
|
ports:
|
|||
|
|
- containerPort: 5000
|
|||
|
|
env:
|
|||
|
|
- name: DATABASE_URL
|
|||
|
|
value: "mysql+pymysql://user:pass@mysql-service/tsp_assistant"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 升级流程
|
|||
|
|
|
|||
|
|
### 1. 准备升级
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 确保代码已提交
|
|||
|
|
git add .
|
|||
|
|
git commit -m "准备升级到版本 1.0.1"
|
|||
|
|
|
|||
|
|
# 2. 创建发布分支
|
|||
|
|
git checkout -b release-1.0.1
|
|||
|
|
|
|||
|
|
# 3. 更新版本号
|
|||
|
|
python version.py increment --type patch
|
|||
|
|
|
|||
|
|
# 4. 添加变更日志
|
|||
|
|
python version.py changelog --message "修复用户登录问题,优化性能"
|
|||
|
|
|
|||
|
|
# 5. 创建Git标签
|
|||
|
|
python version.py tag --message "Release version 1.0.1"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 测试环境验证
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 部署到测试环境
|
|||
|
|
python deploy.py deploy --environment staging
|
|||
|
|
|
|||
|
|
# 2. 运行测试
|
|||
|
|
python -m pytest tests/
|
|||
|
|
|
|||
|
|
# 3. 手动测试功能
|
|||
|
|
curl http://staging.yourdomain.com/api/health
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 生产环境升级
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 创建备份
|
|||
|
|
python deploy.py backup
|
|||
|
|
|
|||
|
|
# 2. 部署新版本
|
|||
|
|
python deploy.py deploy --force
|
|||
|
|
|
|||
|
|
# 3. 验证部署
|
|||
|
|
curl http://yourdomain.com/api/health
|
|||
|
|
|
|||
|
|
# 4. 监控系统状态
|
|||
|
|
tail -f logs/tsp_assistant.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 升级后验证
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 健康检查
|
|||
|
|
curl http://yourdomain.com/api/health
|
|||
|
|
|
|||
|
|
# 2. 功能测试
|
|||
|
|
# - 用户登录
|
|||
|
|
# - 工单创建
|
|||
|
|
# - 知识库搜索
|
|||
|
|
# - 数据分析
|
|||
|
|
|
|||
|
|
# 3. 性能监控
|
|||
|
|
# - 响应时间
|
|||
|
|
# - 内存使用
|
|||
|
|
# - CPU使用率
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 回滚机制
|
|||
|
|
|
|||
|
|
### 1. 自动回滚
|
|||
|
|
|
|||
|
|
如果部署后健康检查失败,系统会自动回滚:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 部署脚本会自动检测健康状态
|
|||
|
|
python deploy.py deploy --force
|
|||
|
|
# 如果健康检查失败,会自动回滚到上一个备份
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 手动回滚
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 列出可用备份
|
|||
|
|
python deploy.py list-backups
|
|||
|
|
|
|||
|
|
# 2. 回滚到指定备份
|
|||
|
|
python deploy.py rollback --backup backup_20240101_120000
|
|||
|
|
|
|||
|
|
# 3. 验证回滚结果
|
|||
|
|
curl http://yourdomain.com/api/health
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 数据库回滚
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 停止服务
|
|||
|
|
sudo systemctl stop tsp_assistant
|
|||
|
|
|
|||
|
|
# 2. 恢复数据库
|
|||
|
|
cp backups/backup_20240101_120000/database/tsp_assistant.db ./
|
|||
|
|
|
|||
|
|
# 3. 重启服务
|
|||
|
|
sudo systemctl start tsp_assistant
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Docker回滚
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 停止当前容器
|
|||
|
|
docker stop tsp-assistant
|
|||
|
|
|
|||
|
|
# 2. 启动旧版本容器
|
|||
|
|
docker run -d \
|
|||
|
|
--name tsp-assistant-old \
|
|||
|
|
-p 5000:5000 \
|
|||
|
|
tsp-assistant:v1.0.0
|
|||
|
|
|
|||
|
|
# 3. 验证回滚
|
|||
|
|
curl http://localhost:5000/api/health
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 最佳实践
|
|||
|
|
|
|||
|
|
### 1. 部署前检查
|
|||
|
|
|
|||
|
|
- [ ] 代码已提交到版本控制
|
|||
|
|
- [ ] 所有测试通过
|
|||
|
|
- [ ] 数据库迁移脚本准备就绪
|
|||
|
|
- [ ] 配置文件已更新
|
|||
|
|
- [ ] 依赖包版本已锁定
|
|||
|
|
|
|||
|
|
### 2. 部署策略
|
|||
|
|
|
|||
|
|
- **蓝绿部署**:维护两套生产环境,切换流量
|
|||
|
|
- **滚动更新**:逐步替换实例,保证服务可用性
|
|||
|
|
- **金丝雀发布**:先发布给部分用户,验证无问题后全量发布
|
|||
|
|
|
|||
|
|
### 3. 监控和告警
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 设置监控脚本
|
|||
|
|
cat > monitor.sh << 'EOF'
|
|||
|
|
#!/bin/bash
|
|||
|
|
while true; do
|
|||
|
|
if ! curl -f http://localhost:5000/api/health > /dev/null 2>&1; then
|
|||
|
|
echo "服务异常,发送告警"
|
|||
|
|
# 发送告警邮件或短信
|
|||
|
|
fi
|
|||
|
|
sleep 30
|
|||
|
|
done
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
chmod +x monitor.sh
|
|||
|
|
nohup ./monitor.sh &
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 备份策略
|
|||
|
|
|
|||
|
|
- **自动备份**:每次部署前自动创建备份
|
|||
|
|
- **定期备份**:每日创建完整备份
|
|||
|
|
- **异地备份**:重要数据备份到不同地区
|
|||
|
|
- **备份验证**:定期验证备份完整性
|
|||
|
|
|
|||
|
|
### 5. 安全考虑
|
|||
|
|
|
|||
|
|
- 使用HTTPS加密传输
|
|||
|
|
- 定期更新依赖包
|
|||
|
|
- 限制服务器访问权限
|
|||
|
|
- 监控异常访问行为
|
|||
|
|
|
|||
|
|
## 故障排除
|
|||
|
|
|
|||
|
|
### 1. 常见问题
|
|||
|
|
|
|||
|
|
#### 部署失败
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查日志
|
|||
|
|
tail -f logs/deploy.log
|
|||
|
|
|
|||
|
|
# 检查权限
|
|||
|
|
ls -la /opt/tsp_assistant
|
|||
|
|
|
|||
|
|
# 检查服务状态
|
|||
|
|
sudo systemctl status tsp_assistant
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 服务无法启动
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查端口占用
|
|||
|
|
netstat -tlnp | grep 5000
|
|||
|
|
|
|||
|
|
# 检查Python环境
|
|||
|
|
which python3
|
|||
|
|
python3 --version
|
|||
|
|
|
|||
|
|
# 检查依赖
|
|||
|
|
pip list
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 数据库连接失败
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查数据库服务
|
|||
|
|
sudo systemctl status mysql
|
|||
|
|
|
|||
|
|
# 测试连接
|
|||
|
|
mysql -u root -p -e "SHOW DATABASES;"
|
|||
|
|
|
|||
|
|
# 检查配置文件
|
|||
|
|
cat src/config/config.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 性能问题
|
|||
|
|
|
|||
|
|
#### 响应慢
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查系统资源
|
|||
|
|
top
|
|||
|
|
free -h
|
|||
|
|
df -h
|
|||
|
|
|
|||
|
|
# 检查应用日志
|
|||
|
|
tail -f logs/tsp_assistant.log
|
|||
|
|
|
|||
|
|
# 检查数据库性能
|
|||
|
|
mysql -u root -p -e "SHOW PROCESSLIST;"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 内存泄漏
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 监控内存使用
|
|||
|
|
ps aux | grep python
|
|||
|
|
|
|||
|
|
# 检查日志文件大小
|
|||
|
|
ls -lh logs/
|
|||
|
|
|
|||
|
|
# 重启服务释放内存
|
|||
|
|
sudo systemctl restart tsp_assistant
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 紧急处理
|
|||
|
|
|
|||
|
|
#### 服务完全不可用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 立即回滚
|
|||
|
|
python deploy.py rollback
|
|||
|
|
|
|||
|
|
# 2. 检查系统状态
|
|||
|
|
sudo systemctl status tsp_assistant
|
|||
|
|
sudo journalctl -u tsp_assistant -f
|
|||
|
|
|
|||
|
|
# 3. 联系技术支持
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 数据丢失
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 停止服务
|
|||
|
|
sudo systemctl stop tsp_assistant
|
|||
|
|
|
|||
|
|
# 2. 恢复最新备份
|
|||
|
|
python deploy.py rollback --backup latest
|
|||
|
|
|
|||
|
|
# 3. 验证数据完整性
|
|||
|
|
python -c "from src.core.database import db; print('数据库连接正常')"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 总结
|
|||
|
|
|
|||
|
|
TSP智能助手项目提供了完整的部署升级解决方案:
|
|||
|
|
|
|||
|
|
1. **版本管理**:语义化版本控制,自动版本号管理
|
|||
|
|
2. **多种部署方式**:传统部署、Docker部署、云平台部署
|
|||
|
|
3. **自动化流程**:一键部署、自动备份、健康检查
|
|||
|
|
4. **完整回滚**:自动回滚、手动回滚、数据库回滚
|
|||
|
|
5. **监控告警**:实时监控、异常告警、性能分析
|
|||
|
|
|
|||
|
|
通过遵循本指南,您可以安全、高效地管理TSP智能助手的部署和升级,确保系统的稳定性和可靠性。
|