教程:在虚拟网络中将应用程序服务 Web 应用连接到 Azure Database for MySQL 灵活服务器
本教程介绍如何创建 Azure 应用服务 Web 应用并将其连接到 Azure Database for MySQL 灵活服务器实例,这些实例隔离在相同或不同的虚拟网络。
在本教程中,将了解如何:
- 在虚拟网络中创建 Azure Database for MySQL 灵活服务器实例
- 创建要委托给应用服务的子网并创建 Web 应用
- 将 Web 应用添加到虚拟网络
- 从 Web 应用连接到 Azure Database for MySQL 灵活服务器
- 连接在不同的 VNet 中隔离的 Web 应用和 Azure Database for MySQL 灵活服务器实例
先决条件
如果没有 Azure 订阅,可在开始前创建一个 Azure 试用帐户。
本文要求在本地运行 Azure CLI 2.0 或更高版本。 若要查看安装的版本,请运行 az --version
命令。 如果需要进行安装或升级,请参阅安装 Azure CLI。
你将需要使用 az login 命令登录你的帐户。 记下与订阅名称相对应的命令输出中的 id 属性。
az login
如果有多个订阅,请选择应计费的资源所在的相应订阅。 使用 az account set 命令选择帐户下的特定订阅 ID。 将 az login 输出中的你的订阅的订阅 ID 属性替换到订阅 ID 占位符中 。
az account set --subscription <subscription ID>
创建 Azure Database for MySQL 灵活服务器实例
使用以下命令在虚拟网络 (VNET) 中创建专用 Azure Database for MySQL 灵活服务器实例:
az mysql flexible-server create --resource-group myresourcegroup --location chinaeast2 --vnet VNETName
复制新创建的虚拟网络的连接字符串和名称。 此命令将执行以下操作,可能需要花几分钟的时间:
- 创建资源组(如果尚不存在)。
- 生成服务器名称(如果未提供)。
- 在此 Azure Database for MySQL 灵活服务器实例的虚拟网络中,为新的 Azure Database for MySQL 灵活服务器实例和子网创建新的虚拟网络
VNETName
。 确保名称是唯一的。 - 创建服务器的管理员用户名和密码(如果未提供)。
- 创建一个名为 flexibleserverdb 的空数据库。
注意
记下你的密码(如果未提供密码,系统将为你生成一个)。 如果忘记密码,则必须使用 az mysql flexible-server update
命令重置密码。
为应用服务终结点创建子网
现在,我们需要委托给应用服务 Web 应用终结点的子网。 运行以下命令,在创建 Azure Database for MySQL 灵活服务器实例的同一个虚拟网络中创新新的子网。
az network vnet subnet create -g myresourcegroup --vnet-name VNETName --name webappsubnetName --address-prefixes 10.0.1.0/24 --delegations Microsoft.Web/serverFarms --service-endpoints Microsoft.Web
请在此命令后面记下虚拟网络名称和子网名称,以便在创建 Web 应用后为其添加 VNET 集成规则。
创建 Web 应用
在本节中,你将在应用服务应用中创建应用主机,并将此应用连接到 Azure Database for MySQL 灵活服务器数据库。 在终端中,请确保你位于应用程序代码的存储库根路径。
使用 az webapp up 命令创建应用服务应用(主机进程)。
az webapp up --resource-group myresourcegroup --location chinaeast2 --plan testappserviceplan --sku P2V2 --name mywebapp
注意
- 对于 --location 参数,请使用与上一节中数据库相同的位置。
- 将 <app-name> 替换为在整个 Azure 中唯一的名称(服务器终结点是
https://\<app-name>.chinacloudsites.cn
)。 app-name<> 允许的字符包括“A-Z”、“0-9”和“-”。 良好的模式是结合使用公司名称和应用标识符。 - 应用服务基本层不支持 VNET 集成。 请使用“标准”或“高级”。
此命令将执行以下操作,可能需要花几分钟的时间:
- 创建资源组(如果尚不存在)。 (在此命令中,你将使用之前在其中创建数据库的同一资源组。)
- 在基本定价层 (B1) 中创建应用服务计划
testappserviceplan
(如果不存在)。 --plan 和--sku 是可选的。 - 创建应用服务应用(如果不存在)。
- 为应用启用默认日志记录(如果尚未启用)。
- 在启用了生成自动化的情况下,使用 ZIP 部署上传存储库。
将 Web 应用添加到虚拟网络
使用 az webapp vnet-integration 命令向 webapp 添加区域虚拟网络集成。 将 <vnet-name> 和 <subnet-name 替换为 Azure Database for MySQL 灵活服务器实例使用的虚拟网络和子网名称。
az webapp vnet-integration add -g myresourcegroup -n mywebapp --vnet VNETName --subnet webappsubnetName
配置环境变量以连接数据库
将代码部署到应用服务后,下一步是将应用连接到 Azure 中的 Azure Database for MySQL 灵活服务器实例。 应用代码需要在多个环境变量中查找数据库信息。 若要在应用服务中设置环境变量,请使用 az webapp config appsettings set
命令创建“应用设置”。
az webapp config appsettings set --settings DBHOST="<mysql-server-name>.mysql.database.chinacloudapi.cn" DBNAME="flexibleserverdb" DBUSER="<username>" DBPASS="<password>"
- 替换新创建的 Azure Database for MySQL 灵活服务器命令的 <mysql-server-name>、<username> 和 <password> 的值。
- 将 <username> 和 <password> 替换为命令也为你生成的凭据。
- 资源组和应用名称是从“.azure/config”文件中的缓存值中提取的。
- 此命令会创建名为 DBHOST、DBNAME、DBUSER 和 DBPASS 的设置。 如果应用程序代码对数据库信息使用了不同的名称,则如代码中所述,对应用设置使用这些名称。
将 Web 应用配置为允许来自虚拟网络中的所有出站连接。
az webapp config set --name mywebapp --resource-group myresourcesourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'
不同的虚拟网络中的应用服务 Web 应用和 Azure Database for MySQL 灵活服务器实例
如果已在不同的虚拟网络 (VNet) 中创建了应用服务应用和 Azure Database for MySQL 灵活服务器实例,则需要执行以下两个步骤来建立无缝连接:
- 使用 VNet 对等互连来连接两个 VNet(本地或全局)。 请参阅使用虚拟网络对等互连来连接虚拟网络指南。
- 使用虚拟网络链接将 Azure Database for MySQL 灵活服务器实例的专用 DNS 区域链接到 Web 应用的 VNet。 如果使用 Azure 门户或 Azure CLI 在 VNet 中创建 Azure Database for MySQL 灵活服务器实例,则系统会使用提供的服务器名称为订阅自动预配一个新的专用 DNS 区域。 导航到 Azure Database for MySQL 灵活服务器实例的专用 DNS 区域,并按照《如何将专用 DNS 区域链接到虚拟网络》指南设置虚拟网络链接。
清理资源
使用以下命令清除在此教程中创建的所有资源。 此命令将删除这一资源组中的所有资源。
az group delete -n myresourcegroup