Files
tsp-assistant/部署升级指南.md
2025-09-08 15:27:22 +08:00

8.9 KiB
Raw Blame History

TSP智能助手部署升级指南

概述

本文档详细介绍了TSP智能助手项目的部署、升级和版本管理策略包括多种部署方式和完整的回滚机制。

目录

  1. 版本管理策略
  2. 部署方式
  3. 升级流程
  4. 回滚机制
  5. 最佳实践
  6. 故障排除

版本管理策略

版本号规范

采用语义化版本控制Semantic Versioning

  • 主版本号Major不兼容的API修改
  • 次版本号Minor:向下兼容的功能性新增
  • 修订号Patch:向下兼容的问题修正

示例:1.2.31.2.4(补丁版本)

版本管理工具

项目提供了 version.py 脚本进行版本管理:

# 查看当前版本
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 文件中:

{
  "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 脚本进行自动化部署:

# 部署到生产环境
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 脚本:

# 部署到生产环境
./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部署

单容器部署

# 构建镜像
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部署

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f tsp-assistant

# 停止服务
docker-compose down

4. 云平台部署

阿里云ECS部署

# 1. 上传代码到服务器
scp -r . user@your-server:/opt/tsp_assistant

# 2. 在服务器上执行部署
ssh user@your-server
cd /opt/tsp_assistant
python deploy.py deploy --force

Kubernetes部署

# 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. 准备升级

# 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. 测试环境验证

# 1. 部署到测试环境
python deploy.py deploy --environment staging

# 2. 运行测试
python -m pytest tests/

# 3. 手动测试功能
curl http://staging.yourdomain.com/api/health

3. 生产环境升级

# 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. 升级后验证

# 1. 健康检查
curl http://yourdomain.com/api/health

# 2. 功能测试
# - 用户登录
# - 工单创建
# - 知识库搜索
# - 数据分析

# 3. 性能监控
# - 响应时间
# - 内存使用
# - CPU使用率

回滚机制

1. 自动回滚

如果部署后健康检查失败,系统会自动回滚:

# 部署脚本会自动检测健康状态
python deploy.py deploy --force
# 如果健康检查失败,会自动回滚到上一个备份

2. 手动回滚

# 1. 列出可用备份
python deploy.py list-backups

# 2. 回滚到指定备份
python deploy.py rollback --backup backup_20240101_120000

# 3. 验证回滚结果
curl http://yourdomain.com/api/health

3. 数据库回滚

# 1. 停止服务
sudo systemctl stop tsp_assistant

# 2. 恢复数据库
cp backups/backup_20240101_120000/database/tsp_assistant.db ./

# 3. 重启服务
sudo systemctl start tsp_assistant

4. Docker回滚

# 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. 监控和告警

# 设置监控脚本
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. 常见问题

部署失败

# 检查日志
tail -f logs/deploy.log

# 检查权限
ls -la /opt/tsp_assistant

# 检查服务状态
sudo systemctl status tsp_assistant

服务无法启动

# 检查端口占用
netstat -tlnp | grep 5000

# 检查Python环境
which python3
python3 --version

# 检查依赖
pip list

数据库连接失败

# 检查数据库服务
sudo systemctl status mysql

# 测试连接
mysql -u root -p -e "SHOW DATABASES;"

# 检查配置文件
cat src/config/config.py

2. 性能问题

响应慢

# 检查系统资源
top
free -h
df -h

# 检查应用日志
tail -f logs/tsp_assistant.log

# 检查数据库性能
mysql -u root -p -e "SHOW PROCESSLIST;"

内存泄漏

# 监控内存使用
ps aux | grep python

# 检查日志文件大小
ls -lh logs/

# 重启服务释放内存
sudo systemctl restart tsp_assistant

3. 紧急处理

服务完全不可用

# 1. 立即回滚
python deploy.py rollback

# 2. 检查系统状态
sudo systemctl status tsp_assistant
sudo journalctl -u tsp_assistant -f

# 3. 联系技术支持

数据丢失

# 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智能助手的部署和升级确保系统的稳定性和可靠性。