Tutorial: Conectar una aplicación web de App Services al Servidor flexible de Azure Database for MySQL en una red virtual
En este tutorial se muestra cómo crear y conectar una aplicación web de Azure App Service a una instancia de servidor flexible de Azure Database for MySQL aislada dentro de las mismas redes virtuales o diferentes.
En este tutorial, aprenderá a:
- Creación de una instancia de servidor flexible de Azure Database for MySQL en una red virtual
- Crear una subred para delegar en App Service y crear una aplicación web
- Adición de una aplicación web a la red virtual
- Conexión al servidor flexible de Azure Database for MySQL desde la aplicación web
- Conexión de una aplicación web y una instancia de servidor flexible de Azure Database for MySQL aislada en redes virtuales diferentes
Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar. Actualmente, con una cuenta gratuita de Azure, puede probar el Servidor flexible de Azure Database for MySQL gratis durante 12 meses. Para más información, consulte Uso de una cuenta gratuita de Azure para probar Azure Database for MySQL: servidor flexible de forma gratuita.
En este artículo es necesario que ejecute la versión 2.0 de la CLI de Azure, o cualquier versión posterior, de forma local. Para ver la versión instalada, ejecute el comando az --version
. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
Deberá iniciar sesión en su cuenta mediante 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. Sustituya la propiedad subscription ID de la salida de az login de su suscripción en el marcador de posición de identificador de suscripción.
az account set --subscription <subscription ID>
Creación de una instancia del servidor flexible de Azure Database for MySQL
Cree una instancia privada del servidor flexible de Azure Database for MySQL dentro de una red virtual (VNET) mediante el comando siguiente:
az mysql flexible-server create --resource-group myresourcegroup --location westus2 --vnet VNETName
Copie la cadena de conexión y el nombre de la red virtual recién creada. 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 alguno.
- Cree una nueva red virtual,
VNETName
para la nueva instancia de servidor flexible de Azure Database for MySQL y subred dentro de esta red virtual para la instancia de servidor flexible de Azure Database for MySQL. Asegúrese de que el nombre sea único. - Crea un nombre de usuario administrador y una contraseña para el servidor, si no se proporciona alguna.
- Crea una base de datos vacía denominada flexibleserverdb.
Nota:
Tome nota de la contraseña que se genera automáticamente si no se proporciona. Si olvida la contraseña, debe restablecerla mediante el comando az mysql flexible-server update
.
Creación de una subred para un punto de conexión de App Service
Ahora necesita una subred que se delegue al punto de conexión de la aplicación web de App Service. Ejecute el comando siguiente para crear una nueva subred en la misma red virtual que se creó la instancia del servidor flexible de 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
Anote el nombre de la red virtual y el nombre de la subred después de este comando, ya que lo necesitará para agregar una regla de integración de red virtual para la aplicación web después de crearla.
Creación de una aplicación web
En esta sección, creará un host de aplicación en la aplicación de App Service y conectará esta aplicación a la base de datos del servidor flexible de Azure Database for MySQL. Asegúrese de que se encuentra en la raíz del repositorio correspondiente al código de la aplicación en el terminal.
Cree una aplicación de App Service (el proceso de host) con el comando az webapp up.
az webapp up --resource-group myresourcegroup --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 único en todo Azure (el punto de conexión del servidor es
https://\<app-name>.azurewebsites.net
). 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. - App Service de nivel Básico no admite la integración con redes virtuales. Utilice el nivel Estándar o Premium.
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).
- Crea el plan de App Service
testappserviceplan
en el plan de tarifa Básico (B1), si no existe. --plan y --sku son opcionales. - 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.
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. Reemplace <nombre de red virtual> y <nombre de subred por la red virtual y el nombre de subred que usa la instancia de servidor flexible de Azure Database for MySQL.
az webapp vnet-integration add -g myresourcegroup -n mywebapp --vnet VNETName --subnet webappsubnetName
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 MySQL en Azure. El código de la aplicación espera encontrar información de la base de datos en una serie de variables de entorno. Para establecer variables de entorno en App Service, cree "configuración de la aplicación" con el comando az webapp config appsettings set
.
az webapp config appsettings set --settings DBHOST="<mysql-server-name>.mysql.database.azure.com" DBNAME="flexibleserverdb" DBUSER="<username>" DBPASS="<password>"
- Reemplace <mysql-server-name>, <nombre de usuario>, y <contraseña> para el comando servidor flexible de Azure Database for MySQL 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 los valores de la aplicación, tal 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 myresourcesourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'
Aplicación web de App Service y instancia de servidor flexible de Azure Database for MySQL en diferentes redes virtuales
Si ha creado la aplicación de App Service y la instancia del servidor flexible de Azure Database for MySQL en diferentes redes virtuales, deberá realizar los dos pasos siguientes para establecer una conexión sin problemas:
- Conectar las dos redes virtuales que usan el emparejamiento de red virtual (local o global). Consulte Conexión de redes virtuales con el emparejamiento de red virtual.
- Vincule la zona DNS privada de la instancia de servidor flexible de Azure Database for MySQL a la red virtual de la aplicación web mediante vínculos de red virtual. Si usa Azure Portal o la CLI de Azure para crear instancias de servidor flexible de Azure Database for MySQL en una red virtual, se aprovisiona automáticamente una nueva zona DNS privada en la suscripción con el nombre del servidor proporcionado. Vaya a la zona DNS privada de la instancia de Servidor flexible de Azure Database for MySQL y siga la guía Cómo vincular la zona DNS privada a una red virtual para configurar un vínculo de red virtual.
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 myresourcegroup