练习 - 将代码部署到应用服务

已完成

在本单元中,你要将 Web 应用程序部署到应用服务。

通过 ZIP 部署进行部署

让我们通过 ZIP 部署来部署 .NET 应用程序。

首先,使用 dotnet publish 生成最终的应用文件,然后使用 zip 将它们打包到一个 zip 文件中:

cd ~/BestBikeApp
dotnet publish -o pub
cd pub
zip -r site.zip *

最后,用 az webapp deployment source config-zip 执行部署。 将以下命令中的 <your-app-name> 替换为 Azure Web 应用的名称,并运行该应用:

az webapp deployment source config-zip \
    --src site.zip \
    --resource-group <rgn>[sandbox resource group name]</rgn> \
    --name <your-app-name>

部署需要几分钟时间,在此期间你将获得状态输出。 202 状态代码表示部署已成功。

验证部署

让我们浏览到应用程序。 导航回带有占位符页面的打开的浏览器标签页并进行刷新。 如果占位符页面再次出现,则表示你的应用服务实例尚未完全重启,因此请等待片刻后再重试。 如果在应用重启后进行刷新,你将获得新的 ASP.NET Core Web 应用的初始页面。

Screenshot of welcome page.

你已在应用服务上成功托管新的 ASP.NET Core 应用程序!

配置部署凭据

一些应用服务部署技术(包括要在此处使用的技术)要求提供与 Azure 凭据不同的用户名和密码。 每个 Web 应用都预先配置了自己的用户名和密码,你可将其重置为新的随机值,但不能更改为所选的内容。

可使用名为用户部署凭据的应用服务功能来创建自己的用户名和密码,而不是为每个应用搜索这些随机值。 所选的值适用于有权访问的“所有”应用服务 Web 应用上的部署,包括将来创建的新的 Web 应用。 所选的用户名和密码与 Azure 凭据绑定在一起,仅供本人使用,因此请勿与他人共享。 可以随时更改用户名和密码。

创建部署凭据最简单的方法是使用 Azure CLI 来创建。

  1. 在 Cloud Shell 中运行以下命令来设置部署凭据,用所选的值替换 <username><password>

    az webapp deployment user set --user-name <username> --password <password>
    

通过 WAR 部署来部署 Java 应用程序包

让我们通过 WAR 部署来部署 Java 应用程序。 WAR 部署是 Kudu REST API 的一部分,该 API 是一个可通过 HTTP 访问的管理服务接口,可在所有应用服务 Web 应用上使用。 使用 WAR 部署的最简单方法是使用命令行中的 curl HTTP 实用工具。

运行以下命令以使用 WAR 部署来部署 Java Web 应用。 将 <username><password> 替换为先前创建的部署用户用户名和密码,并将 <your-app-name> 替换在 Azure 门户中创建的 Web 应用的名称。

cd ~/helloworld/target
curl -v -X POST -u <username>:<password> https://<your-app-name>.scm.azurewebsites.net/api/wardeploy --data-binary @helloworld.war

命令完成运行后,请打开新的浏览器标签页并转到 https://<your-app-name>.azurewebsites.net。 你将获得应用发出的问候消息。 你已成功部署!

使用 az webapp up 进行部署

让我们用 az webapp up 部署 Node.js 应用程序。 此命令打包我们的应用程序并将其发送到应用服务实例,它在此处进行构建和部署。

首先,我们需要收集 Web 应用资源的一些相关信息。 运行下述命令来设置 shell 变量,这些变量包括应用名称、资源组名称、计划名称、SKU 和位置。 其中每个都使用不同的 az 命令来请求 Azure 中的信息;az webapp up 需要这些值来定位到现有的 Web 应用。

export APPNAME=$(az webapp list --query [0].name --output tsv)
export APPRG=$(az webapp list --query [0].resourceGroup --output tsv)
export APPPLAN=$(az appservice plan list --query [0].name --output tsv)
export APPSKU=$(az appservice plan list --query [0].sku.name --output tsv)
export APPLOCATION=$(az appservice plan list --query [0].location --output tsv)

接下来,使用适当的值运行 az webapp up。 在运行此命令之前,请确保你位于 helloworld 目录中。

az webapp up --name $APPNAME --resource-group $APPRG --plan $APPPLAN --sku $APPSKU --location "$APPLOCATION"

部署将需要几分钟才能传播。 你将能够在状态输出中查看进度。 202 状态代码表示部署已成功。

验证部署

让我们浏览到应用程序。 az webapp up 的最后一行输出(位于 JSON 代码块的前面)包含指向应用的链接。 选择它可在新浏览器选项卡中导航到此处。当应用服务首次初始化你的应用时,页面需要一些时间才能加载。

加载后,你将获得应用发出的问候消息。 你已成功部署!

Screenshot of welcome page.

使用 az webapp up 进行部署

让我们用 az webapp up 部署 Python 应用程序。 此命令打包我们的应用程序并将其发送到应用服务实例,它在此处进行构建和部署。

首先,我们需要收集 Web 应用资源的一些相关信息。 运行下述命令来设置 shell 变量,这些变量包括应用名称、资源组名称、计划名称、SKU 和位置。 它们使用不同的 az 命令来请求 Azure 中的信息;az webapp up 需要这些值来定位到现有的 Web 应用。

export APPNAME=$(az webapp list --query [0].name --output tsv)
export APPRG=$(az webapp list --query [0].resourceGroup --output tsv)
export APPPLAN=$(az appservice plan list --query [0].name --output tsv)
export APPSKU=$(az appservice plan list --query [0].sku.name --output tsv)
export APPLOCATION=$(az appservice plan list --query [0].location --output tsv)

接下来,使用适当的值运行 az webapp up。 在运行此命令之前,请确保你位于 BestBikeApp 目录中。

cd ~/BestBikeApp
az webapp up --name $APPNAME --resource-group $APPRG --plan $APPPLAN --sku $APPSKU --location "$APPLOCATION"

部署需要几分钟时间,在此期间你将获得状态输出。

验证部署

让我们浏览到应用程序。 在输出中,JSON 代码块的正前方有一行包含一个 URL。 选择该链接以在新的浏览器选项卡中打开你的应用。该页面可能需要一些时间才能加载,因为应用服务是首次初始化你的应用。

程序加载后,你将获得应用发出的问候消息。 你已成功部署!

Screenshot of Python's welcome page showing Hello Best Bike App!