Tutorial: Implementación de una aplicación web de Django con PostgreSQL mediante Azure Portal
Con Azure Portal, puede implementar una aplicación web de Django con Python controlada por datos en Azure App Service y conectarla a una base de datos de Azure Database for PostgreSQL. Puede empezar con un plan de tarifa gratuito que se puede escalar verticalmente en cualquier momento posterior. También puede seleccionar la opción anterior para probar la opción de servidor flexible de PostgresSQL (versión preliminar). La opción de servidor flexible proporciona un mecanismo de implementación más sencillo y menores costos continuos.
Con Azure Portal, puede implementar una aplicación web de Django con Python controlada por datos en Azure App Service y conectarla a una base de datos de Azure Database for PostgreSQL (servidor flexible) (versión preliminar). Puede empezar con un plan de tarifa gratuito que se puede escalar verticalmente en cualquier momento posterior. Si no puede usar la opción de servidor flexible de PostgreSQL (versión preliminar), seleccione la opción de servidor único anterior.
En este caso, el código de la aplicación web procede de un repositorio de GitHub y va a configurar la aplicación web para la implementación continua desde GitHub. Una vez configurada, puede realizar un desarrollo adicional en el equipo local y confirmar los cambios en el repositorio. A continuación, la aplicación web en Azure implementa esos cambios automáticamente.
En este tutorial, se usa Azure Portal para completar las siguientes tareas:
- Aprovisionamiento de una aplicación web en Azure que se implementa desde un repositorio de GitHub
- Aprovisionamiento de un servidor y una base de datos PostgreSQL en Azure y su conexión a la aplicación web.
- Actualización del código y confirmación de los cambios para volver a implementar automáticamente desde GitHub.
- Visualización de los registros de diagnóstico
- Administrar la aplicación web en Azure Portal
También puede usar la versión basada en la CLI de Azure de este tutorial .
- Aprovisionamiento de una aplicación web en Azure que se implementa desde un repositorio de GitHub.
- Aprovisionamiento de un servidor flexible y una base de datos PostgreSQL en Azure y su conexión a la aplicación web.
- Actualización del código y confirmación de los cambios para volver a implementar automáticamente desde GitHub.
- Visualización de los registros de diagnóstico.
- Administración de la aplicación web en Azure Portal.
También puede usar la versión basada en la CLI de Azure de este tutorial .
Bifurcar el repositorio de ejemplo
En un explorador, vaya a https://github.com/Azure-Samples/djangoapp y bifurque el repositorio en su propia cuenta de GitHub.
Va a crear una bifurcación de este repositorio para que pueda realizar cambios y volver a implementar el código en un paso posterior.
(Opcional) Acerca del ejemplo: 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. El ejemplo también se modifica mediante la lista de comprobación de la implementación de Django para su ejecución en un entorno de producción como Azure App Service. (Estos cambios son para cualquier entorno de producción y no son específicos de Azure).
- La configuración para producción está en el archivo azuresite/production.py. Los detalles de 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_HOSTNAMEestá establecida. Azure App Service establece automáticamente esta variable en la dirección URL de la aplicación web, comomsdocs-django.azurewebsites.net.
¿Tiene problemas? Cuéntenoslo.
Aprovisionamiento del servidor de base de datos PostgreSQL en Azure
Abra Azure Portal.
Seleccione Crear un recurso, lo que abre la página Nuevo.
Busque y seleccione Azure Database for PostgreSQL y, a continuación, seleccione Crear.
En la página siguiente, seleccione Crear en Un solo servidor.
En la página Un solo servidor, escriba la siguiente información:
Campo Valor Suscripción Seleccione la suscripción que desea usar si es diferente de la predeterminada. Resource group Seleccione Crear nuevo y escriba "DjangoPostgres-Tutorial-rg". Nombre de servidor Nombre para el servidor de bases de datos que sea único en Azure (la dirección URL del servidor de bases de datos será https://<server-name>.postgres.database.azure.com). Los caracteres permitidos sonA-Z,0-9y-. Un buen patrón consiste en usar una combinación del nombre de la empresa y un identificador del servidor.Origen de datos None Location Seleccione una ubicación cerca de usted. Versión Mantenga el valor predeterminado (que es la versión más reciente). Proceso y almacenamiento Seleccione Configurar servidor y, a continuación, seleccione Básico y Gen 5. Establezca Núcleo virtual en 1, establezca Almacenamiento en 5 GB y, a continuación, seleccione Aceptar. Estas opciones aprovisionan el servidor con el menor costo disponible para PostgreSQL en Azure. También puede tener crédito en la cuenta de Azure que cubra el costo del servidor. Nombre de usuario del administrador, Contraseña, Confirmar contraseña Escriba las credenciales de una cuenta de administrador en el servidor de base de datos. Anote estas credenciales, ya que las necesitará más adelante en este tutorial. Nota: No use el carácter $en el nombre de usuario ni la contraseña. Más adelante creará variables de entorno con estos valores, donde el carácter$tiene un significado especial dentro del contenedor de Linux que se usa para ejecutar aplicaciones de Python.Seleccione Revisar y crear y, a continuación, Crear. Azure tarda unos minutos en aprovisionar la aplicación web.
Una vez completado el aprovisionamiento, seleccione Ir al recurso para abrir la página de información general del servidor de bases de datos.
Aprovisionamiento del servidor de base de datos de la opción de servidor flexible de PostgreSQL en Azure
Abra Azure Portal.
Seleccione Crear un recurso, lo que abre la página Nuevo.
Busque y seleccione Azure Database for PostgreSQL flexible servers (Servidores flexibles de Azure Database for PostgreSQL) y, a continuación, seleccione Crear.
En la página siguiente, vaya al cuadro Flexible server (Preview) (Servidor flexible [versión preliminar]) y seleccione Create (Crear).
En la página Un solo servidor, escriba la siguiente información:
Campo Valor Suscripción Seleccione la suscripción que desea usar si es diferente de la predeterminada. Resource group Seleccione Crear nuevo y escriba "DjangoPostgres-Tutorial-rg". Nombre de servidor Nombre para el servidor de bases de datos que sea único en Azure (la dirección URL del servidor de bases de datos será https://<server-name>.postgres.database.azure.com). Los caracteres permitidos sonA-Z,0-9y-. Un buen patrón consiste en usar una combinación del nombre de la empresa y un identificador del servidor.Region Seleccione una ubicación cerca de usted. Tipo de carga de trabajo Development (Desarrollo) si solo está experimentando; de lo contrario, una opción adecuada de Production (Producción). Proceso y almacenamiento Deje establecido el valor predeterminado, Burstable, B1ms (Ampliable, B1ms), que es la opción menos costosa, a menos que desee un mayor rendimiento. Zona de disponibilidad, alta disponibilidad, versión de PostgreSQL Deje establecidos los valores predeterminados. Nombre de usuario del administrador, Contraseña, Confirmar contraseña Escriba las credenciales de una cuenta de administrador en el servidor de base de datos. Anote estas credenciales, ya que las necesitará más adelante en este tutorial. Nota: No use el carácter $en el nombre de usuario ni la contraseña. Más adelante creará variables de entorno con estos valores, donde el carácter$tiene un significado especial dentro del contenedor de Linux que se usa para ejecutar aplicaciones de Python.Seleccione Siguiente: Redes y, en esa página, establezca Método de conectividad en Acceso público y, a continuación, en Reglas de firewall, active la casilla Permitir el acceso público desde cualquier servicio de Azure dentro de Azure a este servidor.
Seleccione Revisar y crear y, a continuación, Crear. Azure tarda unos minutos en aprovisionar el servidor de bases de datos.
Una vez completado el aprovisionamiento, seleccione Ir al recurso para abrir la página de información general del servidor de bases de datos.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Creación de la base de datos pollsdb en el servidor PostgreSQL
En esta sección, se conectará al servidor de base de datos en Azure Cloud Shell y usará un comando de PostgreSQL para crear la base de datos "pollsdb" en el servidor. El código de la aplicación de ejemplo espera la existencia de esta base de datos.
En la página de información general del servidor PostgreSQL, seleccione Seguridad de la conexión (en Ajustes en el lado izquierdo).

En Allow access to Azure service (Permitir acceso al servicio de Azure), seleccione Yes (Sí); seleccione el botón etiquetado Add 0.0.0.0 - 255.255.255.255 (Agregar 0.0.0.0 - 255.255.255.255) y, a continuación, seleccione Continue (Continuar) en el mensaje emergente que aparece, seguido de Save (Guardar) en la parte superior de la página. Estas acciones agregan una regla que le permite conectarse al servidor de bases de datos desde Cloud Shell, así como mediante SSH (como hará en una sección posterior para ejecutar las migraciones del modelo de datos de Django).
Seleccione el icono de Cloud Shell de la parte superior de la ventana para abrir Azure Cloud Shell desde Azure Portal:

En Cloud Shell, ejecute el comando siguiente:
psql --host=<server-name>.postgres.database.azure.com --port=5432 --username=<user-name>@<server-name> --dbname=postgresReemplace
<server-name>y<user-name>por los nombres utilizados en la sección anterior al configurar el servidor. Tenga en cuenta que el valor de nombre de usuario completo que requiere Postgres es<user-name>@<server-name>.Para copiar el comando anterior y pegarlo en Cloud Shell, haga clic con el botón derecho y, a continuación, seleccione Pegar.
Escriba la contraseña del administrador cuando se le solicite.
Cuando el shell se conecte correctamente, debería ver el símbolo del sistema
postgres=>. Este mensaje indica que está conectado a la base de datos administrativa predeterminada llamada "postgres". (La base de datos "postgres" no está pensada para su uso por parte de la aplicación).En el símbolo del sistema, ejecute el comando
CREATE DATABASE pollsdb;. Asegúrese de incluir el punto y coma final, que completa el comando.Si la base de datos se crea correctamente, el comando debe mostrar
CREATE DATABASE. Para comprobar que se ha creado la base de datos, ejecute\c pollsdb. Este comando debe cambiar el símbolo del sistema apollsdb=>, lo que indica que la operación se ha realizado correctamente.Ejecute el comando
exitpara salir de psql.
Seleccione el icono de Cloud Shell de la parte superior de la ventana para abrir Azure Cloud Shell desde Azure Portal:

En Cloud Shell, ejecute el comando siguiente:
psql --host=<server-url>.postgres.database.azure.com --port=5432 --username=<user-name> --dbname=postgresReemplace
<server-name>y<user-name>por los nombres utilizados en la sección anterior al configurar el servidor.Puede copiar el comando anterior y pegarlo en Cloud Shell; para ello, haga clic con el botón derecho y seleccione Pegar y, a continuación, edite el comando para reemplazar los valores necesarios.
Escriba la contraseña del administrador cuando se le solicite.
Cuando el shell se conecte correctamente, debería ver el símbolo del sistema
postgres=>. Este mensaje indica que está conectado a la base de datos administrativa predeterminada llamada "postgres". (La base de datos "postgres" no está pensada para su uso por parte de la aplicación).En el símbolo del sistema, ejecute el comando
CREATE DATABASE pollsdb;. Asegúrese de incluir el punto y coma final, que completa el comando.Si la base de datos se crea correctamente, el comando debe mostrar
CREATE DATABASE. Para comprobar que se ha creado la base de datos, ejecute\c pollsdb. Este comando debe cambiar el símbolo del sistema apollsdb=>, lo que indica que la operación se ha realizado correctamente.Ejecute el comando
exitpara salir de psql.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Aprovisionamiento de la aplicación web en Azure
Abra una nueva ventana o pestaña del explorador y vaya a Azure Portal. Use una nueva pestaña para mantener abierta la página de la base de datos, ya que tendrá que transferir parte de la información de la página de la base de datos a la página de la aplicación web.
Seleccione Crear un recurso, lo que abre la página Nuevo.
Busque y seleccione Aplicación web y luego seleccione Crear.
En la página Crear aplicación web, escriba la información siguiente:
Campo Valor Suscripción Seleccione la suscripción que desea usar si es diferente de la predeterminada. Resource group Seleccione el grupo "DjangoPostgres-Tutorial-rg" que creó en la sección anterior. Nombre de la aplicación Nombre para la aplicación web que sea único en Azure (la dirección URL de la aplicación es https://<app-name>.azurewebsites.net). Los caracteres permitidos sonA-Z,0-9y-. Un buen patrón consiste en usar una combinación del nombre de la empresa y un identificador de la aplicación.Publicar Seleccione Código. Pila en tiempo de ejecución Seleccione Python 3.8 en la lista desplegable. Region Seleccione una ubicación cerca de usted. Plan de Linux El portal rellenará este campo con un nombre de plan de App Service basado en el grupo de recursos. Si desea cambiar el nombre, seleccione Crear nuevo. SKU y tamaño Para obtener el mejor rendimiento, utilice el plan predeterminado, aunque incurrirá en cargos en su suscripción. Para evitar los cargos, seleccione Cambiar tamaño, seleccione Desarrollo/pruebas, seleccione B1 (gratis durante 30 días) y, a continuación, seleccione Aplicar. Puede escalar el plan más adelante para mejorar el rendimiento. Seleccione Revisar y crear y, a continuación, seleccione Crear. Azure tarda unos minutos en aprovisionar la aplicación web.
Una vez completado el aprovisionamiento, seleccione Ir al recurso para abrir la página de información general de la aplicación web. Mantenga abierta esta ventana o pestaña del explorador para los pasos posteriores.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Conectar la aplicación a la base de datos
En esta sección, va a crear la configuración que necesita la aplicación web para conectarse a la base de datos pollsdb. Esta configuración aparece en el código de la aplicación como variables de entorno. (Para más información, consulte Acceso a las variables de entorno).
En la página del portal de la aplicación web de la sección anterior, seleccione Configuración (en Configuración en el lado izquierdo) y, a continuación, seleccione Configuración de la aplicación en la parte superior de la página.

Use el botón Nueva configuración de la aplicación para crear la configuración de cada uno de los siguientes valores (que se esperan en el ejemplo djangoapp):
Nombre del valor Value DBHOST Nombre del servidor de bases de datos de la sección anterior; es decir, la parte <server-name>de la dirección URL del servidor que precede a.postgres.database.azure.com. (El código de azuresite/production.py construye automáticamente la dirección URL completa).DBNAME pollsdbDBUSER Nombre de usuario del administrador que se usó al aprovisionar la base de datos. (El código de ejemplo agrega automáticamente la @<server-name>parte; consulte@<server-name>DBPASS Contraseña del administrador que creó anteriormente. Como se indicó anteriormente, no debe usar el carácter
$en el nombre de usuario ni la contraseña porque ese carácter se trata como un carácter de escape dentro de las variables de entorno en el contenedor de Linux que hospeda las aplicaciones de Python.Seleccione Guardar y, después, Continuar para aplicar la configuración.
Importante
Es fundamental seleccionar Guardar después de realizar cambios en la configuración. Cualquier configuración que cree con el botón Nueva configuración de la aplicación no se aplicará hasta que use el botón Guardar.
En la página del portal de la aplicación web de la sección anterior, seleccione Configuración (en Configuración en el lado izquierdo) y, a continuación, seleccione Configuración de la aplicación en la parte superior de la página.

Use el botón Nueva configuración de la aplicación para crear la configuración de cada uno de los siguientes valores (que se esperan en el ejemplo djangoapp):
Nombre del valor Value DBHOST Dirección URL del servidor de bases de datos de la sección anterior; por ejemplo, <server-name>.postgres.database.azure.com.DBNAME pollsdbDBUSER Nombre de usuario del administrador que se usó al aprovisionar la base de datos. DBPASS Contraseña del administrador que creó anteriormente. Como se indicó anteriormente, no utilice el carácter
$en el nombre de usuario ni la contraseña porque ese carácter se trata como un carácter de escape dentro de las variables de entorno en el contenedor de Linux que hospeda las aplicaciones de Python.Seleccione Guardar y, después, Continuar para aplicar la configuración.
Importante
Es fundamental seleccionar Guardar después de realizar cambios en la configuración. Cualquier configuración que cree con el botón Nueva configuración de la aplicación no se aplicará hasta que use el botón Guardar.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Implementación del código de la aplicación en la aplicación web desde un repositorio
Con la base de datos y la configuración de la conexión en funcionamiento, ahora puede configurar la aplicación web para implementar el código directamente desde un repositorio de GitHub.
En la pestaña o ventana del explorador de la aplicación web, seleccione Centro de implementación (en Implementación, en el lado izquierdo).
En Control de código fuente, seleccione GitHub y, a continuación, seleccione Autorizar (si es necesario). Después, siga las indicaciones de inicio de sesión o seleccione Continuar para usar el inicio de sesión de GitHub actual.
Si ve una ventana emergente que indica que la autenticación se realizó correctamente, pero el portal aún muestra el botón Autorizar, actualice la página y el inicio de sesión de GitHub debería aparecer en el cuadro de GitHub. Vuelva a seleccionar el cuadro de GitHub y, a continuación, seleccione Continuar.
En la sección GitHub, seleccione los valores siguientes:
Campo Valor Organización Cuenta de GitHub en la que ha bifurcado el repositorio de ejemplo. Repositorio djangoapp Rama Si se usa servidor único: master
Si usa servidor flexible: flexible-serverSeleccione Guardar para desencadenar el flujo de trabajo de creación e implementación. Vaya a Acciones en el repositorio de GitHub para djangoapp para supervisar el progreso. Azure debería implementar el código e iniciar la aplicación.
App Service detecta un proyecto de Django mediante la búsqueda del archivo wsgi.py en cada subcarpeta. Cuando App Service encuentra ese archivo, carga la aplicación web de Django. Para más información, consulte Configuración de una imagen de Python integrada.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Ejecución de las migraciones de la base de datos de Django
Con el código implementado y la base de datos en funcionamiento, la aplicación está casi lista para su uso. La única parte que falta es establecer el esquema necesario en la propia base de datos. Para ello, debe "migrar" los modelos de datos de la aplicación de Django a la base de datos.
En la ventana o pestaña del explorador de la aplicación web, seleccione SSH (en Herramientas de desarrollo en el lado izquierdo) y, a continuación, seleccione Ir para abrir una consola SSH en el servidor de la aplicación web. Puede tardar un minuto en conectarse por primera vez, ya que se debe iniciar el contenedor de la aplicación web.
Si el comando muestra solo un archivo denominadohostingstart.html, la implementación aún no se ha
lscompletado del paso anterior.lsCompruebe las acciones del repositorio GitHub para ver el estado. Una vez completada la compilación, el comando debe mostrar los archivos de la aplicación, especialmentelsls.En la consola, ejecute migraciones de bases de datos:
python manage.py migrateSi 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 Conexión a la base de datos.
Cree un inicio de sesión de administrador para la aplicación:
python manage.py createsuperuserEl comando
createsuperuserle solicitará las credenciales del superusuario (o administrador) de Django, que se usan dentro de la aplicación web. Para los fines de este tutorial, use el nombre de usuario predeterminado , presione Entrar en la dirección de correo electrónico para dejarla en blanco yrootescriba para larootPollsdb1contraseña.
¿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
Ahora está listo para ejecutar una prueba rápida de la aplicación para demostrar que funciona con la base de datos PostgreSQL.
En la ventana o pestaña del explorador de la aplicación web, vuelva a la página Información general y, a continuación, seleccione la dirección URL de la aplicación web (con el formato ).
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.
Vaya a
http://<app-name>.azurewebsites.net/admin(la página de "administración de Django") e inicie sesión con las credenciales de superusuario de Django de la sección anterior (rootyPollsdb1).En Polls (Sondeos), seleccione Add (Agregar) junto a Questions (Preguntas) y cree una pregunta de sondeo con algunas opciones.
Vaya de nuevo a
http://<app-name>.azurewebsites.net/para confirmar que las preguntas se presentan ahora 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 PostgreSQL activa.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Actualización de la aplicación y nueva implementación
Tal y como se describió anteriormente en este tutorial, Azure vuelve a implementar el código de la aplicación cada vez que se confirman cambios en el repositorio de GitHub.
No obstante, si cambia los modelos de datos de la aplicación de Django, debe migrar los cambios a la base de datos:
Conéctese de nuevo a la aplicación web mediante SSH, tal y como se describe en Ejecución de las migraciones de la base de datos de Django.
Vuelva a ejecutar las migraciones con
python manage.py migrate.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Visualización de los registros de diagnóstico
Puede acceder a los registros de la consola generados desde dentro del contenedor que hospeda la aplicación en Azure.
En la página de la aplicación web en Azure Portal, seleccione Secuencia de registro (en Supervisión, en el lado izquierdo). Los registros aparecen como salida de la consola.
También puede inspeccionar los archivos de registro desde el explorador en https://<app-name>.scm.azurewebsites.net/api/logs/docker.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Limpieza de recursos
Puede dejar que la aplicación y la base de datos se ejecuten el tiempo que desee para un posterior trabajo de desarrollo. De lo contrario, para evitar incurrir en cargos adicionales, elimine el grupo de recursos creado para este tutorial, lo que elimina todos los recursos que contiene:
En Azure Portal, escriba "DjangoPostgres-Tutorial-rg en la barra de búsqueda de la parte superior de la ventana y, a continuación, seleccione el mismo nombre en Grupos de recursos.
En la página del grupo de recursos, seleccione Eliminar grupo de recursos.
Cuando se le solicite, escriba el nombre del grupo de recursos y, a continuación, seleccione Eliminar.
¿Tiene problemas? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.
Pasos siguientes
Obtenga información sobre cómo ejecuta App Service una aplicación de Python: