# 部署指南 ## 部署前检查清单 ### 1. 环境要求 - [ ] Python 3.11+ 已安装 - [ ] Docker 和 Docker Compose 已安装(推荐) - [ ] MySQL 8.0+ 可用 - [ ] Redis 7+ 可用 - [ ] 网络端口 8000 可访问 ### 2. 配置文件 - [ ] 复制 `.env.example` 为 `.env` - [ ] 配置数据库连接信息 - [ ] 配置Redis连接信息 - [ ] 配置E云管家API信息 - [ ] 配置DifyAI API密钥 ### 3. 必要的API信息 - [ ] E云管家域名和授权token - [ ] DifyAI API密钥 - [ ] 确认E云管家回调URL配置 ## 快速部署(Docker方式) ### 1. 克隆项目 ```bash git clone cd ECloud ``` ### 2. 配置环境变量 ```bash cp .env.example .env # 编辑 .env 文件,填入正确的配置信息 ``` ### 3. 启动服务 ```bash # 启动所有服务(MySQL、Redis、应用) docker-compose up -d # 查看启动日志 docker-compose logs -f app ``` ### 4. 验证部署 ```bash # 运行集成测试 python test_integration.py # 检查服务状态 curl http://localhost:8000/api/v1/health ``` ## 手动部署 ### 1. 安装依赖 ```bash # 创建虚拟环境 python3 -m venv venv source venv/bin/activate # 安装依赖 pip install -r requirements.txt ``` ### 2. 启动数据库服务 ```bash # 使用Docker启动MySQL和Redis docker-compose up -d mysql redis # 或者使用系统服务 sudo systemctl start mysql sudo systemctl start redis ``` ### 3. 初始化数据库 ```bash python app/utils/database_init.py ``` ### 4. 启动应用 ```bash # 使用启动脚本 chmod +x start.sh ./start.sh # 或者直接启动 python main.py ``` ## 生产环境部署 ### 1. 使用进程管理器 ```bash # 安装supervisor sudo apt-get install supervisor # 创建配置文件 /etc/supervisor/conf.d/ecloud-dify.conf [program:ecloud-dify] command=/path/to/venv/bin/python /path/to/main.py directory=/path/to/project user=www-data autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/ecloud-dify.log ``` ### 2. 使用Nginx反向代理 ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ### 3. 配置HTTPS ```bash # 使用Let's Encrypt sudo certbot --nginx -d your-domain.com ``` ## 监控和维护 ### 1. 日志监控 ```bash # 查看应用日志 tail -f logs/app.log # 查看错误日志 tail -f logs/app_error.log # 使用Docker查看日志 docker-compose logs -f app ``` ### 2. 性能监控 ```bash # 查看Redis队列状态 redis-cli > KEYS ecloud_queue:* > LLEN ecloud_queue:用户ID # 查看数据库连接 mysql -u ecloud -p ecloud_dify > SHOW PROCESSLIST; ``` ### 3. 健康检查 ```bash # API健康检查 curl http://localhost:8000/api/v1/health # 数据库健康检查 python -c "from app.utils.database_init import check_database_health; print(check_database_health())" ``` ## 故障排除 ### 常见问题 1. **端口被占用** ```bash # 查看端口占用 netstat -tlnp | grep 8000 # 修改配置文件中的端口 vim .env ``` 2. **数据库连接失败** ```bash # 检查MySQL服务状态 sudo systemctl status mysql # 检查连接配置 mysql -h localhost -u ecloud -p ``` 3. **Redis连接失败** ```bash # 检查Redis服务状态 sudo systemctl status redis # 测试连接 redis-cli ping ``` 4. **DifyAI API调用失败** - 检查API密钥是否正确 - 确认网络连接 - 查看API配额限制 ### 日志分析 重要日志关键词: - `ERROR`: 错误信息 - `消息处理失败`: 消息处理异常 - `数据库连接失败`: 数据库问题 - `Dify响应失败`: DifyAI API问题 - `发送文本消息失败`: E云管家API问题 ## 备份和恢复 ### 数据库备份 ```bash # 备份数据库 mysqldump -u ecloud -p ecloud_dify > backup_$(date +%Y%m%d).sql # 恢复数据库 mysql -u ecloud -p ecloud_dify < backup_20231201.sql ``` ### Redis数据备份 ```bash # Redis会自动保存到dump.rdb文件 cp /var/lib/redis/dump.rdb backup_redis_$(date +%Y%m%d).rdb ``` ## 扩展和优化 ### 1. 水平扩展 - 使用多个应用实例 - 配置负载均衡器 - 使用Redis集群 ### 2. 性能优化 - 调整数据库连接池大小 - 优化Redis队列处理 - 使用缓存减少API调用 ### 3. 安全加固 - 配置防火墙规则 - 使用HTTPS - 定期更新依赖包 - 配置访问控制