SuperAPI AI 工具集

umbraco-configuration

部署与运维

查看项目

更新于 10-27 05:04

技能介绍

用途

该技能用于为 Umbraco 17+ 站点按目标环境选择并应用正确的 .NET 配置。Umbraco 读取标准 .NET 配置,因此配置 Umbraco 的核心是根据运行环境选择合适设置,并从正确来源获取。技能提供三套黄金配置档案,这些档案已对照 Umbraco 自身的选项类、随附的 JSON schema 以及生产运行时验证器进行校验,建议从现成档案起步而非凭记忆拼凑设置。

主要能力与场景档案

技能内置以下场景参考与资产:

  • 生产单服务器:参考 production-single-server.md,资产 production.json。适用于单个 IIS、Linux 或容器实例。
  • 负载均衡:参考 load-balanced.md,资产 load-balanced.json 加角色覆盖文件 ConfiguredServerRoleComposer.cs。适用于两个或更多实例位于负载均衡器之后,任意主机。
  • Azure App Service:参考 azure-app-service.md,资产 azure-app-service.json、azure-app-service-settings.json。适用于 App Service + Azure SQL(+ Blob 媒体)。若需横向扩展,还需同时使用负载均衡参考。

使用方式

先判断站点在哪里运行、有多少实例处理流量。若答案是 Azure 且实例多于一个,应同时使用 Azure 与负载均衡参考。若不确定,从生产单服务器开始,它是其他档案扩展的子集。开发机不需要任何档案:全新安装已在 BackofficeDevelopment 模式运行且无需配置,生产档案在开发机上无法启动。

在编写任何配置前,先打开场景参考并从其资产开始。每套档案只是起点:将其复制到目标 appsettings.<Environment>.json,替换 <Placeholder> 占位符,然后仅保留与 Umbraco 默认值不同的部分。

通用规则

  • 机密信息绝不放入提交文件。连接字符串、SMTP 密码、无人值守安装密码、存储密钥等应使用开发环境用户机密、其他环境环境变量或 Key Vault 引用。档案本身不包含机密,若出现机密测试会失败。
  • 环境变量用 __ 表示 ::,例如 Umbraco:CMS:Global:UseHttps 对应 Umbraco__CMS__Global__UseHttps。优先级从低到高:appsettings.json、appsettings.{Environment}.json、用户机密(仅开发)、环境变量、命令行。
  • 每个配置键须对照项目自身 schema 校验。appsettings-schema.Umbraco.Cms.json 位于项目根目录,与已安装 Umbraco 版本匹配。不要凭记忆或较新文档写键;文档描述最新版本,而设置可能在小版本中才出现(例如 Hosting:MachineIdentifier 自 17.6 起存在,17.5 没有)。
  • schema 并非总是正确。它由属性名生成,少数节名称与 Umbraco 绑定的键不同。17.5.3 已知案例:DistributedJobs(schema 写作 DistributedJobSettings)与 Core:Debug(schema 写作 Debug)。当文档与 schema 冲突时,信任文档并以已安装包确认,而非较新的 Umbraco 源码检出。错误的节名会被静默忽略,设置永远不会生效,因此要检查行为是否改变,而不仅是应用能否启动。绝不要编辑 appsettings-schema*.json 让键通过校验,构建会重新生成这些文件。使用绑定键并告知用户其编辑器不会识别该键。
  • 生产模式启动时除非满足以下条件否则故意失败:UseHttps 开启、UmbracoApplicationUrl 已设置、ModelsMode 为 Nothing、应用为 Release 构建。此处出现 BootFailedException 应视为档案在正常工作。

版本兼容性

目标为 Umbraco 17+,档案已针对 17.5.3 验证。服务器角色使用 IServerRoleAccessor / SetServerRegistrar,在 17 中均存在。负载均衡后台管理本身是 17+ 选项,在负载均衡参考中有描述但未附带资产。

验证与限制

验证断言位于 evals/evals.json,可通过 umbraco-skill-evaluator 技能运行。覆盖等级为 Bound:档案已对照 Umbraco 的选项类、schema 与生产验证器(examples/golden-configs/)检查,但未在负载均衡或 Azure 拓扑中启动。交接时应表述为“已对照 Umbraco 配置模型验证”,不得说“已在 Azure 测试”或“已在负载均衡下测试”。