# 生产环境部署指南 ## 服务器信息 - **IP地址**: 118.145.177.79 - **域名**: zsglpt.workyai.cn - **SSH用户**: root - **项目路径**: /root/zsglpt --- ## 部署前检查清单 ### 1. 本地环境检查 - [x] 代码已测试无误 - [x] 数据库迁移脚本已准备 - [x] Docker配置文件已更新 - [x] 静态文件已优化(SourceMap已修复) ### 2. 服务器连接测试 ```bash # 测试SSH连接 ssh root@118.145.177.79 "echo 'SSH连接成功'" ``` ### 3. 确认服务器环境 ```bash # 检查Docker是否运行 ssh root@118.145.177.79 "docker ps" # 检查磁盘空间 ssh root@118.145.177.79 "df -h" # 检查内存 ssh root@118.145.177.79 "free -h" ``` --- ## 快速部署步骤 ### 方法1: 使用自动化脚本(推荐) ```bash cd /home/yuyx/aaaaaa/zsglpt ./deploy_to_production.sh ``` **脚本会自动完成:** 1. ✓ 测试SSH连接 2. ✓ 备份生产服务器数据库 3. ✓ 压缩并上传项目文件 4. ✓ 停止旧容器 5. ✓ 重新构建Docker镜像 6. ✓ 启动新容器 7. ✓ 显示运行状态 ### 方法2: 手动部署步骤 如果自动脚本失败,可以手动执行以下步骤: #### 步骤1: 备份生产数据 ```bash ssh root@118.145.177.79 " cd /root/zsglpt mkdir -p backups/backup_$(date +%Y%m%d_%H%M%S) cp -r data backups/backup_$(date +%Y%m%d_%H%M%S)/ " ``` #### 步骤2: 压缩并上传项目 ```bash cd /home/yuyx/aaaaaa/zsglpt tar -czf /tmp/zsglpt_deploy.tar.gz \ --exclude='data' \ --exclude='logs' \ --exclude='截图' \ --exclude='playwright' \ --exclude='backups' \ . scp /tmp/zsglpt_deploy.tar.gz root@118.145.177.79:/tmp/ ``` #### 步骤3: 在服务器上解压 ```bash ssh root@118.145.177.79 " cd /root/zsglpt tar -xzf /tmp/zsglpt_deploy.tar.gz rm /tmp/zsglpt_deploy.tar.gz " ``` #### 步骤4: 重启服务 ```bash ssh root@118.145.177.79 " cd /root/zsglpt docker-compose down docker-compose build --no-cache docker-compose up -d " ``` --- ## 部署后验证 ### 1. 检查容器状态 ```bash ssh root@118.145.177.79 "docker ps | grep knowledge-automation" ``` **预期输出**: 状态为 `Up` 且包含 `(healthy)` ### 2. 检查服务日志 ```bash ssh root@118.145.177.79 "docker logs --tail 50 knowledge-automation-multiuser" ``` **预期输出**: - ✓ 数据库连接池已初始化 - ✓ 浏览器环境检查完成 - ✓ 服务器启动成功 ### 3. 测试HTTP访问 ```bash curl -I https://zsglpt.workyai.cn ``` **预期输出**: HTTP/1.1 200 或 302 ### 4. 测试功能 - [ ] 访问前台页面: https://zsglpt.workyai.cn - [ ] 测试登录功能 - [ ] 测试任务执行 - [ ] 检查WebSocket连接 - [ ] 验证数据库数据完整 --- ## 重要修复项说明 ### 修复1: 执行用时计算 **位置**: `app.py:1221` **说明**: 执行用时现在只计算任务实际运行时间,不包含排队等待时间 ### 修复2: SourceMap错误 **文件**: `static/js/socket.io.min.js` **说明**: 已添加内联空SourceMap,浏览器不会再报404错误 ### 修复3: 静态文件缓存 **位置**: `app.py:1747-1749` **说明**: 添加了Cache-Control响应头,禁用静态文件缓存 ### 修复4: Docker挂载 **文件**: `docker-compose.yml` **说明**: 新增了static、templates、app.py的挂载,方便热更新 --- ## 回滚步骤 如果部署后出现问题,可以快速回滚到上一个版本: ```bash ssh root@118.145.177.79 " cd /root/zsglpt # 找到最新的备份目录 LATEST_BACKUP=\$(ls -t backups/ | head -1) echo \"回滚到备份: \$LATEST_BACKUP\" # 停止当前容器 docker-compose down # 恢复代码文件 cp -r backups/\$LATEST_BACKUP/code/* . # 恢复数据库(如果需要) # cp -r backups/\$LATEST_BACKUP/data/* data/ # 重启容器 docker-compose up -d --build " ``` --- ## 常见问题排查 ### 问题1: 容器无法启动 ```bash # 查看详细错误日志 ssh root@118.145.177.79 "docker logs knowledge-automation-multiuser" # 检查端口占用 ssh root@118.145.177.79 "netstat -tlnp | grep 51233" ``` ### 问题2: 数据库连接失败 ```bash # 检查数据库文件权限 ssh root@118.145.177.79 "ls -lh /root/zsglpt/data/" # 检查数据库文件是否存在 ssh root@118.145.177.79 "docker exec knowledge-automation-multiuser ls -lh /app/data/" ``` ### 问题3: 域名无法访问 ```bash # 检查Nginx配置 ssh root@118.145.177.79 "docker exec zsgpt2-nginx nginx -t" # 查看Nginx日志 ssh root@118.145.177.79 "docker logs zsgpt2-nginx" ``` ### 问题4: WebSocket连接失败 检查Nginx配置是否包含WebSocket代理设置: ```nginx location /socket.io/ { proxy_pass http://knowledge-automation:51233; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } ``` --- ## 监控命令 ### 实时查看日志 ```bash ssh root@118.145.177.79 "docker logs -f knowledge-automation-multiuser" ``` ### 查看容器资源使用 ```bash ssh root@118.145.177.79 "docker stats knowledge-automation-multiuser" ``` ### 查看运行任务 ```bash ssh root@118.145.177.79 "docker exec knowledge-automation-multiuser ps aux | grep python" ``` --- ## 紧急联系信息 - **部署时间**: 2025-11-20 - **部署版本**: v2.0 (修复执行用时+SourceMap) - **备份位置**: /root/zsglpt/backups/ --- ## 维护建议 1. **定期备份**: 建议每天自动备份数据库 2. **日志清理**: 定期清理旧日志文件,避免磁盘占满 3. **监控磁盘**: 关注磁盘使用率,特别是截图目录 4. **更新依赖**: 定期更新Python依赖包和Docker镜像 5. **安全审计**: 定期检查系统安全日志 --- **部署完成后请在GitHub/文档中更新部署记录!**