Share via


Tutorial: Uso de Service Connector para compilar una aplicación de Django con Postgres en Azure App Service

Nota:

En este tutorial, usará el conector de servicios que simplifica el proceso de conectar una aplicación web a un servicio de base de datos. Este tutorial es una modificación del tutorial de App Service, por lo que puede que vea algunas similitudes. Consulte la sección Configuración de variables de entorno para conectar la base de datos para ver cuándo entra en juego el conector de servicios y simplifica el proceso de conexión que se proporciona en el tutorial de App Service.

En este tutorial se muestra cómo implementar una aplicación web Python Django controlada por datos en Azure App Service y cómo conectarla a una base de datos de Azure Database for PostgreSQL: servidor flexible.

En este tutorial, se usa la CLI de Azure para completar las siguientes tareas:

  • Configurar el entorno inicial con Python y la CLI de Azure
  • Creación de una base de datos de Azure Database for PostgreSQL: servidor flexible
  • Implementación de código en Azure App Service y conexión a PostgreSQL: servidor flexible
  • Actualizar el código y volver a implementarlo
  • Visualización de los registros de diagnóstico
  • Administrar la aplicación web en Azure Portal

Configuración del entorno inicial

  1. Instale Python 3.8 o una versión posterior. Para comprobar si la versión de Python es 3.8 o posterior, ejecute el código siguiente en una ventana de terminal:

    python3 --version
    
  2. Instale la CLI de Azure 2.30.0 o posterior. Para comprobar si la versión de la CLI de Azure es 2.30.0 o posterior, ejecute el comando az --version. Si necesita actualizar, ejecute az upgrade (requiere la versión 2.30.0 o posterior).

  3. Inicie sesión en Azure mediante la CLI con az login. Este comando abre un explorador que recopila las credenciales. Cuando el comando finaliza, muestra una salida JSON que contiene información sobre las suscripciones. Una vez que haya iniciado sesión, puede ejecutar comandos de Azure con la CLI de Azure para trabajar con los recursos de su suscripción.

Clonación o descarga de la aplicación de ejemplo

Clone el repositorio de ejemplo:

git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django.git

Vaya a la siguiente carpeta:

cd serviceconnector-webapp-postgresql-django

Use la rama de servidor flexible del ejemplo, que contiene algunos cambios necesarios, como cómo se establece la dirección URL del servidor de bases de datos y se agrega 'OPTIONS': {'sslmode': 'require'} a la configuración de la base de datos de Django según lo requiera el servidor flexible de Azure PostgreSQL.

git checkout flexible-server

El ejemplo djangoapp contiene la aplicación en Django de sondeos controlada por datos que se obtiene al seguir Creación de la primera aplicación Django de la documentación de Django. La aplicación completa se proporciona aquí para su comodidad.

El ejemplo también se ha modificado para ejecutarse en un entorno de producción, como App Service:

  • La configuración para producción está en el archivo azuresite/production.py. Los valores del desarrollo están en el archivo azuresite/settings.py.
  • La aplicación usa la configuración de producción cuando la variable de entorno WEBSITE_HOSTNAME está establecida. Azure App Service establece automáticamente esta variable en la dirección URL de la aplicación web, como msdocs-django.azurewebsites.net.

Los valores de producción son específicos de la configuración de Django para ejecutarse en cualquier entorno de producción y no son específicos de App Service. Para obtener más información, consulte la lista de implementación de Django. Consulte también Configuración de producción para Django en Azure para los detalles de algunos de los cambios.

¿Tiene problemas? Póngase en contacto con nosotros.

