本文介绍了 Azure 应用服务 如何更新作系统(OS)和运行时软件、如何获取版本信息以及如何手动升级到新版本。
应用服务是平台即服务(PaaS),因此 Azure 会为你管理 OS 和应用程序堆栈。 仅管理应用程序及其数据。 如果需要对 OS 和应用程序堆栈进行更多控制,可以使用 Azure 虚拟机。
作为应用服务用户,你仍有助于了解以下信息,例如:
- 应用 OS 更新的方式和时间。
- 应用服务如何针对重大漏洞和零日漏洞进行修补。
- 当受支持的语言运行时环境被更新、添加或弃用时。
- 如何使用平台发布通道(Linux)控制运行时补丁更新时间。
- 如何找出正在运行应用的 OS 和运行时版本。
本文提供流程的透明度,并帮助你随时了解与安全相关的公告和运行时更新。 出于安全原因,不会发布某些特定的安全信息。
如何以及何时应用 OS 更新?
Azure 管理运行应用服务资源的物理服务器和来宾虚拟机 (VM) 的操作系统修补。
这些更新会自动应用,同时保证 Azure 服务的可用性服务级别协议 (SLA)。 尽快应用最新补丁,但操作系统修补有时可能会变慢或暂停,以避免应用影响和中断。
有关如何应用更新的详细信息,请参阅揭示应用服务 OS 背后的秘密。
Azure 如何处理重大漏洞?
当高优先级问题(如零天漏洞)需要立即修补时,Azure逐个处理更新。
何时更新、添加或弃用受支持的语言运行时?
新的稳定主版本、次版本或补丁版本的受支持语言运行时会定期添加到 App Service 实例中。 某些更新会覆盖现有安装,而另一些更新则与现有版本并排安装。
覆盖式安装意味着您的应用会自动在更新后的运行时环境中运行。 并列安装意味着必须手动迁移应用才能利用新的运行时版本。 有关详细信息,请参阅以下部分。
注释
此信息适用于内置于应用服务应用中的语言运行时。 例如,上传到应用服务的自定义运行时将保持不变,除非手动升级。
新补丁更新
对 .NET、PHP、Java SDK 或 Tomcat 版本的修补程序更新会通过用最新版本覆盖现有安装来自动应用。 Node.js 修补程序更新与现有版本并行安装,类似于主要版本和次要版本。 新的 Python 补丁版本可以通过 站点扩展手动安装,并与内置的 Python 安装并存。
新的主要版本和次要版本
新的主要版本或次要版本与现有版本并排安装。 可将应用手动升级到新版本。
如果在配置文件(如 web.config 或 package.json) 中配置了运行时版本,则需要使用相同的方法进行升级。 如果使用应用服务设置来配置运行时版本,可以在 Azure 门户中 或通过在 Azure Cli 中运行 Azure CLI 命令来更改它。
以下示例显示了各种受支持的语言运行时的 Azure CLI 配置命令。 将 <appname> 和 <groupname> 替换为你的应用及其资源组的名称。
az webapp config set --net-framework-version v4.7 --resource-group <groupname> --name <appname>
az webapp config set --php-version 7.0 --resource-group <groupname> --name <appname>
az webapp config appsettings set --settings WEBSITE_NODE_DEFAULT_VERSION=~24 --resource-group <groupname> --name <appname>
az webapp config set --python-version 3.14 --resource-group <groupname> --name <appname>
az webapp config set --java-version 1.8 --java-container Tomcat --java-container-version 9.0 --resource-group <groupname> --name <appname>
注释
Node.js 示例使用建议的 波形符语法 来针对 Windows 应用服务上 Node.js 24 运行时的最新可用版本。
控制运行时补丁更新时点与平台发布通道
注释
平台发布通道功能仅适用于 Linux应用服务 。
默认情况下,系统会在运行时补丁更新可用时自动应用这些更新。 对于 Linux 应用服务, 平台发布通道 设置允许你控制运行时补丁更新传递到应用的节奏。 当你希望在生产环境中采用新的运行时补丁前获得更多可预测性和验证时间时,这种控制非常有用。
可用渠道
从三个频道中选择:
| 通道 | Description | 建议用于 |
|---|---|---|
| Latest | 一有运行时补丁更新就会及时发布。 | 需要能立即访问最新安全修复的应用。 通常不建议用于生产工作负载。 |
| Standard | 更新按标准发布节奏进行,在及时性和稳定性之间取得平衡。 该频道为默认频道。 | 大多数生产环境中的应用。 |
| 扩展 | 通常比标准慢一个版本,给工作负载更多时间验证,然后再采用新的运行时补丁。 | 生产工作负载需要额外验证时间,才能获取新的运行时补丁。 |
当新的运行时补丁发布时,它会按顺序通过通道: 最新 → 标准 → 扩展。 这种流程意味着:可立即在 Latest 上提供的更新,会在经过进一步验证后进入 Standard,然后在此基础上经过额外验证后进入 Extended。
例如,对于.NET 10,同一时间点可能如下:
| 通道 | .NET 版本 |
|---|---|
| Latest | 10.0.7 |
| 标准 | 10.0.4 |
| 延期 | 10.0.2 |
Tip
如果你的应用有严格的稳定性要求,可以使用 扩展 通道来减少自动运行时补丁更新的频率。 如果你的应用需要尽快获得最新安全修复,请使用 最新版本。
配置平台发布通道
- 在 Azure 门户中,转到应用服务应用。
- 在左侧菜单中,选择 堆栈设置。
- 在 平台发布频道中,选择你想要的频道: 最新、 标准或 扩展。
- 选择“保存”。
有关此功能的更多信息,请参阅 平台发布频道博客公告。
如何在实例中查询 OS 和运行时更新状态?
Kudu 控制台允许查询应用服务实例的 OS 版本和运行时版本。 关键的操作系统信息已被禁止访问。 有关详细信息,请参阅 Azure 应用服务上的作系统功能。
下表显示了如何使用 Kudu 或 Cloud Shell 命令查找正在运行应用的 Windows 和语言运行时版本。 将 <appname> 和 <groupname> 替换为你的应用名称和资源组名称。
| 信息 | 在哪里找到 |
|---|---|
| Windows 版本 | 请参阅 https://<appname>.scm.chinacloudsites.cn/Env#sysinfo。 |
| .NET 版本 | 在 https://<appname>.scm.chinacloudsites.cn/DebugConsole命令提示符处运行以下命令: reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"。 |
| .NET Core 版本 | 在 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中,运行 dotnet --version。 |
| PHP 版本 | 在 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中,运行 php --version。 |
| 默认的 Node.js 版本 | 在 Azure Cli 中运行以下命令: az webapp config appsettings list --resource-group <groupname> --name <appname> --query "[?name=='WEBSITE_NODE_DEFAULT_VERSION']" |
| Python 版本 | 在 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中,运行 python --version。 |
| Java 版本 | 在 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中,运行 java -version。 |
注释
锁定对注册表位置 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages的访问,其中存储了有关“KB”修补程序的信息。