Files
smart-project-pricing/DEPLOYMENT_CHECKLIST.md
2026-01-31 21:33:06 +08:00

263 lines
4.9 KiB
Markdown
Raw Permalink 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.
# 智能项目定价模型 - 部署检查清单
> 部署前请逐项检查,确保所有条件满足
---
## 一、环境准备检查
### 1.1 服务器环境
- [ ] 操作系统Linux (Ubuntu 22.04 / Debian 12 推荐)
- [ ] CPU≥ 2 核(推荐 4 核)
- [ ] 内存:≥ 4 GB推荐 8 GB
- [ ] 磁盘:≥ 40 GB推荐 100 GB
### 1.2 软件依赖
- [ ] Docker 已安装(版本 24.0+
```bash
docker --version
```
- [ ] Docker Compose 已安装(版本 2.20+
```bash
docker-compose --version
```
- [ ] Git 已安装
```bash
git --version
```
### 1.3 网络要求
- [ ] 可访问外网(拉取镜像)
- [ ] 可访问门户系统内网AI 配置)
- [ ] 80/443 端口未被占用或已规划
---
## 二、配置检查
### 2.1 环境变量
- [ ] 已创建 `.env` 文件
```bash
cp env.example .env
```
- [ ] 已修改数据库密码
- [ ] `MYSQL_ROOT_PASSWORD`
- [ ] `MYSQL_PASSWORD`
- [ ] 已设置 `SECRET_KEY`32位以上随机字符串
- [ ] 已配置 `PORTAL_CONFIG_API`(门户系统地址)
- [ ] 已配置 `CORS_ORIGINS`(生产域名)
- [ ] `.env` 文件权限为 600
```bash
chmod 600 .env
ls -la .env # 应显示 -rw-------
```
### 2.2 Nginx 配置
- [ ] 已修改 `nginx.conf` 中的域名
- [ ] SSL 证书已准备或计划使用 Let's Encrypt
### 2.3 Docker 网络
- [ ] `scrm_network` 网络已创建(如需连接门户系统)
```bash
docker network ls | grep scrm_network
# 如不存在则创建
docker network create scrm_network
```
---
## 三、部署执行
### 3.1 首次部署
```bash
# 1. 进入项目目录
cd /opt/pricing-model # 或实际路径
# 2. 检查配置
cat .env | grep -E "MYSQL|SECRET|PORTAL"
# 3. 执行部署
./scripts/deploy.sh deploy
# 4. 查看状态
./scripts/deploy.sh status
```
### 3.2 部署后验证
- [ ] 所有容器运行正常
```bash
docker-compose ps
# 应显示 3 个服务均为 Up 状态
```
- [ ] 后端健康检查通过
```bash
curl http://localhost:8000/health
# 应返回 {"status": "healthy", ...}
```
- [ ] 数据库连接正常
```bash
docker exec pricing-mysql mysqladmin ping -h localhost
# 应返回 mysqld is alive
```
---
## 四、SSL 证书配置
### 4.1 使用 Let's Encrypt
```bash
DOMAIN=pricing.yourcompany.com \
EMAIL=admin@yourcompany.com \
./scripts/setup-ssl.sh request
```
### 4.2 使用已有证书
```bash
# 复制证书
mkdir -p /etc/nginx/ssl
cp your_certificate.pem /etc/nginx/ssl/pricing.yourcompany.com.pem
cp your_private_key.key /etc/nginx/ssl/pricing.yourcompany.com.key
chmod 600 /etc/nginx/ssl/*.key
```
### 4.3 验证 SSL
- [ ] HTTPS 访问正常
- [ ] HTTP 自动重定向到 HTTPS
---
## 五、Nginx 反向代理
### 5.1 配置 Nginx
```bash
# 1. 复制配置
cp nginx.conf /etc/nginx/sites-available/pricing.conf
# 2. 修改域名和证书路径
vim /etc/nginx/sites-available/pricing.conf
# 3. 启用配置
ln -s /etc/nginx/sites-available/pricing.conf /etc/nginx/sites-enabled/
# 4. 测试配置
nginx -t
# 5. 重载 Nginx
nginx -s reload
```
### 5.2 验证访问
- [ ] 可通过域名访问前端页面
- [ ] API 接口 `/api/v1/health` 可访问
- [ ] WebSocket 连接正常AI 流式输出)
---
## 六、定时任务配置
```bash
crontab -e
```
添加以下任务:
```cron
# 每日凌晨 2 点备份
0 2 * * * /opt/pricing-model/scripts/backup.sh backup >> /var/log/pricing-backup.log 2>&1
# 每 5 分钟健康检查
*/5 * * * * /opt/pricing-model/scripts/monitor.sh quick >> /var/log/pricing-monitor.log 2>&1
```
---
## 七、安全检查
### 7.1 文件权限
- [ ] `.env` 文件权限为 600
- [ ] 脚本文件可执行
```bash
chmod +x scripts/*.sh
```
### 7.2 端口暴露
- [ ] 仅 Nginx 暴露 80/443 端口
- [ ] 后端 8000 端口仅内网访问
- [ ] MySQL 3306 端口仅内网访问
### 7.3 密钥安全
- [ ] 未使用默认密码
- [ ] SECRET_KEY 为随机字符串
- [ ] API Key 从门户系统获取(未硬编码)
---
## 八、功能验证
### 8.1 核心功能
- [ ] 用户可登录系统
- [ ] 基础数据管理正常(分类、耗材、设备等)
- [ ] 项目成本计算正确
- [ ] 市场分析功能正常
- [ ] AI 定价建议可生成
- [ ] 利润模拟计算正确
- [ ] 仪表盘数据显示正常
### 8.2 性能验证
- [ ] 页面加载时间 < 2 秒
- [ ] API 响应时间 < 500ms
- [ ] AI 接口响应 < 10 秒
---
## 九、交付确认
### 9.1 文档
- [ ] README.md 已更新
- [ ] 用户操作手册已提供
- [ ] 系统管理手册已提供
### 9.2 培训
- [ ] 用户培训已完成(或文档已提供)
- [ ] 运维培训已完成(或文档已提供)
### 9.3 签收
- [ ] 客户/产品验收通过
- [ ] 上线通知已发送
---
## 十、问题处理
如遇问题,请参考:
1. 查看容器日志:`docker-compose logs -f`
2. 运行监控检查:`./scripts/monitor.sh report`
3. 参考《系统管理手册》故障排查章节
4. 联系瑞小美技术团队
---
*瑞小美技术团队 · 2026-01-20*