Cómo alojar a Django con Nginx en Ubuntu 18.04 Bionic Beaver Linux
- 3531
- 1024
- Eduardo Tapia
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
- « Cómo usar entornos de marionetas en Linux para actualizar de forma segura un agente
- Cómo instalar CouchBase Server en Ubuntu 18.04 Bionic Beaver Linux »