跳到主要内容

配置参考

FreeKitModules 使用 ASP.NET Core 配置体系。每个宿主拥有自己的 appsettings*.json,同名环境变量可以覆盖文件值;开发环境还可使用 User Secrets。

配置文件入口

宿主配置目录
主 APIsrc/Services/Host/FreeKit.Host/
Jobsrc/Services/Host/FreeKit.Job.Host/
Messagesrc/Services/Host/FreeKit.MessageHandler.Host/
HealthChecks UIsrc/Services/Host/FreeKit.HealthChecks/FreeKit.HealthChecks/
Authauth/src/FreeKit.Auth.Host/
BasicIdentitybasic/src/FreeKit.BasicIdentity.Host/
CodeGencg/src/FreeKit.CodeGen.Host/

不要假设主 Host 的配置会自动传给其他宿主。Job 和 Message 都是独立进程,需要分别提供连接、消息、遥测和业务配置。

覆盖规则

环境变量使用双下划线表示层级:

ConnectionStrings__MySql
Security__AuthMode
MeiliSearch__Enable
OpenTelemetry__Otlp__Endpoint

容器部署优先使用环境变量或 Secret 管理系统。示例中的 <...> 都必须替换,不能把真实密码、Token、Cookie、证书密码或第三方密钥提交到仓库。

关键配置节

配置节作用主要使用位置
ConnectionStrings主库、Redis 与数据库类型选择各业务宿主
ShortUrlConnectionStrings短链接独立数据库Platform ShortUrl
LogConnectionStringsSerilog 数据库存储Host / Job / Message
MeiliSearchCmsKit 搜索开关、地址和 API KeyCmsKit
Security认证模式、OpenIddict Validation、SSO 与加密Identity / Host
FileStorage上传限制和 Local/Qiniu/CloudflareR2 等提供器Identity.Infrastructure
CAPRabbitMQ、存储与 Dashboard各业务宿主
PlatformMessage飞书、企微、公众号等消息渠道Message / Platform
OpenTelemetryTrace、Metric、FreeSql Span 与 OTLPHost / Job / Message
SerilogConsole、File、MariaDB、OTLP Logs各宿主

数据库连接

ConnectionStrings:DefaultDB 选择 ConnectionStrings:DataType 中的数字值。开发配置提供 MySQL、SQL Server、PostgreSQL、Oracle、SQLite 示例,当前部署主线以 MySQL 为主。

{
"ConnectionStrings": {
"DefaultDB": "0",
"UseJsonMap": true,
"DataType": {
"MySql": 0,
"SqlServer": 1,
"PostgreSQL": 2,
"Oracle": 3,
"Sqlite": 4
},
"MySql": "Data Source=localhost;Port=3306;User ID=<user>;Password=<password>;Initial Catalog=freekit;Charset=utf8mb4",
"Redis": "localhost:6379,password=<password>,defaultDatabase=1"
}
}

DefaultDB = 0 表示 MySQL,不是内存数据库。

PathBase 与监听端口

ASPNETCORE_PATHBASE 只控制 URL 路径前缀,监听地址由 launchSettings.jsonASPNETCORE_URLS 或容器端口映射决定。

宿主开发 PathBase
FreeKit.Host/kit_api
FreeKit.Job.Host/job_api
FreeKit.MessageHandler.Host/message_api

例如主宿主开发地址是 https://localhost:7000,Swagger 完整地址才是 https://localhost:7000/kit_api/swagger

认证模式

主宿主通过 Security:AuthMode 选择认证配置;OpenIddict Validation 的 Issuer 与证书设置位于 Security:OpenIddict:Validation。授权服务器自身配置在 auth/src/FreeKit.Auth.Host,不要把客户端验证配置和授权服务器配置混为一处。

生产环境至少应外置:

  • 数据库、Redis、RabbitMQ 凭据;
  • JWT/OpenIddict 签名与加密证书;
  • OAuth 客户端 Secret;
  • 文件存储和第三方 API 密钥;
  • Serilog 或 OTLP 后端认证信息。

文件存储与数据库 Settings

IdentityInfrastructureModuleStartup 绑定 FileStorageFileStorageOptionsResolver 会先读取数据库 Setting IdentitySettingNames.FileStorage_Config,为空时回退到 appsettings。因此运行时修改文件存储配置后,应同时确认数据库 Setting,而不只检查 JSON 文件。

支持的当前 Keyed Manager 常量包括:

  • LocalFileManager
  • QiniuManager
  • CloudFlareR2

OpenTelemetry

{
"OpenTelemetry": {
"Enabled": true,
"ServiceName": "freekit-host",
"FreeSql": {
"Enabled": true,
"IncludeSql": false
},
"Otlp": {
"Endpoint": "http://otel-collector:4317",
"Protocol": "grpc"
}
}
}

OTEL_SERVICE_NAMEOTEL_EXPORTER_OTLP_ENDPOINTOTEL_EXPORTER_OTLP_PROTOCOL 可覆盖同类应用配置。IncludeSql=true 会把 SQL 文本加入 Span,应先评估敏感数据与采集成本。

详见可观测性章节。

配置变更检查清单

  1. 确认修改的是实际运行宿主和环境对应的配置。
  2. 检查是否存在环境变量或数据库 Setting 覆盖。
  3. 不在文档、日志或 Git diff 中泄露真实 Secret。
  4. 修改连接、认证或 OTLP 地址后重启对应宿主。
  5. 用健康检查、普通 API 和日志验证,不只看进程是否启动。

相关文档