¿Cómo se implementan los proyectos de Django en un entorno de producción?

Hola,

Gracias por A2A

La implementación de un proyecto django para el entorno de producción requiere tres cosas:

  1. nginx [motor x] es un servidor HTTP y proxy inverso.
  2. contenedor del servidor de aplicaciones uWSGI
  3. Su proyecto django (con suerte ejecutándose)

Aunque es una guía bastante genérica, la encuentro más útil, ya que ayuda a comenzar a trabajar con el mínimo esfuerzo: cómo servir aplicaciones de Django con uWSGI y Nginx en Ubuntu 14.04.

Una descripción básica de lo que pretendemos lograr en el lado del servidor es algo como esto:

Solicitud HTTP Nginx uWSGI Django

La solicitud http del navegador será manejada primero por nuestro increíblemente poderoso NGINX. Nginx luego resolverá esta solicitud en función del nombre de dominio que vino como parte de la solicitud y la pasará al controlador apropiado basado en la configuración.

Ahora viene la parte divertida, simplemente podemos establecer un socket web local en 127.0.0.1:8001(que se puede iniciar con ‘./manage.py runserver 127.0.0.1:8001’ duh!) Y luego decirle a django que simplemente pase todas las solicitudes en ese socket ya que django se ejecutará en ese socket. PERO, NO HAGAS ESTO! Dado que el servidor de prueba que inicia django solo se ejecutará mientras el código sea estable y se ejecute, pero habrá casos frecuentes en los que este servidor simplemente se bloqueará en tiempo de ejecución en un encuentro de excepción (¡No queremos eso en producción!). Entonces, para mantener este servidor en funcionamiento, incluso en los malos tiempos (todos los tenemos) necesitamos un contenedor de servidor de aplicaciones que mantenga explícitamente django en funcionamiento y, por lo tanto, necesitamos uWSGI para eso. Entonces, en lugar de apuntar Nginx directamente a Django, lo apuntará a un socket UNIX (en lugar de un socket web) creado por uWSGI que interactuará aún más con django, ¡por lo tanto, la ruta anterior es clara!

Entonces, eso es todo en la amplia visión general. ¡A la guía!

Buena suerte !

Personalmente, he implementado más de 5 aplicaciones Django en un entorno de producción.

El mejor tutorial para configurar Django para producción es este a continuación.

Configurando Django con Nginx, Gunicorn, virtualenv, supervisor y PostgreSQL

Para resumirlo todo, a continuación se detallan las cosas que debe hacer para la producción.

1) Ejecute el servidor de aplicaciones django con gunicorn (disponible como paquete python para que la instalación de pip seguramente funcione) en lugar del comando runserver normal.

2) Use un monitor de proceso para controlar el estado del servidor de aplicaciones. En este caso, es una herramienta llamada supervisor. Reinicia automáticamente el servidor de aplicaciones gunicorn cada vez que se encuentra un error.

3) Agite un servidor web que enviará la solicitud al servidor de aplicaciones. En este caso, estamos usando nginx como servidor web. La otra buena opción podría ser apache, pero personalmente prefiero nginx.

Por lo tanto, la solicitud primero llegará al servidor web (nginx), luego se transmitirá al servidor de aplicaciones (gunicorn) que procesará la solicitud y generará una respuesta que a su vez se transmitirá nuevamente al servidor web y luego al cliente (navegador).

Espero que esto ayude !!