Despliegue de Django
Pybox te permite desplegar tus aplicaciones Django de forma sencilla y rápida. A continuación, te mostramos cómo hacerlo.
Creación y Configuración de la Aplicación Django en Pybox
Antes de crear una aplicación Django, es fundamental contar con un proyecto
y entorno
previamente creados. Además, una parte esencial de cualquier aplicación Django es la base de datos. Comencemos con eso🔥
Configuración de la Base de Datos
Pybox genera un host por defecto al implementar la infraestructura. Puedes encontrarlo en la sección Host de BD
bajo el alias Default.
Asegúrate de que este host tenga acceso a tu proyecto.
Para verificarlo
: Ingresa a tu proyecto en Pybox. Busca la secciónAcceso a host de base de datos
. Si ya creaste el acceso al host, genial. Si no, haz clic en+Acceso a host de BD
, asigna un límite de bases de datos y usuarios que podrán ser creados.
Ahora que tienes acceso al host, sigue estos pasos:
Crea un usuario de base de datos:
Ve a la sección Usuarios de base de datos
y haz clic en +Usuario de BD
.
Asigna un nombre y contraseña. Selecciona el host de base de datos al que le diste acceso.
Crea la base de datos:
Ve a la sección Base de datos
y haz clic en +Base de datos
.
Asigna un nombre, selecciona el host de base de datos y configura el cotejamiento según tus necesidades.
Asigna acceso a los usuarios:
Una vez creada la base de datos, en la misma sección haz clic en +Usuario
, selecciona el usuario al que quieras dar acceso y guardalo.
Pybox otorga privilegios por defecto a los usuarios con acceso para que puedan realizar operaciones como aplicar migraciones.
Si necesitas modificar los permisos, puedes hacerlo desde el icono de engranaje junto al usuario.
Con esto, la base de datos ya está lista para que tu aplicación Django la utilice. Pasemos al siguiente paso.
Creación de la Aplicación Django
Dentro de tu entorno en Pybox:
Selecciona +Nueva aplicación
.
Asigna un nombre.
En tipo de aplicación, selecciona Django
.
Asigna un dominio.
💡 Recomendación: Antes de crear la aplicación en Pybox, asegúrate de que el dominio ya esté definido. Si lo cambias más adelante, tendrás que actualizarlo manualmente en todos los lugares donde Pybox lo utilice, como el VHost.
Además, dependiendo de tu caso, puedes elegir si el dominio debe apuntar a la IP del balanceador de cargas de aplicaciones desde el inicio o si prefieres configurarlo después de ejecutar la Deploy Task.
Una vez creada, la aplicación aparecerá con estado inactivo, pero ya tendrá una ruta generada.
Configuración de la Aplicación
Ingresa a la aplicación que creaste.
Estarás en la pestaña Configuración
, donde puedes definir ajustes básicos, avanzados y el entorno virtual de Python.
Edita la configuración básica:
-
En
Nombre del proyecto Django
, ingresa el nombre con el que lo creaste en tu código. -
En
Ruta de medios
, coloca la ruta relativa de la carpeta donde se guardarán los archivos multimedia(ejemplo: files)
. -
En
Ruta estática
, define la ruta relativa de la carpeta donde están los archivos estáticos(ejemplo: assets)
. -
Ajusta los valores de solicitudes máximas, procesos, hilos, intervalo de reinicio y tiempo de gracia si es necesario, o deja los valores recomendados por Pybox.
-
(Opcional)
Build VHost:
Si habilitas esta opción, se generará automáticamente el archivo de configuración del servidorVHost
en los nodos.Esta configuración depende de tu criterio y de cómo necesites desplegar tu aplicación.
Si la
habilitas
la aplicación se activara.Si
no la habilitas
, el VHost no se creará y la aplicación permanecerá inactiva. Podrás realizar todas las operaciones dentro de tu aplicación y ejecutar el pipeline en una Deploy Task, perono tendrás acceso a la aplicación hasta que habilites Build VHost
, se cree el VHost y la aplicación se active. -
Activa
Crear archivos de configuración por defecto
para que Pybox genere los archivos iniciales necesarios para tu aplicación.
Una vez que guardes los cambios en la configuración básica, tu aplicación pasará a un estado activo, siempre que se haya creado el VHost.
Configuración avanzada
Si activaste la opción Habilitar Build VHost
y guardaste los cambios en la configuración básica, podras acceder a la configuración avanzada y visualizar o editar el VHost generado.
💡Considera lo siguiente❗❗❗:
Si desactivas una aplicación, todas las líneas correspondientes a su vhost serán comentadas.
Si desactivas un entorno, se comentarán los vhosts de todas las aplicaciones asociadas a ese entorno.
Entorno virtual de Python
Para que tu aplicación Django funcione correctamente, necesita un entorno virtual donde se instalarán los paquetes necesarios. En la sección Entorno virtual de Python
, haz clic en +Agregar
y asigna un nombre al entorno virtual.
CI/CD
Dentro de la misma aplicación, puedes cambiar a la pestaña CI/CD
, donde configurarás los flujos de entrega continua.
Configuración del repositorio remoto
Para habilitar despliegues automáticos, haz clic en +Agregar
y proporciona la siguiente información:
- La URL de tu repositorio,
- La rama con la que trabajará tu aplicación
- El nombre del repositorio
Gestión de archivos
Si en la configuración básica habilitaste la opción Crear archivos de configuración por defecto, se generará automáticamente un archivo llamado
ENV_VARS_FILE
, donde podrás definir todas las variables de entorno de tu aplicación.De lo contrario, si no activaste esta opción, deberás crear los archivos manualmente.
Puedes crear los archivos necesarios para tu aplicación. como por ejemplo un archivo de variables de entorno. → .env
- Asigna un nombre al archivo, que luego utilizarás en el pipeline.
- En el editor integrado de Pybox, agrega todas las variables de entorno con sus respectivos valores.
Pybox también proporciona, en la misma sección, las rutas
clave de tu aplicación que puedes utilizar para asignar valores a tus variables si las necesitas.
Plantilla pipeline
En esta sección puedes crear y editar la plantilla inicial para tu aplicación. La plantilla es un script en Bash que automatiza el despliegue de tu aplicación Django.
Te mostramos en detalle la plantilla del Pipeline que se genera para tu aplicación Django
# ! /usr/bin/bash
Esta línea indica que el script se ejecuta con Bash.
# Initialize project os user
source /pybox_nfs/shared_production/projects/pyboxdocs/.bashrc
Cargará la configuración del entorno para el usuario del sistema.
# Move to CI/CD folder of the application
cd $PYBOX_APP_CICD_FOLDER_PATH
Se mueve a la carpeta donde se encuentran los archivos de la aplicación.
# Initialize ssh-agent
eval $(ssh-agent -s)
Inicia el agente SSH para gestionar las claves privadas necesarias para conectarse al repositorio.
# Add the ssh public key of the project to the agent
ssh-add /pybox_nfs/shared_production/projects/pyboxdocs/.ssh/pybox_git_rsa
Añade la clave SSH del proyecto al agente SSH, permitiendo autenticarse con el servidor Git.
# Clone and copy the repository of the application
if [ "$PYBOX_EXEC_MODE" = "COMPLETE" ]; then
Verifica si el pipeline se ejecuta en modo completo, para realizar todos los pasos siguientes, de lo contrario simplemente se hara un touch al wsgi.py de tu aplicación.
# Scan git host
ssh-keyscan -t rsa ssh.dev.azure.com /pybox_nfs/shared_production/projects/pyboxdocs/.ssh/known_hosts
Escanea el host del servidor Git y agrega su clave pública a la lista de hosts conocidos.
# Remove the previous cloned repository of the application
rm -rf astro_minorista_backend
Elimina cualquier versión anterior del repositorio local para asegurar una copia limpia.
⚠️ Toma en cuenta que se utiliza el nombre del repositorio que configuraste anteriormente
# Clone the repository of the application
git clone [email protected]:v3/90hrswk2/Astro/astro_minorista_backend -b develop --single-branch astro_minorista_backend
Clona el repositorio en la rama develop como una única rama, reduciendo el tamaño de la descarga.
⚠️ Toma en cuenta que en esta linea se utiliza la url del repo y la rama que configuraste en pasos anteriores.
# Copy and replace all the files to the PYBOX_APP_MAIN_FOLDER_PATH folder
cp -rf astro_minorista_backend/{*,.*} $PYBOX_APP_MAIN_FOLDER_PATH
Copia todos los archivos del repositorio al directorio principal de la aplicación.
rm -rf $PYBOX_APP_MAIN_FOLDER_PATH/.git
Elimina la carpeta .git para que no interfieran en el entorno de producción.
rm $PYBOX_APP_MAIN_FOLDER_PATH/.gitignore
Elimina el archivo .gitignore para que no interfieran en el entorno de producción.
# Copy the evironment vars files to some destination
echo "Copying ENV_VARS_FILE to the destination"
Imprime un mensaje indicando que se copiarán las variables de entorno.
# uncomment the next line to customize the destination of the env file
# cp $ENV_VARS_FILE $PYBOX_APP_MAIN_FOLDER_PATH/destiny_filename
Esta línea te permite definir una ruta personalizada donde se copiará o reemplazará el archivo.
⚠️⚠️🚨 Estas líneas varían según los archivos que hayas creado previamente. En la plantilla, las instrucciones de copia o reemplazo
están comentadas por defecto
. Para un correcto funcionamiento, debesdescomentar
las líneas correspondientes a los archivos que deseas copiar o reemplazar. 🚨⚠️⚠️
# Activate the virtual environment
workon pyboxappdocdjango
Activa el entorno virtual de Python para instalar las dependencias en un entorno aislado.
⚠️ Toma en cuenta que se utiliza el nombre del entorno virtual que creaste para tu aplicación.
# Install dependencies
pip install -r $PYBOX_APP_MAIN_FOLDER_PATH/requirements.txt
Instala las dependencias de la aplicación según el archivo requirements.txt.
# Migrate the database
python $PYBOX_APP_MAIN_FOLDER_PATH/manage.py migrate
Ejecuta las migraciones de la base de datos, aplicando cualquier cambio en los modelos.
# Collect the static files
python $PYBOX_APP_MAIN_FOLDER_PATH/manage.py collectstatic --noinput
Recoge todos los archivos estáticos de la aplicación y los coloca en la carpeta de producción.
else
echo "The pipeline is running in the update mode. Skip the clone, copy of the repository and the env files and the installation of the dependencies"
Si el pipeline no está en modo completo, se muestra un mensaje indicando que se omiten los pasos de clonación e instalación.
fi
Cierra el bloque if.
# Restart the wsgi application on both complete and update mode
touch $PYBOX_APP_MAIN_FOLDER_PATH/astro_minorista/wsgi.py
Reinicia la aplicación Django con un touch al archivo WSGI para que los cambios surtan efecto.
echo "The pipeline has finished the execution"
Imprime un mensaje indicando que el pipeline ha finalizado.
🚨Revisa la plantilla del pipeline y, si es necesario, ajusta o agrega las líneas que consideres, ya que esta plantilla es solo un punto de partida y puede necesitar personalización.🚨
Deploy tokens
Una vez que tengas tu pipeline listo, podrás generar un deploy token y obtener un comando cURL que podrás ejecutar desde Azure Pipelines
, GitLab CI/CD
, GitHub Actions
, o cualquier plataforma similar. Este comando cURL creará automáticamente una deploy task con uno de los siguientes tipos:
- Run Complete Only One → Ejecuta el pipeline en un solo nodo.
- Run Complete One and Update Others → Ejecuta el pipeline en un nodo y luego actualiza los demás.
- Only Update All → Aplica una actualización en todos los nodos.
- Run Complete All → Ejecuta el pipeline completo en todos los nodos.
Además de estos tipos, podrás agregar comandos post-deploy
, argumentos de script
y la opción de reiniciar Apache
si es necesario. Todas estas configuraciones se reflejarán en el comando cURL.
Deploy task
Si prefieres crear la deploy task de manera manual en lugar de utilizar un comando cURL, puedes hacerlo desde esta sección. Al crear la task manualmente, igualmente podrás elegir el tipo de ejecución que más se ajuste a tus necesidades:
- Run Complete Only One → Ejecuta el pipeline en un solo nodo.
- Run Complete One and Update Others → Ejecuta el pipeline en un nodo y luego actualiza los demás.
- Only Update All → Aplica una actualización en todos los nodos.
- Run Complete All → Ejecuta el pipeline completo en todos los nodos.
Y también, podrás agregar comandos post-deploy
, argumentos de script
y configurar el reinicio de Apache
si lo necesitas. Con las configuraciones seleccionadas, se creará la tarea que se ejecutará según el tipo elegido en los nodos de tu infraestructura.
Cuando se cree la tarea, podrás realizar un seguimiento completo de la ejecución según el tipo o modo que hayas seleccionado. Dispondrás de una sección desplegable llamada Runs Deploy
, donde podrás monitorear el progreso de la ejecución en los diferentes nodos.
Log de Errores
En esta sección podrás visualizar los errores de tu aplicación sin necesidad de conectarte a los nodos vía SSH.
⚠️ Toma en cuenta que el archivo de logs se genera automáticamente cuando se crea el VHost.
Gestor de Archivos
El gestor de archivos te servira para cargar y administrar los archivos que necesites en el Private Storage
, un directorio diseñado para almacenar archivos privados. Estos archivos pueden ser accedidos desde tu aplicación o durante la ejecución del pipeline utilizando su ruta absoluta.
En la plantilla del pipeline, puedes hacer referencia a estos archivos con la variable:
$PYBOX_APP_PRIVATE_STORAGE_PATH/nombre_del_archivo
De esta manera, podrás utilizarlos de forma segura dentro de tus procesos de despliegue y ejecución.
En esta guía, te mostramos todas las opciones disponibles en Pybox para ayudarte a realizar el despliegue de tu aplicación Django. Sin embargo, no todas las opciones son necesarias para cada proyecto; su uso dependerá de las particularidades de tu aplicación. La decisión de cuáles implementar queda en tus manos, asegurando que el proceso de despliegue se adapte a tus necesidades específicas.
Recuerda que Pybox está diseñado para facilitar y simplificar el despliegue de tu aplicación Django de la manera más sencilla e intuitiva posible. ☁️🚀