环境变量
后端使用 Viper 读取配置文件 config/init.go 完成配置加载与合并。
配置文件名
- 默认读取运行目录下的
.env.yaml; - 可通过命令行参数指定:
-env=.env.yaml; - 仓库内提供模板
.env.yaml.example,线上可另用.env.online.yaml。
加载规则
- 有
mapstructuretag 的字段,名称以mapstructure为准,尽量使用大驼峰命名。 - 支持嵌套结构(如
DB、REDIS、Email为数组)与多账号配置。
核心配置段
| 配置段 | 说明 |
|---|---|
APP | 应用端口、运行模式、名称 |
DB | 数据库连接(host/port/user/pwd/name) |
REDIS | Redis 地址与密码(队列/锁/缓存依赖) |
FILE | 文件上传大小限制、分片、预签名等 |
Email | 邮件账号(数组,多账号随机发送) |
GeTui | 个推推送配置 |
JWT / AdminJWT | C 端 / 后台 JWT 密钥与过期时间 |
Wechat | 微信小程序 / 公众号 AppID+Secret |
IOT | IoT 接入层与处理流水线开关、缓存 TTL、时序批写/保留等(详见下文) |
Log | 日志级别与输出 |
配置结构源码
参考 config/init.go 中的 config 结构体(含 APP/DB/REDIS/FILE/GeTui/Email/Log/JWT/AdminJWT/Wechat/IOT 各段)。
go
// config/init.go
type config struct {
APP *AppConfigStruct
DB *DBConfigStruct
REDIS *RedisConfigStruct
FILE *FileConfigStruct
GeTui *GeTuiConfigStruct
Email *[]EmailConfigStruct
Log *LogConfigStruct
JWT *JwtConfig
AdminJWT *JwtConfig
Wechat *wechatConfig
IOT *IotConfigStruct
}IoT 配置段(IOT)
设备接入层与数据处理流水线的调参,源码见 config/iot.go(IotConfigStruct):
| 键 | 默认 | 说明 |
|---|---|---|
Enable | true | 接入层总开关:false 时不注册 /api/iot/* 设备路由、不启动消费流水线 |
DeviceCacheTTL | 300 | 设备鉴权信息 Redis 缓存秒数 |
ThingCacheTTL | 600 | 物模型 / 规则链执行树缓存秒数 |
StateTTL | 86400 | 最新属性快照保留秒数 |
MaxValues | 50 | 单报文最大属性条数(防报文放大) |
PushStateChange | true | 状态/遥测/告警是否经 core.Ws 广播 |
LogRaw | false | 记录原始报文日志(联调用) |
LogRuleChain | false | 逐节点记录规则链执行日志(联调用) |
DataBatchSize | 200 | 时序批量写入单批行上限 |
DataKeepDays | 30 | 时序保留天数,0=永久不清理 |
载入后紧接调用
IotConfig.Normalize():多个字段被直接当 Redis TTL 使用,非正数会语义反转,故回退包级默认值(DataKeepDays/设备offline_timeout的 0 为合法值,不受此约束)。各字段语义与完整取值见 IoT 模块 第十四节。