Cómo alojar a Django con Nginx en Ubuntu 18.04 Bionic Beaver Linux

Cómo alojar a Django con Nginx en Ubuntu 18.04 Bionic Beaver Linux

Objetivo

Instalar y configurar Ubuntu 18.04 para alojar el marco Django.

Distribuciones

Ubuntu 18.04

Requisitos

Una instalación en funcionamiento de Ubuntu 18.04 con privilegios de raíz

Dificultad

Medio

Convenciones

  • # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
  • ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Introducción

Si está buscando crear y alojar aplicaciones web con Python, Django es la opción más popular. Dado que Python está tan estrechamente integrado en el Linux, no es demasiado difícil configurar un servidor Django en Ubuntu.

No hay una forma establecida de organizar proyectos de Django, pero una pila que consiste en PostgreSQL, Nginx, Gunicorn y Django es más o menos el estándar.

Instalar los paquetes

Antes de comenzar, debe instalar los paquetes requeridos. No hay muchos, pero asegúrese de deshabilitar Apache o cualquier otro servidor web que se ejecute en el puerto 80 antes de comenzar.

$ sudo apt install python3 python3-henv nginx postgresql


Crea la base de datos

También necesitará crear una base de datos para almacenar la información de su aplicación Django. PostgreSQL va a desempeñar ese papel. Si nunca has usado PostgreSQL antes, no es lo mismo que MySQL. Su sintaxis es diferente y maneja los inicios de sesión del usuario de manera diferente también.

Para iniciar sesión en PostgreSQL y administrarlo, debe usar el post -put Usuario en su máquina que se creó cuando instaló el paquete PostgreSQL. Cambiar a ese usuario con SU.

$ sudo Su Postgres

Una vez que estés en el post -put usuario, accede a su base de datos con el PSQL dominio.

Después de iniciar sesión, debe agregar una contraseña a su usuario administrativo antes de hacer cualquier otra cosa.

Postgres =# alterar el usuario Postgres con contraseña cifrada 'YourPassword';

A continuación, cree su base de datos.

Postgres =# Crear base de datos Your_db;

Cree un nuevo usuario regular para administrar la base de datos. Este es el usuario con el que Django iniciará sesión.

Postgres =# Crear rol django_user con contraseña cifrada 'YourPassword';

Luego, otorgue que el usuario permita usar la base de datos.

postgres =# otorgue todos los privilegios en la base de datos Your_db a django_user;

Cuando haya terminado, salga con \ Q. Salir del post -put usuario también.

Configura tu directorio

Por lo general, no es una gran idea instalar paquetes de Python en todo el sistema. Es mucho más difícil administrar las versiones de los paquetes y mantener todo estable.

Python 3 admite entornos virtuales que le permiten compartimentar sus proyectos de Python por directorio. Cada entorno tiene su propio conjunto de paquetes de Python, y puede instalarlos y administrarlos como usuario regular.

Elija el lugar donde desee alojar su sitio web. /var/www/tuyeite suele ser una buena opción. Use el comando incorporado para crear su entorno virtual.

$ sudo python3 -m venv/var/www/tuyeite

Vaya a su directorio y activelo.

$ CD/VAR/WWW/SUYORITE $ SOURCE BIN/activar

Cuando haya terminado en el directorio, puede desactivarlo fácilmente.

$ desactivado


Instalar django

Con su entorno virtual iniciado, puede instalar Django junto con un par de otros paquetes de Python que necesitará para conectar todo.

$ Pip Instale Django PsyCopg2 Gunicornio

Tomará unos segundos, pero Pip instalará todo lo que necesite para configurar su proyecto Django.

Crear un proyecto Django

Ahora que tienes django, puedes crear tu proyecto. Asegúrese de estar en su entorno virtual y que lo active.

$ django-admin startProject Your-Project

Una vez que tenga su proyecto, deberá cambiar la configuración para configurar su base de datos. Por defecto, Django está configurado para usar SQLITE3 como su base de datos. Eso es más para fines de desarrollo. Para usar PostgreSQL, necesitará editar la configuración principal de Django en Your-Project/Your-Project/Configuración.py. Encontrar ese archivo y abrirlo. Busca el Bases de datos Bloquear y editar para que se vea como el siguiente.

Bases de datos = 'predeterminado':  #'Engine': 'Django.db.backends.sqlite3 ', #' nombre ': OS.camino.unir (base_dir, 'db.sqlite3 '),' motor ':' django.db.backends.Postgresql_psycopg2 ',' name ':' your_db ',' user ':' django_user ',' contraseña ':' yourpassword ',' host ':' localhost ',' puerto ': ",

Guardar y Salir. Ahora, ahora puede aplicar las migraciones iniciales y crear su usuario administrativo. Regrese al directorio raíz de su proyecto y ejecute los siguientes comandos de Linux.

$ Python Manage.py migrar $ python gestion.py createuperuser

Configurar Gunicorn

La configuración de Gunicorn es bastante simple, pero aún es importante hacerlo. Crear un pistolero directorio en la raíz de su sitio. Esencialmente necesita decirle dónde ejecutar su enchufe, cuántos trabajadores generar y dónde registrar. Crear un archivo de python llamado config de gunicornio.py, y haz que se vea como el de abajo.

