11
This commit is contained in:
176
docs/SAFE_PRODUCTION_SETUP_GUIDE.md
Normal file
176
docs/SAFE_PRODUCTION_SETUP_GUIDE.md
Normal file
@@ -0,0 +1,176 @@
|
||||
# 生产环境安全配置指南
|
||||
|
||||
## 🚨 重要警告
|
||||
|
||||
**原始的 `create_dev_tenant_payment.sql` 脚本不要在生产数据库执行!**
|
||||
|
||||
该脚本包含测试数据,可能会影响生产环境。
|
||||
|
||||
## ✅ 安全的生产环境配置方案
|
||||
|
||||
### 方案一:使用后台管理界面(推荐)
|
||||
|
||||
1. **登录后台管理系统**
|
||||
2. **进入支付配置页面**
|
||||
3. **创建新的支付配置**:
|
||||
- 名称:`微信支付-开发环境`
|
||||
- 类型:微信支付
|
||||
- 回调地址:`http://frps-10550.s209.websoft.top/api/shop/shop-order/notify`
|
||||
- 其他参数:复制现有生产配置
|
||||
|
||||
### 方案二:使用API接口
|
||||
|
||||
```bash
|
||||
# 1. 获取当前配置
|
||||
curl -X GET "https://your-domain.com/api/payment/list" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN"
|
||||
|
||||
# 2. 创建开发配置
|
||||
curl -X POST "https://your-domain.com/api/payment" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-d '{
|
||||
"name": "微信支付-开发环境",
|
||||
"type": 0,
|
||||
"appId": "YOUR_DEV_APP_ID",
|
||||
"mchId": "YOUR_DEV_MCH_ID",
|
||||
"notifyUrl": "http://frps-10550.s209.websoft.top/api/shop/shop-order/notify",
|
||||
"environment": "dev"
|
||||
}'
|
||||
```
|
||||
|
||||
### 方案三:执行安全的SQL脚本
|
||||
|
||||
如果必须使用SQL,请使用我刚创建的安全版本:
|
||||
|
||||
```bash
|
||||
# 1. 先备份数据库
|
||||
mysqldump -u root -p your_database > backup_$(date +%Y%m%d_%H%M%S).sql
|
||||
|
||||
# 2. 执行安全脚本
|
||||
mysql -u root -p your_database < src/main/resources/sql/production_safe_payment_config.sql
|
||||
|
||||
# 3. 根据脚本输出的模板,手动创建开发配置
|
||||
```
|
||||
|
||||
## 🔧 推荐的实施步骤
|
||||
|
||||
### 步骤1:备份现有配置
|
||||
|
||||
```sql
|
||||
-- 备份当前支付配置
|
||||
CREATE TABLE sys_payment_backup_$(date +%Y%m%d) AS
|
||||
SELECT * FROM sys_payment WHERE status = 1;
|
||||
```
|
||||
|
||||
### 步骤2:查看当前配置
|
||||
|
||||
```sql
|
||||
-- 查看现有支付配置
|
||||
SELECT id, name, type, notify_url, tenant_id
|
||||
FROM sys_payment
|
||||
WHERE status = 1 AND deleted = 0;
|
||||
```
|
||||
|
||||
### 步骤3:创建开发配置
|
||||
|
||||
**选择以下方式之一**:
|
||||
|
||||
#### 方式A:通过后台界面
|
||||
1. 复制现有生产配置
|
||||
2. 修改名称为"开发环境"
|
||||
3. 修改回调地址为本地地址
|
||||
|
||||
#### 方式B:通过SQL(谨慎使用)
|
||||
```sql
|
||||
-- 基于现有配置创建开发版本
|
||||
INSERT INTO sys_payment (
|
||||
name, type, code, app_id, mch_id, api_key,
|
||||
notify_url, tenant_id, status, deleted, create_time, update_time
|
||||
)
|
||||
SELECT
|
||||
CONCAT(name, '-开发环境'),
|
||||
type,
|
||||
CONCAT(code, '_dev'),
|
||||
app_id,
|
||||
mch_id,
|
||||
api_key,
|
||||
'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify',
|
||||
tenant_id,
|
||||
0, -- 先设为禁用状态
|
||||
0,
|
||||
NOW(),
|
||||
NOW()
|
||||
FROM sys_payment
|
||||
WHERE type = 0 AND status = 1 AND deleted = 0
|
||||
LIMIT 1;
|
||||
```
|
||||
|
||||
### 步骤4:测试和验证
|
||||
|
||||
```bash
|
||||
# 测试开发环境配置
|
||||
curl -X GET "http://localhost:9200/api/dev/payment/config/0"
|
||||
|
||||
# 验证回调地址
|
||||
curl -X POST "http://frps-10550.s209.websoft.top/api/shop/shop-order/notify" \
|
||||
-d "test=1"
|
||||
```
|
||||
|
||||
## 🛡️ 安全检查清单
|
||||
|
||||
- [ ] 已备份生产数据库
|
||||
- [ ] 确认当前数据库环境
|
||||
- [ ] 使用安全的配置方法
|
||||
- [ ] 测试开发配置不影响生产
|
||||
- [ ] 验证回调地址可访问
|
||||
- [ ] 建立配置恢复机制
|
||||
|
||||
## 🔄 快速切换方案
|
||||
|
||||
### 开发时切换到本地回调
|
||||
|
||||
```sql
|
||||
-- 临时修改(记录原始值)
|
||||
UPDATE sys_payment
|
||||
SET notify_url = 'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify'
|
||||
WHERE id = YOUR_PAYMENT_CONFIG_ID;
|
||||
```
|
||||
|
||||
### 完成后恢复生产回调
|
||||
|
||||
```sql
|
||||
-- 恢复生产配置
|
||||
UPDATE sys_payment
|
||||
SET notify_url = 'https://cms-api.websoft.top/api/shop/shop-order/notify'
|
||||
WHERE id = YOUR_PAYMENT_CONFIG_ID;
|
||||
```
|
||||
|
||||
## 🚀 最佳实践
|
||||
|
||||
1. **使用环境感知服务**:让代码自动根据环境切换
|
||||
2. **创建专用开发配置**:避免修改生产配置
|
||||
3. **使用配置管理工具**:通过界面而非SQL操作
|
||||
4. **建立回滚机制**:确保可以快速恢复
|
||||
5. **团队协作规范**:统一配置管理流程
|
||||
|
||||
## ❌ 避免的操作
|
||||
|
||||
- ❌ 直接在生产库执行包含测试数据的脚本
|
||||
- ❌ 修改生产配置进行开发调试
|
||||
- ❌ 在生产环境创建测试租户
|
||||
- ❌ 不备份就修改重要配置
|
||||
- ❌ 忘记恢复生产环境配置
|
||||
|
||||
## 📞 如果出现问题
|
||||
|
||||
1. **立即停止操作**
|
||||
2. **检查数据库备份**
|
||||
3. **恢复原始配置**:
|
||||
```sql
|
||||
-- 从备份恢复
|
||||
INSERT INTO sys_payment SELECT * FROM sys_payment_backup_YYYYMMDD;
|
||||
```
|
||||
4. **联系技术支持**
|
||||
|
||||
记住:**安全第一,谨慎操作!** 🛡️
|
||||
Reference in New Issue
Block a user