Creación de una base de datos de Postgres en Azure

  1. Habilite el almacenamiento en caché de parámetros con la CLI de Azure para que no sea necesario proporcionar esos parámetros con cada comando. (Los valores almacenados en caché se guardan en la carpeta .azure).

    az config param-persist on 
    
  2. Cree un grupo de recursos (puede cambiarle el nombre, si lo desea). El nombre del grupo de recursos se almacena en caché y se aplica automáticamente a los comandos posteriores.

    az group create --name ServiceConnector-tutorial-rg --location eastus
    
  3. Cree el servidor de bases de datos (el proceso tarda unos minutos):

    az postgres flexible-server create --sku-name Standard_B1ms --public-access all
    

    Si no se reconoce el comando az, asegúrese de que tiene instalada la CLI de Azure tal y como se describe en Configuración del entorno inicial.

    El comando az postgres flexible-server create realiza las siguientes acciones, que pueden tardar unos minutos:

    • Cree un grupo de recursos predeterminado si aún no hay un nombre almacenado en caché.
    • Cree un servidor flexible de PostgreSQL:
      • De forma predeterminada, el comando usa un nombre generado tipo server383813186. Puede especificar su propio nombre con el parámetro --name. El nombre debe ser único en todo Azure.
      • El comando usa el plan de tarifa Standard_B1ms de menor costo. Omita el argumento --sku-name para usar el nivel Standard_D2s_v3 predeterminado.
      • El comando usa el grupo de recursos y la ubicación almacenados en caché del comando az group create anterior, que en este ejemplo es el grupo de recursos ServiceConnector-tutorial-rg de la región eastus.
    • Cree una cuenta de administrador con nombre de usuario y contraseña. Puede especificar estos valores directamente con los parámetros --admin-user y --admin-password.
    • Cree una base de datos que se llama flexibleserverdb de manera predeterminada. Puede especificar otro nombre de base de datos con el parámetro --database-name.
    • Habilite el acceso público completo, que puede controlar mediante el parámetro --public-access.
  4. Cuando se complete el comando, copie la salida JSON del comando en un archivo, ya que necesita valores de la salida más adelante en este tutorial, específicamente el host, el nombre de usuario y la contraseña, junto con el nombre de la base de datos.

¿Tiene problemas? Póngase en contacto con nosotros.

Implementación del código en Azure App Service

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 Postgres y, a continuación, implementará el código en ese host.

Creación de la aplicación de App Service

  1. En el terminal, asegúrese de estar en la carpeta del repositorio djangoapp que contiene el código de la aplicación.

  2. Cambie a la rama flexible-server de la aplicación de ejemplo. Esta rama contiene la configuración específica necesaria para el servidor flexible de PostgreSQL:

    git checkout flexible-server
    
  3. Ejecute el siguiente comando az webapp up para crear el host de App Service para la aplicación:

    az webapp up --name <app-name> --sku B1 
    

    Este comando realiza las siguientes acciones, que pueden tardar unos minutos, para lo que usa el grupo de recursos y la ubicación almacenados en caché del comando az group create anterior (el grupo Python-Django-PGFlex-rg de la región eastus en este ejemplo).

    • Cree un plan de App Service en el plan de tarifa Básico (B1). Puede omitir --sku para usar los valores predeterminados.
    • Cree la aplicación de App Service.
    • Habilite el registro predeterminado para la aplicación.
    • Cargue el repositorio mediante la implementación del archivo ZIP con la automatización de compilación habilitada.

Tras una implementación correcta, el comando genera la salida JSON como en el ejemplo siguiente:

Captura de pantalla del terminal, en la que se muestra una salida de ejemplo del comando az webapp up.

¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.

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

Con el código ahora implementado en App Service, el paso siguiente consiste en conectar la aplicación a la base de datos de Postgres en Azure.

El código de la aplicación espera encontrar la información de la base de datos en cuatro variables de entorno llamadas AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME, AZURE_POSTGRESQL_USER y AZURE_POSTGRESQL_PASS.

Para establecer variables de entorno en App Service, cree "configuración de la aplicación" con el siguiente comando az connection create.

az webapp connection create postgres-flexible --client-type django

El grupo de recursos, el nombre de la aplicación y el nombre de la base de datos se extraen de los valores almacenados en caché. Durante la ejecución de este comando, debe proporcionar la contraseña de administrador de la base de datos de Postgres.

  • El comando crea los valores denominados "AZURE_POSTGRESQL_HOST", "AZURE_POSTGRESQL_NAME", "AZURE_POSTGRESQL_USER" y "AZURE_POSTGRESQL_PASS", según lo esperado por el código de la aplicación.
  • Si olvidó sus credenciales de administrador, el comando le guiará para restablecerla.

