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.

instalar dependencias

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.

comprobar postgresql

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.

comprobando nginx

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.

supervisor de control

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

crear un entorno virtual venv

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.

instalando 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.

comprobación de la versión de django

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

instalar psycopg2

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;

crear base de datos y usuario

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.

comprobar base de datos y usuario

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.

crear proyecto django

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())'

generar secreto

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í:

migrar base de datos

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.

generar 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.

crear superusuario

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.

ejecutar proyecto django

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:

django index.html

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.

django login

Deberías ver un ejemplo de panel de usuario de Django como éste:

django dashboard

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

instalar 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

ejecutar django con gunicorn 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.

lista app supervisorctl

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.

comprobación de django en supervisor

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.

Scroll al inicio