Django instalación · 8 min read · Dec 22, 2025
Cómo instalar el marco Django en Debian 11

Django es un marco de desarrollo web gratuito y de código abierto escrito en Python. Se utiliza para desarrollar aplicaciones Python complejas y basadas en bases de datos. Viene con un conjunto de scripts de Python para crear proyectos de Python. Se puede ejecutar en cualquier sistema operativo que pueda ejecutar Python, incluyendo Windows, macOS, Linux/Unix y Solaris. Ayuda a los desarrolladores a escribir menos código y crear un nuevo sitio web en un corto período de tiempo.
En este tutorial, explicaré cómo configurar Django en un entorno virtual de Python utilizando la base de datos PostgreSQL en Debian 11. Luego instalaremos y configuraremos Nginx como un proxy inverso para Django.
Requisitos previos
- Un servidor que ejecute Debian 11.
- Un nombre de dominio válido apuntado a la IP de su servidor.
- Una contraseña de root configurada en el servidor.
Comenzando
Antes de comenzar, es una buena idea actualizar los paquetes de su sistema a la última versión. Puede hacerlo utilizando el siguiente comando:
apt-get update -yUna vez que todos los paquetes estén actualizados, instale otras herramientas de Python y el paquete Nginx con el siguiente comando:
apt-get install python3-pip python3-dev libpq-dev curl nginx -yUna vez que todos los paquetes requeridos estén instalados, puede proceder al siguiente paso.
Instalar el servidor de base de datos PostgreSQL
Aquí, utilizaremos PostgreSQL como un backend de base de datos. Así que instalémoslo utilizando el siguiente comando:
apt-get install postgresql postgresql-contrib -yUna vez que PostgreSQL esté instalado, conéctese a la shell de PostgreSQL con el siguiente comando:
su - postgres
psqlA continuación, cree una base de datos y un usuario para Django con el siguiente comando:
CREATE DATABASE django;
CREATE USER django WITH PASSWORD 'password';A continuación, otorgue algunos roles requeridos con el siguiente comando:
ALTER ROLE django SET client_encoding TO 'utf8';
ALTER ROLE django SET default_transaction_isolation TO 'read committed';
ALTER ROLE django SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE django TO django;A continuación, salga de la shell de PostgreSQL utilizando el siguiente comando:
\q
exitEn este punto, la base de datos PostgreSQL está lista para Django. Ahora puede proceder al siguiente paso.
Crear un entorno virtual de Python
A continuación, necesitará crear un entorno virtual de Python para crear un proyecto Django.
Primero, actualice el paquete PIP a la última versión utilizando el siguiente comando:
pip3 install --upgrade pipA continuación, verifique la versión de PIP utilizando el siguiente comando:
pip --versionSalida de ejemplo:
pip 21.2.4 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)A continuación, instale el paquete de entorno virtual utilizando el siguiente comando:
pip3 install virtualenvA continuación, cree un directorio para el proyecto Django y cree un entorno virtual de Django:
mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenvA continuación, active el entorno virtual de Django utilizando el siguiente comando:
source djangoenv/bin/activateA continuación, instale Django, Gunicorn y otros paquetes utilizando el siguiente comando:
pip install django gunicorn psycopg2-binaryEn este punto, Django está instalado en el entorno virtual de Python. Ahora puede proceder al siguiente paso.
Instalar y configurar Django
Django proporciona un script django-admin.py para crear un proyecto. Puede ejecutar el siguiente comando para crear un proyecto Django:
django-admin.py startproject djangoapp ~/djangoappA continuación, necesitará editar el settings.py y definir la configuración de su base de datos:
nano ~/djangoapp/djangoapp/settings.pyCambie la siguiente línea con su nombre de dominio:
ALLOWED_HOSTS = ['django.example.com', 'localhost']Descomente el backend de base de datos predeterminado y agregue la configuración de la base de datos PostgreSQL:
#DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
#}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'django',
'USER': 'django',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}Agregue las siguientes líneas al final del archivo:
STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')Guarde y cierre el archivo, luego migre el esquema de base de datos inicial a la base de datos PostgreSQL:
./manage.py makemigrations
./manage.py migrateSalida de ejemplo:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OKA continuación, cree una cuenta de superusuario para Django con el siguiente comando:
./manage.py createsuperuserEstablezca su nombre de usuario y contraseña de administrador como se muestra a continuación:
Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.A continuación, reúna todo el contenido estático en el directorio:
./manage.py collectstaticEjecutar el servidor de desarrollo de Django
En este punto, Django está instalado y configurado. Ahora puede iniciar el servidor de desarrollo de Django utilizando el siguiente comando:
./manage.py runserver 0.0.0.0:8000Si todo está bien, debería obtener la siguiente salida:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
August 27, 2021 - 10:02:05
Django version 3.2.6, using settings 'djangoapp.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.Ahora, abra su navegador web y acceda a su proyecto Django utilizando la URL http://django.example.com:8000/admin/. Serás redirigido a la página de inicio de sesión de Django:

