4.4 KiB
4.4 KiB
安全部署说明 - 回答您的问题
❓ 您的问题
"后面当我测试并完成新功能和修改后,再部署到服务器,会影响到服务器的正式版本的数据库和配置吗?"
✅ 简短回答
大多数情况下不会影响,但需要根据修改类型判断:
- ✅ 只修改代码(API、组件、页面等)→ 不会影响服务器数据库和配置
- ⚠️ 修改了数据库结构(Schema)→ 会影响服务器数据库结构
- ⚠️ 修改了环境变量 → 不会自动影响,需要在服务器上手动更新
📊 详细说明
情况 1:只修改代码 ✅ 安全
示例:
- 修改 API 路由逻辑
- 修改 React 组件
- 修改页面样式
- 添加新功能(不涉及数据库结构)
影响:
- ❌ 不会影响服务器数据库数据
- ❌ 不会影响服务器数据库结构
- ❌ 不会影响服务器配置
可以放心部署!
情况 2:修改了数据库结构 ⚠️ 需要注意
示例:
- 在
prisma/schema.prisma中添加新字段 - 创建新表
- 修改字段类型
- 删除字段或表
影响:
- ❌ 不会影响服务器数据库数据(除非删除字段)
- ✅ 会修改服务器数据库结构
- ❌ 不会影响服务器配置
部署前必须:
- 在本地数据库测试 Schema 变更
- 备份服务器数据库
- 确认迁移不会丢失数据
情况 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. 部署流程
当前部署脚本会:
- 构建 Docker 镜像
- 上传到服务器
- 重启容器
- 自动执行数据库迁移(如果修改了 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. 分步测试
- 本地测试:在本地数据库上测试所有功能
- 代码审查:检查所有变更
- 备份数据库:如果修改了 Schema
- 部署:执行部署脚本
- 验证:检查服务器应用是否正常
📋 快速参考表
| 修改类型 | 影响数据 | 影响结构 | 影响配置 | 风险 |
|---|---|---|---|---|
| 代码修改 | ❌ | ❌ | ❌ | ✅ 低 |
| 添加字段 | ❌ | ✅ | ❌ | ⚠️ 中 |
| 删除字段 | ⚠️ | ✅ | ❌ | 🔴 高 |
| 环境变量 | ❌ | ❌ | ⚠️ | ⚠️ 中 |
✅ 总结
可以放心的情况
- ✅ 只修改代码 → 可以放心部署
- ✅ 本地测试环境 → 完全独立,不影响服务器
需要注意的情况
- ⚠️ 修改了 Schema → 部署前备份数据库
- ⚠️ 修改了环境变量 → 需要在服务器上手动更新
最佳实践
- ✅ 本地充分测试
- ✅ Schema 变更前备份
- ✅ 使用检查清单
- ✅ 部署后验证
🎯 您的具体场景
基于您当前的配置:
- 本地开发:使用本地数据库(localhost:5432)
- 服务器生产:使用服务器数据库(45.249.208.118:5432)
- 数据隔离:完全独立,互不影响
- 配置隔离:完全独立,不会自动同步
因此:
- ✅ 本地测试不会影响服务器数据
- ✅ 只修改代码时,部署是安全的
- ⚠️ 修改 Schema 时,需要注意备份