Compartir a través de


Tutorial: Creación de una instancia de servidor flexible de Azure Database for PostgreSQL con App Services Web App en la red virtual

SE APLICA A: Azure Database for PostgreSQL con servidor flexible

En este tutorial se muestra cómo crear una aplicación web de Azure App Service con un servidor flexible de Azure Database for PostgreSQL dentro de una Red virtual .

En este tutorial, aprenderá a:

  • Creación de una instancia de servidor flexible de Azure Database for PostgreSQL en una red virtual
  • Creación de una aplicación web
  • Adición de una aplicación web a la red virtual
  • Conexión al servidor flexible de Azure Database for PostgreSQL desde la aplicación web

Requisitos previos

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

  • Instale la versión 2.0 o posterior de la CLI de Azure localmente (o use Azure Cloud Shell que tenga la CLI preinstalada). Para ver la versión instalada, ejecute el comando az --version.

  • Inicie sesión en su cuenta con el comando az login. Anote la propiedad id de la salida del comando para el nombre de la suscripción correspondiente.

    az login
    
  • Si tiene varias suscripciones, elija la suscripción adecuada en la que se debe facturar el recurso. Seleccione el identificador de suscripción específico en su cuenta mediante el comando az account set.

    az account set --subscription <subscription ID>
    

Creación de una instancia de servidor flexible de Azure Database for PostgreSQL en una nueva red virtual

Cree una instancia de servidor flexible de Azure Database for PostgreSQL privada dentro de una red virtual (VNET) mediante el comando siguiente:

az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2

Este comando realiza las siguientes acciones, que pueden tardar algunos minutos:

  • Cree el grupo de recursos si todavía no existe.
  • Genera un nombre de servidor si no se proporciona.
  • Crea una red virtual y una subred para la instancia de servidor flexible de Azure Database for PostgreSQL.
  • Crea el nombre de usuario de administrador y la contraseña del servidor si no se proporciona.
  • Crea una base de datos vacía llamada postgres.

Esta es la salida de ejemplo.

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.azure.com 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://aka.ms/postgres-pricing 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.azure.com/postgres?sslmode=require",
  "host": "demoserverpostgres.postgres.database.azure.com",
  "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/demoserverpostgres",
  "location": "East US",
  "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"
}

Crear una aplicación web de

En esta sección, creará un host de aplicación en la aplicación de App Service, conectará esta aplicación a la base de datos de servidor flexible de Azure Database for PostgreSQL y, a continuación, implementará el código en ese host. Asegúrese de que se encuentra en la raíz del repositorio correspondiente al código de la aplicación en el terminal. Nota El plan básico no admite la integración con red virtual. Use Estándar o Premium.

Cree una aplicación de App Service (el proceso de host) con el comando az webapp up.

az webapp up --resource-group demoresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp

Nota:

  • Para el argumento --location, use la misma ubicación que usó para la base de datos en la sección anterior.
  • Reemplace <app-name> por un nombre que sea único en Azure. Los caracteres permitidos para <app-name> son A-Z, 0-9 y -. Un buen patrón es usar una combinación del nombre de la empresa y un identificador de la aplicación.

Este comando realiza las siguientes acciones, que pueden tardar algunos minutos:

  • Cree el grupo de recursos si todavía no existe. (En este comando se usa el mismo grupo de recursos en el que se creó la base de datos anterior).
  • Cree la aplicación de App Service, si no existe.
  • Habilite el registro predeterminado de la aplicación, si aún no está habilitado.
  • Cargue el repositorio mediante la implementación del archivo ZIP con la automatización de compilación habilitada.

Creación de una subred para Web Apps

Antes de habilitar la integración con la red virtual, debe tener una subred que esté delegada en App Service Web Apps. Antes de crear la subred, vea la dirección de la subred de la base de datos para evitar el uso del mismo prefijo de dirección para la subred de la aplicación web.

az network vnet show --resource-group demoresourcegroup -n demoappvnet

Ejecute el comando siguiente para crear una nueva subred en la misma red virtual que se creó la instancia de servidor flexible de Azure Database for PostgreSQL. Actualice el prefijo de dirección para evitar conflictos con la subred del servidor flexible de 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

Adición de una aplicación web a la red virtual

Use el comando az webapp vnet-integration para agregar una integración de red virtual regional a una aplicación web.

az webapp vnet-integration add --resource-group demoresourcegroup -n  mywebapp --vnet demoappvnet --subnet webappsubnet

Configuración de las variables de entorno para conectarse a la base de datos

Con el código implementado ahora en App Service, el siguiente paso es conectar la aplicación a la instancia de servidor flexible de Azure Database for PostgreSQL en Azure. El código de la aplicación espera encontrar información de la base de datos en numerosas variables de entorno. Para establecer variables de entorno en App Service, use el comando az webapp config appsettings set.

  
az webapp config appsettings set  --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>" 
  • Reemplace postgres-server-name,nombre de usuario,contraseña para el comando de instancia de servidor flexible de Azure Database for PostgreSQL recién creado.
  • Reemplace <username> y <password> por las credenciales que el comando también ha generado automáticamente.
  • El grupo de recursos y el nombre de la aplicación se extraen de los valores almacenados en caché del archivo .azure/config.
  • El comando crea valores de configuración denominados DBHOST, DBNAME, DBUSER* y DBPASS. Si el código de la aplicación usa un nombre diferente para la información de la base de datos, use esos nombres para la configuración de la aplicación, como se mencionó en el código.

Configure la aplicación web para permitir todas las conexiones salientes desde dentro de la red virtual.

az webapp config set --name mywebapp --resource-group demoresourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'

Limpieza de recursos

Limpie todos los recursos que creó en el tutorial mediante el siguiente comando. Este comando elimina todos los recursos del grupo de recursos.

az group delete -n demoresourcegroup

Pasos siguientes