Skip to content

环境变量 ​

后端使用 Viper 读取配置文件 config/init.go 完成配置加载与合并。

配置文件名 ​

  • 默认读取运行目录下的 .env.yaml;
  • 可通过命令行参数指定:-env=.env.yaml;
  • 仓库内提供模板 .env.yaml.example,线上可另用 .env.online.yaml。

加载规则 ​

  • 有 mapstructure tag 的字段,名称以 mapstructure 为准,尽量使用大驼峰命名。
  • 支持嵌套结构(如 DB、REDIS、Email 为数组)与多账号配置。

核心配置段 ​

配置段说明
APP应用端口、运行模式、名称
DB数据库连接(host/port/user/pwd/name)
REDISRedis 地址与密码(队列/锁/缓存依赖)
FILE文件上传大小限制、分片、预签名等
Email邮件账号(数组,多账号随机发送)
GeTui个推推送配置
JWT / AdminJWTC 端 / 后台 JWT 密钥与过期时间
Wechat微信小程序 / 公众号 AppID+Secret
IOTIoT 接入层与处理流水线开关、缓存 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):

键默认说明
Enabletrue接入层总开关:false 时不注册 /api/iot/* 设备路由、不启动消费流水线
DeviceCacheTTL300设备鉴权信息 Redis 缓存秒数
ThingCacheTTL600物模型 / 规则链执行树缓存秒数
StateTTL86400最新属性快照保留秒数
MaxValues50单报文最大属性条数(防报文放大)
PushStateChangetrue状态/遥测/告警是否经 core.Ws 广播
LogRawfalse记录原始报文日志(联调用)
LogRuleChainfalse逐节点记录规则链执行日志(联调用)
DataBatchSize200时序批量写入单批行上限
DataKeepDays30时序保留天数,0=永久不清理

载入后紧接调用 IotConfig.Normalize():多个字段被直接当 Redis TTL 使用,非正数会语义反转,故回退包级默认值(DataKeepDays/设备 offline_timeout 的 0 为合法值,不受此约束)。各字段语义与完整取值见 IoT 模块 第十四节。