A continuación detallamos los pasos y configuraciones que hacemos cuando tenemos que desplegar un proyecto Django en un ambiente de producción.
Instalaremos y configuraremos las siguientes aplicaciones:
- Nginx (Servidor Web Proxy)
- Gunicorn (Servidor WSGI HTTP para Python)
- Supervisor (Gestor de procesos para GNU/LInux)
Todo esto lo vamos a configurar sobre un sistema operativo Ubuntu y suponiendo que nuestro proyecto Django está en la carpeta /home/developer/public_html/webprojects/djangoapp
Gunicorn
Es un servidor WSGI que permite ejecutar nuestro proyecto Django, para instalarlo debemos usar el siguiente comando:
Una vez instalado creamos una carpeta llamada gunicorn_start
, que es el script que levantará nuestro proyecto Django, el script tiene el siguiente contenido:
Detallamos los parámetros más importantes:
NAME: El nombre de la aplicación, en éste caso djangoapp.
DJANGODIR: Dirección física donde se encuentra la aplicación.
ENVIDR: Dirección física del entorno que utiliza esta aplicación, eso si usamos virtualenv para virtualizar el entorno donde se ejecuta la aplicación.
USER: Usuario que ejecutará el script
NUM_WORKERS: Número de workers o procesos, mientras más se usen la aplicación tendrá más rapidez pero usará más recursos.
Una vez creado el archivo le damos permisos de ejecución:
Supervisor
La instalación de Supervisor es sencilla, ejecutamos el siguiente comando:
Luego tenemos que crear y configurar el proceso en supervisor, básicamente lo que hará será ejecutar el archivo gunicorn_start previamente creado, para ello nos vamos a la carpeta /etc/supervisor/conf.d/ y creamos un archivo de nombre gunicorn_start.conf con el siguiente contenido:
En la primera linea definimos el nombre de la proceso, en este caso será djangoapp luego de ello van los siguientes parámetros:
command: Ruta física donde se encuentra el archivo gunicorn_start previamente creado.
user: Usuario que ejecutará la aplicación.
stdout_logfile, stderr_logfile, stdout_logfile: Archivos de log's.
Luego de ello ejecutamos el siguiente comando, para que reconozca al nuevo proceso:
Y por último iniciamos el proceso:
Nginx
Instalamos nuestro servidor Web:
Luego configuramos nuestro archivo default.conf con el siguiente contenido:
Es importante señalar que la línea 2 del archivo, se ingresa la ruta física del archivo sock donde se está ejecutando la aplicación definida por gunicorn en el archivo gunicorn_start y la variable SOCKFILE.
Finalizado todo reiniciamos nuestro nginx
Y podremos ver nuestra aplicación en la url http://djangoapp.carbono.us