配置与环境变量说明
概述
本文档详细说明了井云服务中心后端系统的所有配置项、环境变量、默认值和安全级别,为开发、测试和生产环境的部署提供完整的配置指南。
配置架构
配置层级
配置优先级(从低到高):
- 默认配置:代码内置的默认值
- 环境配置:基于环境的配置
- 本地配置文件:本地配置文件
- 命令行参数:启动时的命令行参数
- Consul 动态配置:Consul KV 存储的配置
- 环境变量覆盖:环境变量覆盖所有配置
配置来源:
- 代码内置默认值
- 配置文件
- 环境变量
- 命令行参数
- Consul KV
配置优先级
- 命令行参数(最高优先级)
- 环境变量
- Consul 动态配置
- 本地配置文件
- 环境配置
- 默认配置(最低优先级)
通用配置项
服务基础配置
服务标识
server:
name: "user-service" # 服务名称
version: "v1.0.0" # 服务版本
environment: "development" # 环境标识:development/test/staging/production
region: "cn-north-1" # 区域标识
zone: "cn-north-1a" # 可用区
HTTP 服务配置
server:
http:
addr: "0.0.0.0:8000" # HTTP 监听地址
timeout:
read: "5s" # 读取超时
write: "5s" # 写入超时
idle: "60s" # 空闲超时
middleware:
logging: true # 启用日志中间件
metrics: true # 启用指标中间件
tracing: true # 启用链路追踪
recovery: true # 启用恢复中间件
rate_limit: true # 启用限流中间件
cors: true # 启用 CORS 中间件
gRPC 服务配置
server:
grpc:
addr: "0.0.0.0:9000" # gRPC 监听地址
timeout:
read: "5s" # 读取超时
write: "5s" # 写入超时
middleware:
logging: true # 启用日志中间件
metrics: true # 启用指标中间件
tracing: true # 启用链路追踪
recovery: true # 启用恢复中间件
auth: true # 启用认证中间件
数据存储配置
PostgreSQL 配置
data:
database:
driver: "postgres"
host: "localhost" # 数据库主机
port: 5432 # 数据库端口
name: "jingyun" # 数据库名称
user: "akita" # 数据库用户
password: "chrishy123" # 数据库密码
ssl_mode: "disable" # SSL 模式:disable/require/verify-ca/verify-full
timezone: "Asia/Shanghai" # 时区设置
max_open_conns: 100 # 最大打开连接数
max_idle_conns: 10 # 最大空闲连接数
conn_max_lifetime: "1h" # 连接最大生命周期
conn_max_idle_time: "10m" # 连接最大空闲时间
Redis 配置
data:
redis:
addr: "localhost:6379" # Redis 地址
password: "chrishy123" # Redis 密码
db: 0 # 数据库编号
pool_size: 100 # 连接池大小
min_idle_conns: 10 # 最小空闲连接数
dial_timeout: "5s" # 连接超时
read_timeout: "3s" # 读取超时
write_timeout: "3s" # 写入超时
pool_timeout: "4s" # 连接池超时
idle_timeout: "5m" # 空闲超时
idle_check_frequency: "1m" # 空闲检查频率
消息队列配置
RabbitMQ 配置
data:
rabbitmq:
host: "localhost" # RabbitMQ 主机
port: 5672 # RabbitMQ 端口
username: "akita" # 用户名
password: "chrishy123" # 密码
vhost: "/" # 虚拟主机
exchange: "jingyun" # 默认交换机
prefetch_count: 10 # 预取数量
reconnect_interval: "10s" # 重连间隔
publish_timeout: "5s" # 发布超时
consume_timeout: "30s" # 消费超时
服务发现配置
Consul 配置
consul:
address: "localhost:8500" # Consul 地址
scheme: "http" # 协议:http/https
token: "" # 访问令牌
namespace: "" # 命名空间
partition: "" # 分区
datacenter: "dc1" # 数据中心
service:
name: "user-service" # 服务名称
id: "user-service-1" # 服务 ID
tags: ["backend", "user"] # 服务标签
port: 9000 # 服务端口
address: "" # 服务地址(空表示自动获取)
check:
http: "http://localhost:8000/health" # 健康检查地址
interval: "10s" # 检查间隔
timeout: "3s" # 检查超时
deregister_critical_service_after: "30s" # 失效后注销时间
服务特定配置
认证服务配置
JWT 配置
auth:
jwt:
secret: "your-secret-key" # JWT 签名密钥(生产环境必须更改)
access_token_expire: "2h" # 访问令牌过期时间
refresh_token_expire: "168h" # 刷新令牌过期时间(7天)
issuer: "jingyun-backend" # 发行者
algorithm: "HS256" # 签名算法
微信登录配置
auth:
wechat:
app_id: "your-app-id" # 微信应用 ID
app_secret: "your-app-secret" # 微信应用密钥
redirect_uri: "https://your-domain.com/auth/wechat/callback" # 回调地址
scope: "snsapi_userinfo" # 授权范围
state_expire: "10m" # 状态过期时间
短信服务配置
auth:
sms:
provider: "aliyun" # 提供商:aliyun/tencent/huawei/aws
aliyun:
access_key_id: "your-access-key-id"
access_key_secret: "your-access-key-secret"
sign_name: "井云科技"
template_code: "SMS_123456789"
rate_limit: "5/m" # 发送频率限制
code_expire: "5m" # 验证码过期时间
code_length: 6 # 验证码长度
用户服务配置
分销系统配置
user:
distribution:
max_levels: 2 # 最大分销层级
default_commission_rate: 0.1 # 默认佣金比例(10%)
min_withdraw_amount: 100 # 最小提现金额(元)
withdraw_fee_rate: 0.006 # 提现手续费率(0.6%)
auto_upgrade: true # 自动升级分销等级
upgrade_check_time: "03:00" # 升级检查时间
点数系统配置
user:
points:
default_expire_days: 365 # 默认过期天数
fifo_consume: true # FIFO 消费策略
batch_size: 100 # 批处理大小
expire_check_time: "02:00" # 过期检查时间
transaction_retention_days: 1095 # 交易记录保留天数
智能体服务配置
Coze 平台配置
agent:
coze:
api_url: "https://api.coze.cn" # Coze API 地址
api_key: "your-api-key" # API 密钥
timeout: "30s" # 请求超时
retry_count: 3 # 重试次数
sync_interval: "1h" # 同步间隔
batch_size: 50 # 批量同步大小
文件上传配置
agent:
upload:
provider: "aliyun" # 存储提供商:local/aliyun/tencent/aws
max_file_size: "100MB" # 最大文件大小
allowed_types: [".jpg", ".jpeg", ".png", ".gif", ".webp", ".mp4", ".mov"] # 允许的文件类型
aliyun:
endpoint: "https://oss-cn-beijing.aliyuncs.com"
access_key_id: "your-access-key-id"
access_key_secret: "your-access-key-secret"
bucket: "jingyun-assets"
base_url: "https://jingyun-assets.oss-cn-beijing.aliyuncs.com"
租户服务配置
租户管理配置
tenant:
domain:
base_domain: "jingyun.design" # 基础域名
prefix_length: 6 # 域名前缀长度
reserved_names: ["www", "api", "admin", "test", "dev"] # 保留域名
max_length: 20 # 最大长度
menu:
max_depth: 5 # 菜单最大深度
max_children: 100 # 最大子菜单数量
snapshot:
retention_days: 2555 # 快照保留天数(7年)
支付服务配置
微信支付配置
payment:
wechat:
app_id: "your-app-id" # 微信应用 ID
mch_id: "your-mch-id" # 商户号
api_key: "your-api-key" # API 密钥
api_cert_path: "/path/to/cert.pem" # 证书路径
api_key_path: "/path/to/key.pem" # 私钥路径
notify_url: "https://your-domain.com/payment/wechat/notify" # 回调地址
expire_time: "2h" # 订单过期时间
order:
timeout: "30m" # 支付超时时间
retry_count: 3 # 重试次数
callback_timeout: "30s" # 回调超时
集成服务配置
微信第三方平台配置
integration:
wechat_third_party:
component_app_id: "your-component-app-id" # 第三方平台 AppID
component_secret: "your-component-secret" # 第三方平台 Secret
component_token: "your-component-token" # 验证票据
component_encoding_aes_key: "your-encoding-aes-key" # 消息加密密钥
callback_url: "https://your-domain.com/integration/wechat/third-party/callback" # 回调地址
auth_redirect_url: "https://your-domain.com/auth/wechat/third-party" # 授权重定向地址
refresh_token_expire: "720h" # 刷新令 牌过期时间(30天)
环境变量配置
通用环境变量
服务基础配置
# 服务标识
SERVER_NAME=user-service
SERVER_VERSION=v1.0.0
SERVER_ENVIRONMENT=production
SERVER_REGION=cn-north-1
SERVER_ZONE=cn-north-1a
# HTTP 服务
SERVER_HTTP_ADDR=0.0.0.0:8000
SERVER_HTTP_TIMEOUT_READ=5s
SERVER_HTTP_TIMEOUT_WRITE=5s
SERVER_HTTP_TIMEOUT_IDLE=60s
# gRPC 服务
SERVER_GRPC_ADDR=0.0.0.0:9000
SERVER_GRPC_TIMEOUT_READ=5s
SERVER_GRPC_TIMEOUT_WRITE=5s
数据库配置
# PostgreSQL
DATA_DATABASE_DRIVER=postgres
DATA_DATABASE_HOST=localhost
DATA_DATABASE_PORT=5432
DATA_DATABASE_NAME=jingyun
DATA_DATABASE_USER=akita
DATA_DATABASE_PASSWORD=chrishy123
DATA_DATABASE_SSL_MODE=disable
DATA_DATABASE_TIMEZONE=Asia/Shanghai
DATA_DATABASE_MAX_OPEN_CONNS=100
DATA_DATABASE_MAX_IDLE_CONNS=10
# Redis
DATA_REDIS_ADDR=localhost:6379
DATA_REDIS_PASSWORD=chrishy123
DATA_REDIS_DB=0
DATA_REDIS_POOL_SIZE=100
DATA_REDIS_MIN_IDLE_CONNS=10
消息队列配置
# RabbitMQ
DATA_RABBITMQ_HOST=localhost
DATA_RABBITMQ_PORT=5672
DATA_RABBITMQ_USERNAME=akita
DATA_RABBITMQ_PASSWORD=chrishy123
DATA_RABBITMQ_VHOST=/
DATA_RABBITMQ_EXCHANGE=jingyun
DATA_RABBITMQ_PREFETCH_COUNT=10
服务发现配置
# Consul
CONSUL_ADDRESS=localhost:8500
CONSUL_SCHEME=http
CONSUL_TOKEN=
CONSUL_NAMESPACE=
CONSUL_PARTITION=
CONSUL_DATACENTER=dc1
服务特定环境变量
认证服务
# JWT 配置
AUTH_JWT_SECRET=your-secret-key
AUTH_JWT_ACCESS_TOKEN_EXPIRE=2h
AUTH_JWT_REFRESH_TOKEN_EXPIRE=168h
AUTH_JWT_ISSUER=jingyun-backend
AUTH_JWT_ALGORITHM=HS256
# 微信登录
AUTH_WECHAT_APP_ID=your-app-id
AUTH_WECHAT_APP_SECRET=your-app-secret
AUTH_WECHAT_REDIRECT_URI=https://your-domain.com/auth/wechat/callback
# 短信服务
AUTH_SMS_PROVIDER=aliyun
AUTH_SMS_ALIYUN_ACCESS_KEY_ID=your-access-key-id
AUTH_SMS_ALIYUN_ACCESS_KEY_SECRET=your-access-key-secret
AUTH_SMS_ALIYUN_SIGN_NAME=井云科技
AUTH_SMS_ALIYUN_TEMPLATE_CODE=SMS_123456789
支付服务
# 微信支付
PAYMENT_WECHAT_APP_ID=your-app-id
PAYMENT_WECHAT_MCH_ID=your-mch-id
PAYMENT_WECHAT_API_KEY=your-api-key
PAYMENT_WECHAT_API_CERT_PATH=/path/to/cert.pem
PAYMENT_WECHAT_API_KEY_PATH=/path/to/key.pem
PAYMENT_WECHAT_NOTIFY_URL=https://your-domain.com/payment/wechat/notify