importar multiprocesamiento bind = 'unix:/tmp/gunicorn.Sock 'trabajadores = multiprocesamiento.CPU_Count () * 2 + 1 RELOAD = True Daemon = True AccessLog = './acceso.log 'ErrorLog ='./error.registro'

Una vez que lo tenga, configurado como desee, guarde y salga.

Puede iniciar Gunicorn desde el directorio raíz de su proyecto con un comando similar a este:

$ Gunicorn -C Gunicorn/Gunicorn -Config.Py tu proyecto.WSGI


Configurar nginx

Toda la configuración de Nginx descansa en /etc/nginx. Hay un montón de archivos en ese directorio, pero no necesita preocuparse por todos ellos. Realmente solo necesitas /etc/nginx/nginx.confusión y el archivo específico del sitio que creará en /etc/nginx/sites disponible/su sitio. En realidad, la configuración NGINX principal no es tan necesaria a menos que desee optimizar su sitio en producción. Realmente no necesitas meterse con él solo para ejecutar tu sitio.

Entonces, cree un archivo para su sitio en /etc/nginx/sites disponible/su sitio.

La primera pieza del archivo que necesita es el río arriba bloquear. Este bloque le dice a Nginx que el código de aplicación web se está ejecutando en otro lugar (Gunicorn, en este caso), y debe intercambiar solicitudes con ese socket o dirección.

Upstream Your-Gunicorn servidor unix:/tmp/gunicorn.Sock Fail_TimeOut = 0; 

Este bloque más o menos crea una variable basada en el nombre que especificó después río arriba y le asigna el valor del servidor de destino. El servidor puede ser un socket unix o una dirección IP y un número de puerto. Dado que Gunicorn se ejecutará localmente, usar un enchufe unix es mejor. Recuerde que lo configura en la configuración de Gunicorn antes, así que apunte a su configuración de Nginx.

A continuación, puede pasar al bloque principal para Nginx, el servidor bloquear. Agregar eso en.

servidor 

Las opciones básicas le dicen a Nginx en qué puerto escuchar y qué URL buscar.

Escuche 80 predeterminado; client_max_body_size 4g; servidor_name su sitio.com; KeepAlive_timeout 70;

Luego, agregue sus ubicaciones de registro.

access_log/var/log/nginx/su sitio.access_log main; Error_log/var/log/nginx/su sitio.error_log información;

Point nginx en el directorio raíz de su sitio.

root/var/www/virtualenv/your-site;

Gunicorn no sirve archivos estáticos, por lo que tendrá que configurar NGINX para servir los archivos estáticos de su sitio. Exactamente dónde se encuentran esos archivos se determina en su archivo de configuración de Django. Por lo general, hay dos directorios, uno para los archivos estáticos del sitio y otro para archivos cargados. Los bloques comparten la misma estructura. El siguiente ejemplo asume que sus archivos estáticos existen en un directorio llamado estático En la raíz de su proyecto.

ubicación / static / autoindex on; alias/var/www/virtualenv/your-site/static/; expira 1m; access_log apagado; add_header cache-control "público"; proxy_ignore_headers "set-cookie"; 

Hay algunas otras opciones que son buenos valores predeterminados para almacenar en caché.

El siguiente ubicación El bloque que necesitará manejará la conexión con Gunicorn. Como río arriba Establece otra variable y le dice que pase las conexiones a su bloque aguas arriba.

Ubicación @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: // Your-Gunicorn; 

Finalmente, configure un bloque que le indique a NGINX que busque archivos estáticos para que coincida con cualquier solicitud entrante. Si no se encuentra ninguno, páselo a Gunicorn.

ubicación / try_files $ uri @proxy_to_app; 

Eso es todo lo que necesitas absolutamente. Puedes hacer mucho más ajuste de rendimiento, pero no es esencial hacer que Django funcione. Guardar y Salir.

Cree un enlace entre su nuevo archivo y el sitios habilitados carpeta. Eliminar el existente por defecto Archivo allí.

$ sudo rm/etc/nginx/sites-habilitado/predeterminado $ sudo ln -s/etc/nginx/sites-disponible/su sitio/etc/nginx/sites-habilitado/

Reiniciar nginx.

$ sudo systemctl reiniciar nginx

Por ahora, debería poder abrir su navegador y ver la página Django predeterminada.

Pensamientos de cierre

Muy bien, así que este fue una especie de largo camino. Si desea o no pasar por esta configuración en un servidor de desarrollo depende completamente de usted. Para la producción, sin embargo, proporciona una base sólida para organizar sus proyectos de Django. Sin embargo, tenga en cuenta que definitivamente hay más optimización que puede hacer tanto en la configuración de Django como en Nginx.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Ubuntu 20.04: WordPress con instalación de Nginx
  • Cosas para instalar en Ubuntu 22.04
  • Cómo verificar el estado de Nginx en Ubuntu
  • Cómo instalar Nginx en Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Cómo verificar la versión Nginx en Linux
  • Ubuntu 20.04 Guía
  • Ubuntu 20.04 trucos y cosas que quizás no sepas