使用 ZIP 或 WAR 文件将应用部署到 Azure 应用服务

本文演示如何使用 ZIP 或 WAR 文件将 Web 应用部署到 Azure 应用服务

此 .zip 文件部署使用相同的 Kudu 服务,支持基于持续集成的部署。 对于 .zip 文件部署,Kudu 支持以下功能:

  • 删除先前的部署留下的文件。
  • 启用默认生成过程的选项,包括包还原。
  • 部署自定义,包括运行部署脚本。
  • 部署日志。

有关详细信息,请参阅 Kudu 文档

WAR 文件部署将 WAR 文件部署到应用服务,以运行 Java Web 应用。 请参阅部署 WAR 文件

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

完成本文中的步骤:

创建一个项目 zip 文件

Note

如果以 zip 文件的形式下载文件,请首先提取该文件。 例如,如果从 GitHub 下载了 zip 文件,则无法按原样部署该文件。 GitHub 可添加额外的嵌套目录,但这不适用于应用服务。

在本地终端窗口中,导航到应用项目的根目录。

此目录应包含 Web 应用的入口文件,例如 index.htmlindex.phpapp.js。 它还可能包含包管理文件,如 project.jsoncomposer.jsonpackage.jsonbower.jsonrequirements.txt

创建一个包含项目中的所有内容的 zip 存档。 以下命令使用您终端中的默认工具执行操作:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

部署 ZIP 文件

在浏览器中,导航到 https://<app_name>.scm.chinacloudsites.cn/ZipDeployUI

上传在创建一个项目 ZIP 文件中创建的 ZIP 文件,只需将其拖至网页的文件资源管理器区域即可。

部署正在进行的时候,右上角的图标会以百分比形式显示进度。 该页还在资源管理器区域下方显示操作的详细消息。 完成后,最后一个部署消息会显示:Deployment successful

使用 Azure CLI 部署 ZIP 文件

请确保 Azure CLI 版本是 2.0.21 或更高版本。 要查看已有版本,请在终端窗口中运行 az --version 命令。

使用 az webapp deployment source config-zip 命令将上传的 zip 文件部署到 Web 应用。

下面的示例部署上传的 zip 文件。 使用 Azure CLI 的本地安装时,请为 --src 指定本地 zip 文件的路径。

az webapp deployment source config-zip --resource-group myResourceGroup --name <app_name> --src clouddrive/<filename>.zip

此命令将 zip 文件中的文件和目录部署到默认的应用服务应用程序文件夹 (\home\site\wwwroot) 并重启应用。 如果配置了任何其他自定义生成过程,则也会运行该过程。 有关详细信息,请参阅 Kudu 文档

使用 REST API 部署 ZIP 文件

可以使用部署服务 REST API 将 .zip 文件部署到 Azure 中的应用。 若要部署,请将 POST 请求发送到 https://<app_name>.scm.chinacloudsites.cn/api/zipdeploy。 POST 请求必须在消息正文中包含此 .zip 文件。 应用的部署凭据是通过使用 HTTP BASIC 身份验证在请求中提供的。 有关详细信息,请参阅 .zip 推送部署参考

对于 HTTP 基本身份验证,需使用应用服务部署凭据。 若要了解如何设置部署凭据,请参阅设置和重置用户级别凭据

使用 cURL

以下示例使用 cURL 工具部署 .zip 文件。 替换占位符 <username><password><zip_file_path><app_name>。 出现 cURL 提示时,键入密码。

curl -X POST -u <deployment_user> --data-binary @"<zip_file_path>" https://<app_name>.scm.chinacloudsites.cn/api/zipdeploy

此请求从已上传的 .zip 文件触发推送部署。 可以使用 https://<app_name>.scm.chinacloudsites.cn/api/deployments 终结点查看当前和之前的部署,如以下 cURL 示例所示。 同样,使用应用的名称替换 <app_name>;使用部署凭据的用户名替换 <deployment_user>

curl -u <deployment_user> https://<app_name>.scm.chinacloudsites.cn/api/deployments

使用 PowerShell

以下示例使用 Invoke-RestMethod 发送包含 .zip 文件的请求。 替换占位符 <deployment_user><deployment_password><zip_file_path><app_name>

#PowerShell
$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<zip_file_path>"
$apiUrl = "https://<app_name>.scm.chinacloudsites.cn/api/zipdeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"

此请求从已上传的 .zip 文件触发推送部署。 若要查看当前和之前的部署,请运行以下命令。 同样,请替换 <app_name> 占位符。

$apiUrl = "https://<app_name>.scm.chinacloudsites.cn/api/deployments"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

部署 WAR 文件

若要将 WAR 文件部署到应用服务,请将 POST 请求发送到 https://<app_name>.scm.chinacloudsites.cn/api/wardeploy。 POST 请求必须在消息正文中包含此 .war 文件。 应用的部署凭据是通过使用 HTTP BASIC 身份验证在请求中提供的。

对于 HTTP 基本身份验证,需使用应用服务部署凭据。 若要了解如何设置部署凭据,请参阅设置和重置用户级别凭据

使用 cURL

以下示例使用 cURL 工具部署 .war 文件。 替换占位符 <username><war_file_path><app_name>。 出现 cURL 提示时,键入密码。

curl -X POST -u <username> --data-binary @"<war_file_path>" https://<app_name>.scm.chinacloudsites.cn/api/wardeploy

使用 PowerShell

以下示例使用 Invoke-RestMethod 发送包含 .war 文件的请求。 替换占位符 <deployment_user><deployment_password><zip_file_path><app_name>

$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<war_file_path>"
$apiUrl = "https://<app_name>.scm.chinacloudsites.cn/api/wardeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST -InFile $filePath -ContentType "multipart/form-data"

部署期间我的应用会发生什么情况?

所有官方支持的部署方法均具有一个共同点:它们会更改应用的 /home/site/wwwroot 文件夹中的文件。 这些文件与生产中运行的文件相同。 因此,部署可能由于存在锁定文件而失败,或者由于并非所有文件同时更新,生产中的应用在部署期间可能出现不可预测的行为。 可通过多种不同方式避免这些问题:

后续步骤

有关更高级的部署方案,请参阅使用 Git 部署到 Azure。 通过基于 Git 的 Azure 部署可实现版本控制、包还原、MSBuild 等功能。

更多资源