教程:在虚拟网络中创建 Azure Database for PostgreSQL 灵活服务器和应用服务 Web 应用
适用于:Azure Database for PostgreSQL - 灵活服务器
本教程介绍如何在虚拟网络中使用 Azure Database for PostgreSQL 灵活服务器创建 Azure 应用服务 Web 应用。
在本教程中,将了解如何:
- 在虚拟网络中创建 Azure Database for PostgreSQL 灵活服务器实例
- 创建 Web 应用
- 将 Web 应用添加到虚拟网络
- 从 Web 应用连接到 Azure Database for MySQL 灵活服务器
先决条件
如果没有 Azure 订阅,请在开始前创建一个试用帐户。
在本地安装 Azure CLI 2.0 或更高版本。 若要查看安装的版本,请运行
az --version
命令。使用 az login 命令登录到你的帐户。 记下与订阅名称相对应的命令输出中的 id 属性。
az login
如果有多个订阅,请选择应计费的资源所在的相应订阅。 使用 az account set 命令选择帐户下的特定订阅 ID。
az account set --subscription <subscription ID>
在新的虚拟网络中创建 Azure Database for PostgreSQL 灵活服务器实例
使用以下命令在虚拟网络 (VNET) 中创建专用 Azure Database for PostgreSQL 灵活服务器实例:
az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location chinanorth3
此命令将执行以下操作,可能需要花几分钟的时间:
- 创建资源组(如果尚未存在)。
- 生成服务器名称(如果未提供)。
- 为 Azure Database for PostgreSQL 灵活服务器实例创建虚拟网络和子网。
- 创建服务器的管理员用户名和密码(如果未提供)。
- 创建一个名为 postgres 的空数据库。
下面是示例输出。
Creating Resource Group 'demoresourcegroup'...
Creating new Vnet "demoappvnet" in resource group "demoresourcegroup"
Creating new Subnet "Subnetdemoserverpostgres" in resource group "demoresourcegroup"
Creating a private dns zone demoserverpostgres.private.postgres.database.chinacloudapi.cn in resource group "demoresourcegroup"
Creating PostgreSQL Server 'demoserverpostgres' in group 'demoresourcegroup'...
Your server 'demoserverpostgres' is using sku 'Standard_D2s_v3' (Paid Tier). Please refer to https://www.azure.cn/pricing/details/postgresql/ for pricing details
Creating PostgreSQL database 'flexibleserverdb'...
Make a note of your password. If you forget, you would have to reset your password with "az postgres flexible-server update -n demoserverpostgres -g demoresourcegroup -p <new-password>".
Try using 'az postgres flexible-server connect' command to test out connection.
{
"connectionString": "postgresql://generated-username:generated-password@demoserverpostgres.postgres.database.chinacloudapi.cn/postgres?sslmode=require",
"host": "demoserverpostgres.postgres.database.chinacloudapi.cn",
"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/demoserverpostgres",
"location": "China North 3",
"password": "generated-password",
"resourceGroup": "demoresourcegroup",
"skuname": "Standard_D2s_v3",
"subnetId": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.Network/virtualNetworks/demoappvnet/subnets/Subnetdemoserverpostgres",
"username": "generated-username",
"version": "12"
}
创建 Web 应用
在本部分中,将在应用服务应用中创建应用主机,将此应用连接到 Azure Database for PostgreSQL 灵活服务器数据库,然后将代码部署到该主机。 在终端中,请确保你位于应用程序代码的存储库根路径。 注意:基本计划不支持 VNET 集成。 使用“标准”或“高级”。
使用 az webapp up 命令创建应用服务应用(主机进程)。
az webapp up --resource-group demoresourcegroup --location chinanorth3 --plan testappserviceplan --sku P2V2 --name mywebapp
注意
- 对于 --location 参数,请使用与上一节中的数据库相同的位置。
- 将 <app-name> 替换为在整个 Azure 中唯一的名称。 <app-name> 允许的字符包括“A-Z”、“0-9”和“-”。 良好的模式是结合使用公司名称和应用标识符。
此命令将执行以下操作,可能需要花几分钟的时间:
- 创建资源组(如果尚未存在)。 (在此命令中,你将使用之前在其中创建数据库的同一资源组。)
- 创建应用服务应用(如果不存在)。
- 为应用启用默认日志记录(如果尚未启用)。
- 在启用了生成自动化的情况下,使用 ZIP 部署上传存储库。
为 Web 应用创建子网
在启用 VNET 集成之前,需要具备委托给应用服务 Web 应用的子网。 创建子网前,请查看数据库子网地址以避免对 Web 应用子网使用相同的地址前缀。
az network vnet show --resource-group demoresourcegroup -n demoappvnet
运行以下命令,在创建 Azure Database for PostgreSQL 灵活服务器实例的同一个虚拟网络中创建新的子网。 更新地址前缀以避免与 Azure Database for PostgreSQL 灵活服务器子网冲突。
az network vnet subnet create --resource-group demoresourcegroup --vnet-name demoappvnet --name webappsubnet --address-prefixes 10.0.1.0/24 --delegations Microsoft.Web/serverFarms
将 Web 应用添加到虚拟网络
使用 az webapp vnet-integration 命令向 webapp 添加区域虚拟网络集成。
az webapp vnet-integration add --resource-group demoresourcegroup -n mywebapp --vnet demoappvnet --subnet webappsubnet
配置环境变量以连接数据库
现在将代码部署到应用服务后,下一步是将应用连接到 Azure 中的 Azure Database for PostgreSQL 灵活服务器实例。 应用代码需要在多个环境变量中查找数据库信息。 若要在应用服务中设置环境变量,需要使用 az webapp config appsettings set 命令。
az webapp config appsettings set --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.chinacloudapi.cn" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>"
- 替换新创建的 Azure Database for PostgreSQL 灵活服务器实例命令的 postgres-server-name、username 和 password。
- 将 <username> 和 <password> 替换为命令也为你生成的凭据。
- 资源组和应用名称是从“.azure/config”文件中的缓存值中提取的。
- 此命令会创建名为 DBHOST、DBNAME、DBUSER* 和 DBPASS 的设置。 如果应用程序代码对数据库信息使用了不同的名称,则对应用设置使用这些名称,如代码中所述。
将 Web 应用配置为允许来自虚拟网络中的所有出站连接。
az webapp config set --name mywebapp --resource-group demoresourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'
清理资源
使用以下命令清除在此教程中创建的所有资源。 此命令将删除这一资源组中的所有资源。
az group delete -n demoresourcegroup