Proporcione su nombre de usuario de administrador, contraseña y haga clic en Iniciar sesión. Debería ver el panel de control de Django en la siguiente página:

Ahora, regrese a su terminal y presione CTRL + C para detener el servidor de desarrollo de Django.
Verificar Django con Gunicorn
A continuación, también necesitará probar si Gunicorn puede servir a Django o no. Puede iniciar Django utilizando el servidor Gunicorn con el siguiente comando:
gunicorn --bind 0.0.0.0:8000 djangoapp.wsgiSi todo está bien, debería obtener la siguiente salida:
[2021-08-27 10:04:22 +0000] [47383] [INFO] Starting gunicorn 20.1.0
[2021-08-27 10:04:22 +0000] [47383] [INFO] Listening at: http://0.0.0.0:8000 (47383)
[2021-08-27 10:04:22 +0000] [47383] [INFO] Using worker: sync
[2021-08-27 10:04:22 +0000] [47384] [INFO] Booting worker with pid: 47384Presione CTRL + C para detener el servidor Gunicorn.
A continuación, desactive el entorno virtual de Python con el siguiente comando:
deactivateCrear un archivo de servicio Systemd para Gunicorn
A continuación, necesitará crear un archivo de servicio systemd para que Gunicorn inicie y detenga el servidor de la aplicación Django.
Puede crear un socket de Gunicorn con el siguiente comando:
nano /etc/systemd/system/gunicorn.socketAgregue las siguientes líneas:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.targetGuarde y cierre el archivo, luego cree un archivo de servicio para Gunicorn:
nano /etc/systemd/system/gunicorn.serviceAgregue las siguientes líneas que coincidan con la ruta de su proyecto Django:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/djangoapp
ExecStart=/root/djangoapp/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock djangoapp.wsgi:application
[Install]
WantedBy=multi-user.targetGuarde y cierre el archivo, luego establezca los permisos adecuados en el directorio del proyecto Django:
chown -R www-data:root ~/djangoappA continuación, recargue el demonio systemd con el siguiente comando:
systemctl daemon-reloadA continuación, inicie el servicio Gunicorn y habilítelo para que se inicie al reiniciar el sistema:
systemctl start gunicorn.socket
systemctl enable gunicorn.socketA continuación, verifique el estado de Gunicorn utilizando el siguiente comando:
systemctl status gunicorn.socketDebería obtener la siguiente salida:
? gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled)
Active: active (listening) since Fri 2021-08-27 10:05:46 UTC; 6s ago
Triggers: ? gunicorn.service
Listen: /run/gunicorn.sock (Stream)
CGroup: /system.slice/gunicorn.socket
Aug 27 10:05:46 debian11 systemd[1]: Listening on gunicorn socket.Configurar Nginx como un proxy inverso para Django
A continuación, necesitará configurar Nginx como un proxy inverso para servir a Django.
Para hacerlo, cree un archivo de configuración de Nginx:
nano /etc/nginx/conf.d/django.confAgregue las siguientes líneas:
server {
listen 80;
server_name django.example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/djangoapp;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}Guarde y cierre el archivo, luego verifique Nginx para cualquier error de configuración:
ginx -tSalida:nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulFinalmente, reinicie el servicio Nginx para aplicar los cambios:
systemctl restart nginxPara verificar el estado de Nginx, ejecute:
systemctl status nginxSalida de ejemplo:
? nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-08-27 10:06:59 UTC; 6s ago
Docs: man:nginx(8)
Process: 47494 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 47495 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 47496 (nginx)
Tasks: 2 (limit: 2341)
Memory: 2.5M
CPU: 49ms
CGroup: /system.slice/nginx.service
??47496 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
??47497 nginx: worker process
Aug 27 10:06:59 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 27 10:06:59 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Aug 27 10:06:59 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.Ahora, puede acceder a la aplicación Django utilizando la URL http://django.example.com/admin. También puede acceder a la aplicación Django utilizando la URL http://django.example.com/.

Conclusión
¡Felicidades! has instalado con éxito una aplicación Django con Gunicorn y Nginx como un proxy inverso. Ahora puede comenzar a implementar su aplicación Python utilizando el marco Django.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.