gongxiangp2/部署前安全检查清单.md

5.5 KiB
Raw Blame History

部署前安全检查清单

✅ 运行脚本前请确认

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 客户端)

🔍 运行前检查命令

检查生产服务器状态

# 检查运行中的容器
& "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"

检查构建机状态

# 检查 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. 配置构建机:

    .\setup-build-server.ps1
    
    • 预计时间:2-3 分钟
    • 操作:安装 Docker Compose + Registry
    • 影响:无(只在构建机)
  2. 检查生产服务器(不修改):

    .\setup-production-server.ps1 -DryRun
    
    • 预计时间:30 秒
    • 操作:只检查,不修改
    • 影响:无
  3. 配置生产服务器:

    .\setup-production-server.ps1
    
    • 预计时间:1 分钟
    • 操作:配置 insecure-registry
    • 影响:Docker 重启 5-10 秒

日常部署(每次部署)

  1. 部署到影子系统(测试):

    .\deploy-build-server.ps1 -Target shadow
    
    • 预计时间:2-5 分钟
    • 操作:构建 → 传输 → 部署
    • 影响:只影响影子系统(端口 5320)
  2. 部署到正式系统(生产):

    .\deploy-build-server.ps1 -Target production
    
    • 预计时间:2-5 分钟
    • 操作:构建 → 传输 → 部署
    • 影响:正式系统短暂重启(约 10 秒)

🚨 紧急回滚

如果部署出现问题

  1. 查看容器日志:

    & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "docker logs youyidian-3d-material --tail 100"
    
  2. 重启容器:

    & "C:\Program Files\PuTTY\plink.exe" -batch -pw "jsjj8888" root@192.168.58.20 "docker restart youyidian-3d-material"
    
  3. 恢复 Docker 配置(如果配置有问题):

    & "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 目录(确认没有被删除):

    & "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