Guía para instalar Django Web Framework en Debian 12
Django es un framework web Python gratuito y de código abierto que se utiliza para desarrollar sitios web y aplicaciones dinámicas. Se utiliza para el desarrollo de aplicaciones Python complejas y basadas en bases de datos.
Django sigue la arquitectura MVC (Modelo-Vista-Controlador), que permite a los desarrolladores escribir menos código y crear un nuevo sitio web en poco tiempo. Django puede instalarse en cualquier sistema operativo que ejecute Python, incluidos Windows, macOS, Linux/Unix y Solaris.
Esta guía te mostrará cómo instalar el framework web Django en un servidor Debian 12. Empezarás con Django creando tu primer proyecto Django utilizando PostgreSQL como base de datos por defecto, el servidor Gunicorn WSGI y Nginx como proxy inverso.
Requisitos previos
Para empezar, asegúrate de que tienes lo siguiente:
- Una máquina Debian 12.
- Un usuario no root con privilegios de administrador sudo.
Instalación de dependencias
En el primer paso, instalarás las dependencias de los paquetes para tu instalación del framework web Django, esto incluye los siguientes paquetes:
- Servidor PostgreSQL: Por defecto Django utiliza SQLite, y este ejemplo te mostrará cómo utilizar PostgreSQL como base de datos para tu proyecto Django.
- Supervisor: Es un gestor de procesos, y ejecutarás tu aplicación Django con Gunicorn y Supervisor.
- Servidor web Nginx: Este ejemplo te mostrará cómo utilizar Nginx como proxy inverso para tu proyecto Django. Esto permite que tu proyecto Django sea accesible a través de un nombre de dominio local
En primer lugar, ejecuta el siguiente comando apt para actualizar y refrescar tu índice de paquetes.
sudo apt update
Ahora instala las dependencias de paquetes como el entorno virtual Python, el gestor de paquetes pip, PostgreSQL y el controlador libpq5, Nginx y Supervisor.
sudo apt install build-essential python3-dev python3-pip python3-venv nginx supervisor postgresql libpq5 libpq-dev
Escribe y para confirmar y proceder con la instalación.
Una vez instaladas las dependencias, ejecuta los siguientes comandos para verificar los servicios PostgreSQL, Nginx y Supervisor y asegúrate de que dichos servicios se están ejecutando y están habilitados.
Comprueba el servicio PostgreSQL utilizando el siguiente comando.
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
Si PostgreSQL se está ejecutando y está habilitado, a continuación se muestra la salida que deberías obtener.
Comprueba el servicio Nginx utilizando el siguiente comando.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Si Nginx se está ejecutando y está habilitado, a continuación se muestra la salida que deberías obtener.
Por último, comprueba el Supervisor utilizando el siguiente comando.
sudo systemctl is-enabled supervisor sudo systemctl status supervisor
Deberías ver que el Supervisor se está ejecutando y está habilitado.
Instalar Django mediante Pip
El framework web Django puede instalarse de diferentes formas, incluyendo manualmente a través de Git, a través del gestor de paquetes Pip Python, o combinado con un entorno aislado con el módulo venv y Pip. En este ejemplo, instalarás Django a través del gestor de paquetes Pip en el entorno Python aislado.
Inicia sesión con tu usuario mediante el comando que aparece a continuación.
su - username
Ahora crea un nuevo directorio de proyecto ~/testdjango y desplázate a él.
mkdir -p ~/testdjango; cd ~/testdjango
A continuación, ejecuta el siguiente comando para crear un nuevo entorno virtual Python llamado venv en el directorio actual de tu proyecto.
python3 -m venv venv
A continuación, actívalo utilizando el comando siguiente. Una vez activado el entorno virtual, tu prompt actual será como (venv) bob@hostname:.
source venv/bin/activate
Dentro del entorno virtual venv, ejecuta el siguiente comando pip para instalar el framework web Django. Esto instalará Django en tu entorno virtual Python, no en todo el sistema.
pip install django
or
pip install django==4.2.4
A continuación, ejecuta la instalación de Django.
Verifica tu versión de Django una vez finalizada la instalación utilizando el comando django-admin que aparece a continuación.
django-admin --version
La siguiente salida confirma que Django 4.2.4 está instalado en el entorno virtual venv a través del gestor de paquetes Pip Python.
Creación del primer proyecto Django
Esta sección te enseñará a crear el primer proyecto Django y a utilizar el servidor PostgreSQL como base de datos predeterminada. Para ello, completa los siguientes pasos:
- Preparar la base de datos y el usuario.
- Creación del proyecto Django mediante django-admin.
- Migración de la base de datos y generación de archivos estáticos.
- Crear usuarios administradores y ejecutar Django.
Preparar la base de datos y el usuario
Ejecuta el siguiente comando pip para instalar el paquete Python psycopg2 en tu entorno virtual. Éste es el controlador Python que utilizará Django para conectarse al servidor de base de datos PostgreSQL.
pip install psycopg2 exit
Ahora ejecuta el siguiente comando para acceder al shell de PostgreSQL.
sudo -u postgres psql
Ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario para tu proyecto Django. El siguiente ejemplo creará una nueva base de datos djangodb, un usuario django y la contraseña p4ssw0rd.
CREATE USER django WITH PASSWORD 'p4ssw0rd'; CREATE DATABASE djangodb OWNER django;
A continuación, ejecuta las siguientes consultas para verificar la base de datos y el usuario de la lista en tu servidor PostgreSQL.
\du \l
Deberías ver que se ha creado la base de datos djangodb y el usuario django.
Escribe quit para salir del servidor PostgreSQL.
Creación del proyecto Django
Antes de crear el proyecto Django, conéctate con tu usuario y activa el entorno virtual venv.
su - bob cd testdjango; source venv/bin/activate
Para crear un nuevo proyecto Django, ejecuta el siguiente comando django-admin. En este caso, crearás un nuevo proyecto testapp en tu directorio de trabajo actual.
django-admin startproject testapp .
Una vez creado el proyecto, se creará el nuevo directorio testapp en tu directorio de trabajo.
A continuación, ejecuta el siguiente comando para generar un secreto aleatorio para tu proyecto Django. Asegúrate de copiar el resultado, porque lo utilizarás para asegurar tu instalación de Django.
python3 -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
Ahora utiliza tu editor preferido y abre el archivo testapp/settings.py.
nano testapp/settings.py
En la parte superior de la línea, inserta la siguiente configuración.
import os
Introduce tu clave secreta en el parámetro SECRET_KEY.
SECRET_KEY = 'fzahzbm*wrxoleqb0^-3%%tf^y!b6lsc5-c#2^@#s6gkyrl2ef'
Introduce tu dirección IP local y tu nombre de dominio local en el parámetro ALLOWED_HOSTS.
ALLOWED_HOSTS = ['127.0.0.1','192.168.10.15','first-django.dev']
Cambia la configuración por defecto de la base de datos con los datos del servidor PostgreSQL de esta forma:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'djangodb', 'USER': 'django', 'PASSWORD': 'p4ssw0rd', 'HOST': '127.0.0.1', 'PORT': '5432', } }
Por último, añade el parámetro STATIC_ROOT para definir un directorio para almacenar archivos estáticos.
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
Guarda el archivo y sal del editor cuando hayas terminado.
Migrar la base de datos y generar archivos estáticos
Antes de migrar la base de datos, ejecuta el siguiente comando para asegurarte de que la configuración de la base de datos es correcta.
python3 manage.py check --database default
Si no se produce ningún error, ejecuta el siguiente comando para migrar la base de datos.
python3 manage.py makemigrations python3 manage.py migrate
Si todo va bien, deberías ver el proceso de migración de la base de datos así:
Por último, ejecuta el siguiente comando para generar archivos estáticos para tu proyecto Django. Una vez ejecutado el comando, se creará el nuevo directorio static y se generarán archivos estáticos en él.
python3 manage.py collectstatic
A continuación se muestra el resultado de la generación de archivos estáticos.
Crear usuario administrador y ejecutar Django
Ejecuta el siguiente comando para crear el usuario admin para tu proyecto Django.
python3 manage.py createsuperuser
Introduce tu dirección de correo electrónico y contraseña cuando se te solicite.
Una vez creado el usuario admin, ejecuta el siguiente comando para ejecutar tu proyecto Django.
python3 manage.py runserver 0.0.0.0:8080
Una vez ejecutado el comando, tu proyecto Django se ejecutará en tu dirección IP local en el puerto 8080.
Ahora abre tu navegador web y visita la dirección IP del servidor seguida del puerto 8080, http://192.168.10.15:8080/. Si tu instalación de Django se ha realizado correctamente, deberías ver la página index.html predeterminada de Django como la siguiente:
Ahora accede a tu administración de Django a través de la ruta URL /admin, http://192.168.10.15:8080/admin. Introduce tu usuario y contraseña de administrador de Django y haz clic en Iniciar sesión.
Deberías ver un ejemplo de panel de usuario de Django como éste:
Pulsa Ctrl+c para finalizar el proceso.
Ejecutar Django con Gunicorn y Supervisor
Llegados a este punto, ya has finalizado la instalación de Django y has creado tu primer proyecto Django. En el siguiente paso, configurarás Django para que se ejecute en segundo plano utilizando el servidor WSGI Gunicorn y el gestor de procesos Supervisor.
Instalación de Gunicorn
Dentro del entorno virtual venv, ejecuta el siguiente comando pip para instalar gunicorn.
pip install gunicorn
Ahora ejecuta el siguiente comando para desactivar el entorno virtual venv y volver a tu usuario root.
deactivate exit
Ejecutar Django con Gunicorn y Supervisor
Crea una nueva configuración de supervisor /etc/supervisor/conf.d/testapp.conf utilizando el siguiente comando del editor nano.
sudo nano /etc/supervisor/conf.d/testapp.conf
Inserta la siguiente configuración y asegúrate de cambiar la información detallada del nombre de la aplicación, la ruta del proyecto y el usuario con tus datos. En este ejemplo, ejecutarás tu proyecto Django bajo el socket UNIX /home/bob/testdjango/testapp.sock.
[program:testapp] command=/bin/bash -c 'source /home/bob/testdjango/venv/bin/activate; gunicorn -t 3000 --workers 3 --bind unix:unix:/home/bob/testdjango/testapp.sock testapp.wsgi:application -w 2' directory=/home/bob/testdjango user=bob group=www-data autostart=true autorestart=true stdout_logfile=/home/bob/testdjango/testapp.log stderr_logfile=/home/bob/testdjango/error.log
Guarda el archivo y sal de él cuando hayas terminado.
Por último, ejecuta el siguiente comando para reiniciar el servicio del supervisor y aplicar los cambios. A continuación, verifica el servicio del supervisor para asegurarte de que se está ejecutando.
sudo systemctl restart supervisor sudo systemctl status supervisor
Comprobación de Django mediante Supervisorctl
Ejecuta el siguiente comando supervisorctl para comprobar el estado de la aplicación que se está ejecutando en el supervisor.
sudo supervisorctl status
Deberías ver que la aplicación testapp se está ejecutando en el PID 2577.
Por último, comprueba tu aplicación Django mediante el siguiente comando curl.
curl --unix-socket /home/bob/testdjango/testapp.sock 127.0.0.1
Si todo va bien, deberías ver el código fuente de la página index.html de tu proyecto Django.
Configurar Nginx como proxy inverso para Django
Ahora que tu proyecto Django se está ejecutando en segundo plano, el siguiente paso es configurar Nginx como proxy inverso para Django. En el siguiente ejemplo utilizaremos un nombre de dominio local.
Crea una nueva configuración de bloque de servidor Nginx /etc/nginx/sites-available/django utilizando el siguiente editor nano.
sudo nano /etc/nginx/sites-available/django
Introduce la siguiente configuración y asegúrate de cambiar el nombre de dominio en el parámetro server_name.
server { listen 80; server_name first-django.dev; location = /favicon.ico { access_log off; log_not_found off; } try_files $uri @django; location /static { alias /home/bob/testdjango/static/; } location @django { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://unix:/home/bob/testdjango/testapp.sock; } }
Guarda y sal del archivo cuando hayas terminado.
Ahora ejecuta el siguiente comando para activar el bloque de servidor /etc/nginx/sites-available/django y, a continuación, comprueba la sintaxis de Nginx para asegurarte de que la sintaxis es correcta.
sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/ sudo nginx -t
Deberías obtener la salida la sintaxis es correcta – la prueba tiene éxito cuando tienes la sintaxis Nginx adecuada.
Por último, reinicia tu servicio Nginx ejecutando el siguiente comando y aplicando los cambios que has realizado.
sudo systemctl restart nginx
Con esto, tu proyecto Django es accesible a través de un nombre de dominio local.
En tu máquina local, edita el archivo /etc/hosts para Linux o C:\Windows\System32\drivers\etc\hosts para Windows. A continuación, define la dirección IP y el nombre de dominio de tu servidor como se indica a continuación.
192.168.10.15 first-django.dev
Guarda el archivo y sal de él cuando hayas terminado.
Vuelve a tu navegador web y visita tu nombre de dominio local, deberías ver la página index.html por defecto de tu proyecto Django.
Conclusión
En resumen, siguiendo esta guía paso a paso, has instalado el framework web Django con PostgreSQL, Nginx, Gunicorn y Supervisor en Debian 12. Has aprendido a crear un proyecto Django con PostgreSQL como base de datos por defecto y a ejecutar Django con Gunicorn y Supervisor. Ahora puedes crear y desarrollar tu aplicación con Django.