flnxi-Wu/docs/guides/安全部署说明.md
WuYongJie f646b71813
Some checks failed
CI Check / check (push) Has been cancelled
chore: 初始化本地仓库并同步最近改动
2025-11-18 17:50:16 +08:00

4.4 KiB
Raw Blame History

安全部署说明 - 回答您的问题

❓ 您的问题

"后面当我测试并完成新功能和修改后,再部署到服务器,会影响到服务器的正式版本的数据库和配置吗?"

✅ 简短回答

大多数情况下不会影响,但需要根据修改类型判断:

  1. ✅ 只修改代码(API、组件、页面等)→ 不会影响服务器数据库和配置
  2. ⚠️ 修改了数据库结构(Schema)→ 会影响服务器数据库结构
  3. ⚠️ 修改了环境变量 → 不会自动影响,需要在服务器上手动更新

📊 详细说明

情况 1:只修改代码 ✅ 安全

示例:

  • 修改 API 路由逻辑
  • 修改 React 组件
  • 修改页面样式
  • 添加新功能(不涉及数据库结构)

影响:

  • ❌ 不会影响服务器数据库数据
  • ❌ 不会影响服务器数据库结构
  • ❌ 不会影响服务器配置

可以放心部署!

情况 2:修改了数据库结构 ⚠️ 需要注意

示例:

  • 在 prisma/schema.prisma 中添加新字段
  • 创建新表
  • 修改字段类型
  • 删除字段或表

影响:

  • ❌ 不会影响服务器数据库数据(除非删除字段)
  • ✅ 会修改服务器数据库结构
  • ❌ 不会影响服务器配置

部署前必须:

  1. 在本地数据库测试 Schema 变更
  2. 备份服务器数据库
  3. 确认迁移不会丢失数据

情况 3:修改了环境变量 ⚠️ 需要手动更新

示例:

  • 修改 .env 文件
  • 添加新的环境变量

影响:

  • ❌ 不会影响服务器数据库
  • ❌ 不会自动更新服务器配置
  • ⚠️ 需要在服务器上手动更新 .env 文件

注意:

  • .env 文件不会被提交到 Git
  • 服务器上的 .env 文件需要手动维护
  • 本地 .env.local 和服务器 .env 是独立的

🔒 当前配置保护

1. 数据库隔离

本地开发:
  .env.local → localhost:5432 (本地数据库)
  
服务器生产:
  .env → 45.249.208.118:5432 (服务器数据库)

✅ 数据完全独立,本地测试不会影响服务器数据

2. 配置文件隔离

本地:
  .env.local (不会被提交到 Git)
  
服务器:
  .env (服务器上单独配置,不会从本地上传)

✅ 配置完全独立,本地修改不会自动同步到服务器

3. 部署流程

当前部署脚本会:

  1. 构建 Docker 镜像
  2. 上传到服务器
  3. 重启容器
  4. 自动执行数据库迁移(如果修改了 Schema)

⚠️ 如果修改了 Schema,部署时会自动应用到服务器数据库

🛡️ 安全建议

1. 部署前检查

运行 部署前检查清单.bat 进行检查:

.\部署前检查清单.bat

2. Schema 变更前备份

如果修改了 prisma/schema.prisma:

# 在服务器上执行备份
docker compose exec -T app pg_dump -U postgres -d gongxiangpan > backup-$(date +%Y%m%d-%H%M%S).sql

3. 分步测试

  1. 本地测试:在本地数据库上测试所有功能
  2. 代码审查:检查所有变更
  3. 备份数据库:如果修改了 Schema
  4. 部署:执行部署脚本
  5. 验证:检查服务器应用是否正常

📋 快速参考表

修改类型 影响数据 影响结构 影响配置 风险
代码修改 ❌ ❌ ❌ ✅ 低
添加字段 ❌ ✅ ❌ ⚠️ 中
删除字段 ⚠️ ✅ ❌ 🔴 高
环境变量 ❌ ❌ ⚠️ ⚠️ 中

✅ 总结

可以放心的情况

  1. ✅ 只修改代码 → 可以放心部署
  2. ✅ 本地测试环境 → 完全独立,不影响服务器

需要注意的情况

  1. ⚠️ 修改了 Schema → 部署前备份数据库
  2. ⚠️ 修改了环境变量 → 需要在服务器上手动更新

最佳实践

  1. ✅ 本地充分测试
  2. ✅ Schema 变更前备份
  3. ✅ 使用检查清单
  4. ✅ 部署后验证

🎯 您的具体场景

基于您当前的配置:

  1. 本地开发:使用本地数据库(localhost:5432)
  2. 服务器生产:使用服务器数据库(45.249.208.118:5432)
  3. 数据隔离:完全独立,互不影响
  4. 配置隔离:完全独立,不会自动同步

因此:

  • ✅ 本地测试不会影响服务器数据
  • ✅ 只修改代码时,部署是安全的
  • ⚠️ 修改 Schema 时,需要注意备份