Files
MTKJPAY/CONFIG_MANAGEMENT.md

233 lines
5.7 KiB
Markdown
Raw Normal View History

# 配置文件管理说明
## 📁 配置文件结构
### mt-pay 模块
```
mt-pay/src/main/resources/
├── application.yml # 基础配置只设置active profile
├── application-dev.yml # 开发环境配置(本地开发)
├── application-prod.yml # 生产环境配置(服务器部署)
└── application-test.yml # 测试环境配置(可选)
```
### mt-startup 模块
```
mt-startup/src/main/resources/
├── application.yml # 基础配置只设置active profile
├── application-dev.yml # 开发环境配置(本地开发)
└── application-prod.yml # 生产环境配置(服务器部署)
```
## 🔧 环境配置说明
### 开发环境dev
**配置文件**: `application-dev.yml`
**配置内容**:
- 前端URL: `http://localhost:3000`(本地开发)
- PayPal Webhook: 使用内网穿透(如 `https://xxx.cpolar.top/api/paypal/webhook`
- 数据库: 开发环境数据库连接
**使用场景**:
- 本地开发调试
- IDE中直接运行
- 使用 `--spring.profiles.active=dev` 启动
**启动方式**:
```bash
# IDE中运行
# 或命令行
java -jar mt-startup-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
```
### 生产环境prod
**配置文件**: `application-prod.yml`
**配置内容**:
- 前端URL: `https://shopd.mtkj2025.com`(生产域名)
- PayPal Webhook: `https://shopd.mtkj2025.com/api/paypal/webhook`
- 数据库: 生产环境数据库连接(通过环境变量配置)
**使用场景**:
- 服务器部署
- 生产环境运行
- 使用 `--spring.profiles.active=prod` 启动
**启动方式**:
```bash
java -jar mt-startup-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
```
## 📝 配置项说明
### 前端URL配置
**开发环境** (`application-dev.yml`):
```yaml
app:
frontend:
url: http://localhost:3000
```
**生产环境** (`application-prod.yml`):
```yaml
app:
frontend:
url: ${app.frontend.url:https://shopd.mtkj2025.com}
```
**说明**:
- 开发环境固定使用 `localhost:3000`
- 生产环境支持通过环境变量覆盖:`-Dapp.frontend.url=https://your-domain.com`
### PayPal Webhook配置
**开发环境** (`application-dev.yml`):
```yaml
paypal:
webhook-url: https://2646b437.r33.cpolar.top/api/paypal/webhook
```
**生产环境** (`application-prod.yml`):
```yaml
paypal:
webhook-url: ${paypal.webhook-url:https://shopd.mtkj2025.com/api/paypal/webhook}
```
**说明**:
- 开发环境使用内网穿透服务cpolar/ngrok
- 生产环境使用域名,支持通过环境变量覆盖
## 🚀 部署流程
### 本地开发
1. **确保使用dev配置**
- `application.yml``spring.profiles.active: dev`
- 或启动时指定:`--spring.profiles.active=dev`
2. **启动后端**
```bash
# IDE中直接运行
# 或
mvn spring-boot:run -Dspring-boot.run.profiles=dev
```
3. **启动前端**
```bash
cd E:\MTKJPAY-FRONT
npm run dev
```
4. **访问地址**
- 前端: `http://localhost:3000`
- 后端API: `http://localhost:8082/api`
### 生产部署
1. **打包应用**
```bash
cd E:\MTKJPAY
mvn clean package -DskipTests
```
2. **上传到服务器**
- 上传 `mt-startup/target/mt-startup-0.0.1-SNAPSHOT.jar`
3. **启动应用使用prod配置**
```bash
java -jar mt-startup-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
```
4. **访问地址**
- 前端: `https://shopd.mtkj2025.com`
- 后端API: `https://shopd.mtkj2025.com/api`通过Nginx代理
## ⚠️ 重要提示
### 1. 配置文件隔离
-**开发环境配置不会影响生产环境**
-**生产环境配置不会影响本地开发**
-**打包时不会覆盖服务器配置**
### 2. 环境变量覆盖
生产环境支持通过环境变量或启动参数覆盖配置:
```bash
# 覆盖前端URL
java -jar app.jar --spring.profiles.active=prod \
-Dapp.frontend.url=https://your-domain.com
# 覆盖PayPal Webhook
java -jar app.jar --spring.profiles.active=prod \
-Dpaypal.webhook-url=https://your-domain.com/api/paypal/webhook
```
### 3. 默认值设置
Java代码中的默认值设置为开发环境值
```java
@Value("${app.frontend.url:http://localhost:3000}")
private String frontendUrl;
```
- 如果配置文件中没有设置,使用默认值(开发环境)
- 如果配置文件中设置了,使用配置文件的值
### 4. 配置文件优先级
Spring Boot配置优先级从高到低
1. 命令行参数(`--spring.profiles.active=prod`
2. 环境变量
3. `application-{profile}.yml`
4. `application.yml`
5. Java代码中的默认值
## 📋 配置检查清单
### 开发环境
- [x] `application.yml``spring.profiles.active: dev`
- [x] `application-dev.yml` 中前端URL为 `http://localhost:3000`
- [x] `application-dev.yml` 中PayPal Webhook使用内网穿透
- [x] Java代码默认值为 `http://localhost:3000`
### 生产环境
- [x] `application-prod.yml` 中前端URL为 `https://shopd.mtkj2025.com`
- [x] `application-prod.yml` 中PayPal Webhook为 `https://shopd.mtkj2025.com/api/paypal/webhook`
- [x] 支持通过环境变量覆盖配置
- [x] 打包时使用 `--spring.profiles.active=prod` 启动
## 🔍 验证方法
### 验证开发环境配置
```bash
# 启动应用
java -jar app.jar --spring.profiles.active=dev
# 检查日志,应该看到:
# - 前端代理地址: http://localhost:3000
```
### 验证生产环境配置
```bash
# 启动应用
java -jar app.jar --spring.profiles.active=prod
# 检查日志,应该看到:
# - 前端地址: https://shopd.mtkj2025.com
# - Webhook URL: https://shopd.mtkj2025.com/api/paypal/webhook
```
## 📚 相关文档
- `DEPLOYMENT_README.md` - 部署说明
- `DOMAIN_CONFIG_SUMMARY.md` - 域名配置总结
- `NGINX_SSL_CONFIG.md` - Nginx SSL配置