Hosting Django con Nginx y Gunicorn en Linux

Hosting Django con Nginx y Gunicorn en Linux

Introducción

Hosting Django Web Applications es bastante simple, aunque puede ser más complejo que una aplicación PHP estándar. Hay algunas maneras de manejar la interfaz de Django con un servidor web. Gunicorn es fácilmente uno de los más simples.

Gunicorn (abreviatura de unicornio verde) actúa como en el servidor intermediario entre su servidor web, Nginx en este caso y el propio Django. Maneja el servicio de la aplicación en sí mientras Nginx recoge el contenido estático.

Pistolero

Instalación

Instalar Gunicorn es muy fácil con PIP. Si ya ha configurado su proyecto Django usando VirtualEnv, tiene PIP y debe estar familiarizado con la forma en que funciona. Entonces, instale Gunicorn en su virtualenv.

$ Pip Instalar Gunicorn

Configuración

Una de las cosas que hace de Gunicorn una opción atractiva es la simplicidad de su configuración. La mejor manera de manejar la configuración es crear un Pistolero carpeta en el directorio raíz de su proyecto Django. Dentro de esa carpeta, cree un archivo de configuración.

Para esta guía, se llamará Gunicorn-Conf.py. En ese archivo, cree algo similar a la configuración a continuación.

importar multiprocesamiento bind = 'unix: /// tmp/gunicorn1.Sock 'trabajadores = multiprocesamiento.CPU_Count () * 2 + 1 RELOAD = True Daemon = True 

En el caso de la configuración anterior, Gunicorn creará un enchufe unix en /TMP/Gunicorn1.calcetín. También girará una serie de procesos de trabajadores equivalentes al doble del número de núcleos de CPU más uno. También recargará automáticamente y se ejecutará como un proceso demonioso.

Correr

El comando para ejecutar Gunicorn es un poco largo, pero tiene opciones de configuración adicionales especificadas en él. La parte más importante es apuntar a Gunicorn a su proyecto .WSGI archivo.

Gunicorn -C Gunicorn/Gunicorn -Conf.py -d --Error -logfile gunicorn/error.Registre su proyecto.WSGI

El comando anterior debe ejecutarse desde la raíz de su proyecto. Le dice a Gunicorn que use la configuración que creó con el -C bandera. -D una vez más especifica que debe demonerse. La última parte especifica la ubicación del error de Gunicorn en el Pistolero carpeta que creaste. El comando termina diciéndole a Gunicorn la ubicación de su .WSGIarchivo.

Nginx

Ahora que Gunicorn está configurado y en ejecución, puede configurar NGINX para conectarse con él y servir sus archivos estáticos. Esta guía va a suponer que ya tiene NGINX y que está utilizando servidor bloques para los sitios alojados a través de él. También va a incluir información SSL.

Si desea aprender a obtener certificados SSL gratuitos para su sitio, eche un vistazo a nuestra guía de LetsEnstrypt.

# Configure la conexión a Gunicorn Upstream YourProject-Gunicorn servidor unix:/tmp/gunicorn1.Sock Fail_TimeOut = 0;  # Redirigir el tráfico sin cifrar al servidor del sitio cifrado escuchar 80; server_name yourwebsite.com; devolver 301 https: // YourWebSite.com $ request_uri;  # El servidor de bloque de servidor principal  # Establezca el puerto para escuchar y especifique el dominio para escuchar escuchar 443 ssl predeterminado; client_max_body_size 4g; server_name yourwebsite.com; # Especificar ubicaciones de registro access_log/var/log/nginx/yourwebsite.access_log main; Error_log/var/log/nginx/yourwebsite.error_log información; # Punto nginx a sus certificados SSL SSL on; ssl_certificate/etc/letsencrypt/live/yourwebsite.com/fullchain.pem; ssl_certificate_key/etc/letsencrypt/live/yourwebsite.com/privkey.pem; # Establezca su directorio raíz root/var/www/yourvirtualenv/yourproject; # Point nginx en la ubicación de sus archivos estáticos / static /  # autoindex los archivos para que sean navegables si desea autoindex encendido; # La ubicación de sus archivos alias/var/www/yourvirtualenv/yourproject/static/; # Configurar el almacenamiento en caché de sus archivos estáticos vence 1M; access_log apagado; add_header cache-control "público"; proxy_ignore_headers "set-cookie";  # Punto nginx en sus archivos cargados ubicación / medios / autoindex si desea autoindex encendido; # La ubicación de sus archivos cargados alias/var/www/yourvirtualenv/yourproject/medios/; # Configurar el dolor de sus archivos cargados vence 1M; access_log apagado; add_header cache-control "público"; proxy_ignore_headers "set-cookie";  ubicación /  # Pruebe sus archivos estáticos primero, luego redirige a Gunicorn Try_files $ uri @proxy_to_app; # Pase las solicitudes a la ubicación de Gunicorn @Proxy_To_App proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_redirect off; proxy_pass http: // njc-gunicorn;  # Caching para ubicación HTML, XML y JSON ~* \.(HTML?| xml | json) $ expira 1h;  # En caché para todos los demás activos estáticos ubicación ~* \.(jpg | jpeg | png | gif | ico | css | js | ttf | woff2) $ expire 1m; access_log apagado; add_header cache-control "público"; proxy_ignore_headers "set-cookie";  

Bien, eso es un poco mucho, y puede haber mucho más. Los puntos importantes a tener en cuenta son el río arriba bloquear que apunta a Gunicorn y el ubicación Bloques que pasan el tráfico a Gunicorn. La mayor parte del resto es bastante opcional, pero debe hacerlo de alguna forma. Los comentarios en la configuración deberían ayudarlo con los detalles.

Una vez que se guarda ese archivo, puede reiniciar Nginx para que los cambios entren en vigencia.

# SystemCTL reiniciar nginx

Una vez que NGINX vuelve a estar en línea, su sitio debe ser accesible a través de su dominio.

Pensamientos de cierre

Hay mucho más que se puede hacer con Nginx, si quieres cavar profundamente. Sin embargo, las configuraciones proporcionadas son un buen punto de partida y son algo que realmente puede usar. Si está acostumbrado a Apache y aplicaciones PHP hinchadas, la velocidad de una configuración de servidor como esta debería ser una sorpresa agradable.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cómo configurar una dirección IP estática en Manjaro Linux
  • Linux Apache no ejecuta archivos PHP: solución
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Ubuntu 20.04: WordPress con instalación de Nginx
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cómo instalar PHP en Ubuntu Linux
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Instalación de WordPress OpenLitespeed
  • Cómo crear una pila de lámparas basada en Docker usando Docker en ..