# 部署前安全检查清单 ## ✅ 运行脚本前请确认 ### 1. 构建机配置(setup-build-server.ps1) **操作范围**:只在构建机(192.168.42.134) - [ ] 确认目标服务器是构建机:`192.168.42.134` - [ ] 确认不会连接生产服务器 - [ ] 确认只安装 Docker Compose 和 Registry - [ ] 确认不会操作任何数据 **安全保证**: - ✅ 不会连接生产服务器 - ✅ 不会操作数据库 - ✅ 不会操作存储桶 - ✅ 不会操作 uploads 目录 --- ### 2. 生产服务器配置(setup-production-server.ps1) **操作范围**:只修改 Docker 配置 - [ ] 确认目标服务器是生产服务器:`192.168.58.20` - [ ] 确认只修改 `/etc/docker/daemon.json` - [ ] 确认会备份现有配置 - [ ] 确认重启 Docker 时间约 5-10 秒 **安全保证**: - ✅ 不会操作 uploads 目录 - ✅ 不会操作数据库 - ✅ 不会操作存储桶 - ✅ 不会删除任何文件 - ✅ 容器会自动重启 **重启影响**: - ⚠️ Docker 服务重启:5-10 秒 - ⚠️ 所有容器短暂中断后自动恢复 - ✅ 数据不会丢失 --- ### 3. 部署脚本(deploy-build-server.ps1) **操作范围**:构建镜像 → 传输镜像 → 启动容器 - [ ] 确认部署目标(shadow 或 production) - [ ] 确认只操作应用容器 - [ ] 确认 uploads 目录只挂载,不修改 - [ ] 确认临时文件在 /tmp/ 目录 **安全保证**: - ✅ uploads 目录:只挂载,不修改 - ✅ 数据库:不操作(只通过应用连接) - ✅ 存储桶:不操作(只通过应用连接) - ✅ 其他容器:不操作(PostgreSQL、MinIO、Redis、frp) - ✅ 临时文件:自动清理 **操作的容器**: - ✅ `youyidian-3d-material`(正式系统) - ✅ `youyidian-3d-shadow`(影子系统) **不操作的容器**: - ❌ `gongxiangpan-postgres-1`(数据库) - ❌ `minio`(存储服务) - ❌ `youyidian-3d-redis-shadow`(Redis) - ❌ `frpc-minio`(frp 客户端) --- ## 🔍 运行前检查命令 ### 检查生产服务器状态 ```powershell # 检查运行中的容器 & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "docker ps --format 'table {{.Names}}\t{{.Status}}'" # 检查 uploads 目录(只看前 20 个文件) & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "ls -la /mnt/PoolOne/apps/youyidian-3d/uploads | head -20" # 检查 uploads 文件数量 & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "find /mnt/PoolOne/apps/youyidian-3d/uploads -type f | wc -l" ``` ### 检查构建机状态 ```powershell # 检查 Docker 版本 & "C:\Program Files\PuTTY\plink.exe" -batch -pw "Jsjj@8888" root@192.168.42.134 "docker --version" # 检查磁盘空间 & "C:\Program Files\PuTTY\plink.exe" -batch -pw "Jsjj@8888" root@192.168.42.134 "df -h /" ``` --- ## 📋 运行步骤 ### 第一次配置(只需执行一次) 1. **配置构建机**: ```powershell .\setup-build-server.ps1 ``` - 预计时间:2-3 分钟 - 操作:安装 Docker Compose + Registry - 影响:无(只在构建机) 2. **检查生产服务器**(不修改): ```powershell .\setup-production-server.ps1 -DryRun ``` - 预计时间:30 秒 - 操作:只检查,不修改 - 影响:无 3. **配置生产服务器**: ```powershell .\setup-production-server.ps1 ``` - 预计时间:1 分钟 - 操作:配置 insecure-registry - 影响:Docker 重启 5-10 秒 ### 日常部署(每次部署) 1. **部署到影子系统**(测试): ```powershell .\deploy-build-server.ps1 -Target shadow ``` - 预计时间:2-5 分钟 - 操作:构建 → 传输 → 部署 - 影响:只影响影子系统(端口 5320) 2. **部署到正式系统**(生产): ```powershell .\deploy-build-server.ps1 -Target production ``` - 预计时间:2-5 分钟 - 操作:构建 → 传输 → 部署 - 影响:正式系统短暂重启(约 10 秒) --- ## 🚨 紧急回滚 ### 如果部署出现问题 1. **查看容器日志**: ```powershell & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "docker logs youyidian-3d-material --tail 100" ``` 2. **重启容器**: ```powershell & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "docker restart youyidian-3d-material" ``` 3. **恢复 Docker 配置**(如果配置有问题): ```powershell & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "cp /etc/docker/daemon.json.backup.* /etc/docker/daemon.json && systemctl restart docker" ``` 4. **检查 uploads 目录**(确认没有被删除): ```powershell & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "ls -la /mnt/PoolOne/apps/youyidian-3d/uploads | head -20" ``` --- ## ✅ 最终确认 在运行任何脚本前,请确认: - [ ] 我已阅读并理解所有安全保证 - [ ] 我确认脚本不会操作 uploads 目录 - [ ] 我确认脚本不会操作数据库 - [ ] 我确认脚本不会操作存储桶 - [ ] 我知道如何查看日志和回滚 - [ ] 我已备份重要数据(如果是第一次运行) --- **准备好了吗?开始配置!** 1. 先运行:`.\setup-build-server.ps1` 2. 然后运行:`.\setup-production-server.ps1 -DryRun`(检查) 3. 确认无误后:`.\setup-production-server.ps1`(配置) 4. 最后测试:`.\deploy-build-server.ps1 -Target shadow`(部署到影子系统) --- **文档版本**:v1.0 **更新时间**:2025-01-17