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

476 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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智能助手的部署和升级确保系统的稳定性和可靠性。