Nota

Si ve el mensaje de error "La suscripción no está registrada para usar Microsoft.ServiceLinker", ejecute az provider register -n Microsoft.ServiceLinker para registrar el proveedor de recursos del conector de servicio y vuelva a ejecutar el comando de conexión.

En el código de Python, tiene acceso a esta configuración como variables de entorno con instrucciones como os.environ.get('AZURE_POSTGRESQL_HOST'). Para obtener más información, consulte Acceso a variables de entorno.

¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.

Ejecución de migraciones de base de datos de Django

Las migraciones de bases de datos de Django garantizan que el esquema de la base de datos de PostgreSQL en Azure coincida con el del código.

  1. Ejecute az webapp ssh para abrir una sesión SSH para la aplicación web en el explorador:

    az webapp ssh
    
  2. En la sesión de SSH, ejecute los siguientes comandos:

    # Run database migrations
    python manage.py migrate
    
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    

    Si encuentra algún error relacionado con la conexión a la base de datos, compruebe los valores de la configuración de la aplicación creada en la sección anterior.

  3. El comando createsuperuser le pide las credenciales de superusuario. A los efectos de este tutorial, use el nombre de usuario predeterminado root, presione ENTRAR en la dirección de correo electrónico para que quede en blanco y escriba Pollsdb1 como contraseña.

  4. Si aparece un error que indica que la base de datos está bloqueada, asegúrese de haber ejecutado el comando az webapp settings en la sección anterior. Sin esa configuración, el comando de migración no se puede comunicar con la base de datos, lo que provoca el error.

¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.

Creación de una pregunta de sondeo en la aplicación

  1. Abra el sitio web de la aplicación. La aplicación debe mostrar los mensajes "Polls app" (Aplicación de sondeos) y "No polls are available" (No hay sondeos disponibles) porque todavía no hay sondeos específicos en la base de datos.

    az webapp browse
    

    Si ve el mensaje "Application Error" (Error de aplicación), es probable que no haya creado la configuración necesaria en el paso anterior, "Configuración de las variables de entorno para conectarse a la base de datos", o que dichos valores contengan errores. Ejecute el comando az webapp config appsettings list para comprobar la configuración.

    Después de actualizar la configuración para corregir los errores, espere un minuto para que la aplicación se reinicie y, después, actualice el explorador.

  2. Vaya a la página de administración de la aplicación web; para ello, anexe /admin a la dirección URL, como en http://<app-name>.azurewebsites.net/admin. Inicie sesión con las credenciales de superusuario de Django de la sección anterior (root y Pollsdb1). En Polls (Sondeos), seleccione Add (Agregar) junto a Questions (Preguntas) y cree una pregunta de sondeo con algunas opciones.

  3. Vuelva al sitio web principal (http://<app-name>.azurewebsites.net) para confirmar que ahora se presentan las preguntas al usuario. Responda a las preguntas como desee para generar algunos datos en la base de datos.

¡Enhorabuena! Está ejecutando una aplicación web de Django de Python en Azure App Service para Linux, con una base de datos de Postgres activa.

Nota

App Service detecta un proyecto de Django mediante la búsqueda de un archivo wsgi.py en cada subcarpeta, que manage.py startproject crea de forma predeterminada. Cuando App Service encuentra ese archivo, carga la aplicación web de Django. Para obtener más información, consulte Configuración de una imagen de Python integrada.

Limpieza de recursos

Si desea mantener la aplicación o continuar con más tutoriales, vaya a Pasos siguientes. De lo contrario, para evitar incurrir en cargos continuos, elimine el grupo de recursos creado para este tutorial:

az group delete --name ServiceConnector-tutorial-rg --no-wait

Al eliminar el grupo de recursos, también se desasignan y eliminan todos los recursos que contiene. Asegúrese de que ya no necesita los recursos del grupo antes de usar el comando.

La eliminación de todos los recursos puede llevar tiempo. El argumento --no-wait permite que el comando devuelva resultados inmediatamente.

¿Tiene problemas? Háganoslo saber.

Paso siguiente