Hosting Django con Nginx y Gunicorn en Linux
- 3206
- 289
- Eduardo Tapia
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 .WSGI
archivo.
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 ..