Files
aiot-platform-cloud/docs/production-config-guide.md
lzh f9aa7828c7 feat: 完善 iot-gateway 生产环境配置
- 添加 IoT 网关特有的配置项环境变量支持
- 支持 HTTP/MQTT/TCP/EMQX 协议配置
- 支持设备 RPC 和 Token 配置
- 支持消息总线配置
- 添加生产环境配置文档
2026-01-13 12:32:14 +08:00

181 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 生产环境配置说明
本文档说明如何使用 `application-prod.yaml` 配置文件。
## 配置架构
### 三层配置体系
```
1. application.yaml (基础配置)
2. application-prod.yaml (生产环境配置 + 环境变量占位符)
3. Nacos 配置中心 (动态配置,优先级最高)
```
### 配置优先级
```
Nacos 配置 > 环境变量 > application-prod.yaml 默认值 > application.yaml
```
## 环境变量命名规范
### 通用环境变量
| 环境变量 | 说明 | 默认值 | 示例 |
|---------|------|--------|------|
| `NACOS_SERVER_ADDR` | Nacos 服务器地址 | 127.0.0.1:8848 | 127.0.0.1:8848 |
| `NACOS_USERNAME` | Nacos 用户名 | 空 | nacos |
| `NACOS_PASSWORD` | Nacos 密码 | 空 | nacos123 |
| `NACOS_NAMESPACE` | Nacos 命名空间 | 空 | prod |
| `NACOS_GROUP` | Nacos 分组 | DEFAULT_GROUP | DEFAULT_GROUP |
### 数据库环境变量
| 环境变量 | 说明 | 默认值 |
|---------|------|--------|
| `MYSQL_HOST` | MySQL 主机地址 | 127.0.0.1 |
| `MYSQL_PORT` | MySQL 端口 | 3306 |
| `MYSQL_DATABASE` | 数据库名 | aiot_platform |
| `MYSQL_USER` | 数据库用户名 | root |
| `MYSQL_PASSWORD` | 数据库密码 | 空 |
### Redis 环境变量
| 环境变量 | 说明 | 默认值 |
|---------|------|--------|
| `REDIS_HOST` | Redis 主机地址 | 127.0.0.1 |
| `REDIS_PORT` | Redis 端口 | 6379 |
| `REDIS_DATABASE` | Redis 数据库索引 | 0 |
| `REDIS_PASSWORD` | Redis 密码 | 空 |
### 消息队列环境变量
| 环境变量 | 说明 | 默认值 |
|---------|------|--------|
| `ROCKETMQ_NAMESRV_ADDR` | RocketMQ NameServer 地址 | 127.0.0.1:9876 |
## 使用方式
### 方式 1: Docker Compose 环境变量注入(推荐)
`docker-compose.core.yml` 中已配置:
```yaml
viewsh-module-system-server:
environment:
SPRING_PROFILES_ACTIVE: prod # ← 激活 prod 配置
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
MYSQL_HOST: ${MYSQL_HOST}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
# ... 其他环境变量
```
### 方式 2: Nacos 配置中心覆盖
在 Nacos 控制台创建配置文件,会覆盖环境变量和本地配置:
**Data ID**: `system-server-prod.yaml`
**Group**: `DEFAULT_GROUP`
```yaml
spring:
datasource:
dynamic:
datasource:
master:
password: 从Nacos管理的密码 # ← 覆盖环境变量
```
### 方式 3: 混合使用(最佳实践)
- **环境变量**配置基础设施连接信息MySQL、Redis、Nacos
- **Nacos**:配置业务参数、功能开关、动态配置
## 各服务配置差异
### 需要 MySQL 的服务
- `viewsh-module-system-server`
- `viewsh-module-infra-server`
- `viewsh-module-iot-server`
### 需要 RocketMQ 的服务
- `viewsh-module-iot-server`
- `viewsh-module-iot-gateway`
### 仅需要 Redis 的服务
- `viewsh-gateway`
- `viewsh-module-iot-gateway`
## 激活生产环境配置
### 在 Docker Compose 中
已在 `docker-compose.core.yml` 中配置:
```yaml
environment:
SPRING_PROFILES_ACTIVE: prod
```
### 手动启动
```bash
java -jar app.jar --spring.profiles.active=prod
```
## 配置验证
### 查看生效的配置
```bash
# 进入容器
docker exec -it aiot-system-server sh
# 查看环境变量
env | grep MYSQL
env | grep REDIS
# 查看 Spring Boot 配置
curl http://localhost:48081/actuator/env
```
## 常见问题
### Q: 如何确认使用了 prod 配置?
A: 查看日志,应该看到:
```
The following 1 profile is active: "prod"
```
### Q: 环境变量和 Nacos 哪个优先级高?
A: Nacos 配置优先级最高,会覆盖环境变量。
### Q: 如何临时修改配置?
A:
1. **临时修改**:在 Nacos 中修改(无需重启)
2. **永久修改**:修改 `.env` 文件并重启容器
## 配置文件位置
```
viewsh-gateway/src/main/resources/application-prod.yaml
viewsh-module-system/viewsh-module-system-server/src/main/resources/application-prod.yaml
viewsh-module-infra/viewsh-module-infra-server/src/main/resources/application-prod.yaml
viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application-prod.yaml
viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-prod.yaml
```
## 下一步
配置完成后,参考 [部署操作指南](deployment-guide.md) 进行部署。