Cómo Instalar Django en un Servidor de Hosting: Una Guía Completa Paso a Paso
Django es un framework web Python de alto nivel diseñado para fomentar el desarrollo rápido y un diseño limpio y pragmático. Sigue siendo una de las opciones más populares para construir aplicaciones web escalables, seguras y mantenibles, desde blogs simples hasta plataformas empresariales complejas. En esta guía completa, te guiaremos a través de cada paso necesario para instalar Django en un servidor de hosting, desde preparar tu entorno Linux hasta ejecutar tu primer proyecto y prepararlo para producción.
¿Por qué elegir Django para tu aplicación web?
Antes de sumergirse en el proceso de instalación, vale la pena entender por qué Django continúa dominando el panorama del desarrollo web en Python:
- Baterías incluidas: Django viene con autenticación integrada, panel de administración, ORM, manejo de formularios y características de seguridad listos para usar.
- Escalabilidad: Django potencia plataformas de alto tráfico como Instagram y Pinterest.
- Diseño orientado a la seguridad: Django protege contra vulnerabilidades comunes incluyendo inyección SQL, XSS, CSRF y clickjacking de forma predeterminada.
- Desarrollo rápido: Su filosofía de convención sobre configuración permite a los desarrolladores lanzar funciones más rápidamente.
- Ecosistema masivo: Miles de paquetes reutilizables y una gran comunidad significan que ya existen soluciones para casi cualquier problema.
Para aprovechar al máximo Django, querrás un entorno de servidor confiable. Un plan de Hosting VPS te proporciona el acceso root, recursos dedicados y flexibilidad que las aplicaciones Django demandan.
Requisitos previos
Antes de comenzar el proceso de instalación, asegúrate de tener lo siguiente en su lugar:
- Un servidor de hosting ejecutando una distribución Linux (se recomiendan Ubuntu 20.04/22.04 o Debian)
- Acceso SSH al servidor con privilegios sudo
- Python 3.8 o superior (se recomienda Python 3.10+)
pip(gestor de paquetes de Python) instalado- Familiaridad básica con la línea de comandos de Linux
> Consejo profesional: Si ejecutas una aplicación Django en producción, evita entornos de hosting compartido. Un plan de Hosting VPS o un Servidor Dedicado te proporcionará el control y rendimiento que tu aplicación necesita.
Paso 1: Conectarse a tu servidor mediante SSH
Abre tu terminal y establece una conexión SSH a tu servidor de hosting:
ssh username@server_ipReemplaza username con tu nombre de usuario del sistema real y server_ip con la dirección IP pública de tu servidor. Si estás usando un puerto SSH personalizado o un archivo de autenticación basado en claves, ajusta el comando en consecuencia:
ssh -i /path/to/your/key.pem username@server_ipUna vez conectado, tendrás una interfaz de línea de comandos para tu servidor donde puedes comenzar el proceso de configuración.
Paso 2: Actualizar tu sistema e instalar Python y pip
Mantener los paquetes del sistema actualizados es un primer paso crítico tanto para la seguridad como para la compatibilidad.
Actualizar el índice de paquetes
sudo apt update && sudo apt upgrade -yInstalar Python 3 y pip
La mayoría de las distribuciones modernas de Ubuntu y Debian vienen con Python 3 preinstalado. Verifica tu versión de Python primero:
python3 --versionSi Python 3 no está instalado, o necesitas pip, instálalos con:
sudo apt install python3 python3-pip -yVerifica las instalaciones:
python3 --version
pip3 --versionDeberías ver números de versión confirmando que ambas herramientas están disponibles.
Paso 3: Configurar un entorno virtual de Python
Usar un entorno virtual no es solo recomendado, es considerado una mejor práctica para cada proyecto de Python. Los entornos virtuales aíslan las dependencias de tu proyecto de la instalación de Python en todo el sistema y de otros proyectos en el mismo servidor, previniendo conflictos de versiones y manteniendo tu entorno limpio.
Instalar virtualenv
sudo pip3 install virtualenvAlternativamente, puedes usar el módulo venv integrado de Python (disponible en Python 3.3+):
sudo apt install python3-venv -yCrear tu directorio de proyecto y entorno virtual
Navega al directorio donde deseas alojar tu proyecto, o crea uno nuevo:
mkdir myproject
cd myprojectAhora crea el entorno virtual dentro de tu directorio de proyecto:
virtualenv venvO, usando el módulo venv integrado:
python3 -m venv venvActivar el entorno virtual
source venv/bin/activateUna vez activado, tu indicador de comando cambiará para mostrar el nombre del entorno virtual, por ejemplo:
(venv) username@server:~/myproject$Todos los comandos pip install ejecutados mientras el entorno virtual está activo instalarán paquetes solo dentro de este entorno aislado. Para desactivarlo en cualquier momento, simplemente ejecuta:
deactivatePaso 4: Instalar Django
Con tu entorno virtual activo, instala Django usando pip:
pip install djangoPara instalar una versión específica de Django (recomendado para producción para garantizar compatibilidad):
pip install django==4.2Verifica la instalación:
django-admin --versionDeberías ver el número de versión de Django instalado impreso en la terminal.
Paso 5: Crear un nuevo proyecto Django
Usa la herramienta de línea de comandos django-admin integrada de Django para crear un nuevo proyecto:
django-admin startproject myproject .> Nota: El punto final (.) le dice a Django que cree los archivos del proyecto en el directorio actual en lugar de crear un subdirectorio anidado. Esta es una estructura más limpia para la mayoría de los despliegues.
Tu directorio de proyecto ahora contendrá la siguiente estructura:
myproject/
├── manage.py
└── myproject/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.pymanage.py— Una utilidad de línea de comandos para interactuar con tu proyecto Django.settings.py— El archivo de configuración central para tu proyecto.urls.py— La configuración de enrutamiento de URL.wsgi.py/asgi.py— Puntos de entrada para servidores web compatibles con WSGI y ASGI.
Paso 6: Configurar la base de datos
Abre el archivo settings.py para configurar tu conexión a la base de datos:
nano myproject/settings.pyPredeterminado: SQLite (solo desarrollo)
De forma predeterminada, Django está configurado para usar SQLite, que es adecuado para desarrollo y pruebas pero no se recomienda para producción:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}Opción de producción: PostgreSQL
PostgreSQL es la base de datos más comúnmente recomendada para Django en producción. Primero, instala los paquetes necesarios:
sudo apt install postgresql postgresql-contrib libpq-dev -y
pip install psycopg2-binaryLuego actualiza la configuración DATABASES en settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}Opción de producción: MySQL / MariaDB
Si prefieres MySQL o MariaDB, instala el adaptador necesario:
sudo apt install default-libmysqlclient-dev -y
pip install mysqlclientLuego configura la configuración DATABASES:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}Configurar ALLOWED_HOSTS
Mientras estés en settings.py, también actualiza la configuración ALLOWED_HOSTS para incluir la dirección IP o nombre de dominio de tu servidor. Esto es necesario para que Django sirva solicitudes en modo sin depuración:
ALLOWED_HOSTS = ['your_server_ip', 'yourdomain.com', 'www.yourdomain.com']Paso 7: Aplicar migraciones de base de datos
Django usa un sistema de migración para gestionar cambios en el esquema de la base de datos. Ejecuta las migraciones iniciales para crear todas las tablas de base de datos necesarias:
python manage.py migrateVerás una salida listando cada migración siendo aplicada. Una migración exitosa se ve así:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
...Crear un superusuario (opcional pero recomendado)
Crea una cuenta de administrador para acceder a la interfaz de administración integrada de Django:
python manage.py createsuperuserSe te pedirá que ingreses un nombre de usuario, dirección de correo electrónico y contraseña.
Paso 8: Ejecutar el servidor de desarrollo de Django
Ahora puedes iniciar el servidor de desarrollo integrado de Django para verificar tu instalación:
python manage.py runserver 0.0.0.0:8000Este comando vincula el servidor de desarrollo a todas las interfaces de red disponibles en el puerto 8000. Abre tu navegador web y navega a:
http://your_server_ip:8000Deberías ver la página de bienvenida de Django, un cohete con el mensaje “¡La instalación funcionó correctamente! ¡Felicitaciones!”
Para acceder al panel de administración, navega a:
http://your_server_ip:8000/admin> Importante: El servidor de desarrollo integrado de Django no es adecuado para producción. Es de un solo hilo, no está optimizado para el rendimiento y carece de endurecimiento de seguridad. Siempre usa un servidor web de grado de producción para despliegues en vivo.
Paso 9: Preparar Django para producción (recomendado)
Para despliegues en producción, necesitas configurar un stack de servidor web adecuado. La configuración más común y recomendada es Nginx + Gunicorn.
Instalar Gunicorn
Con tu entorno virtual activo:
pip install gunicornPrueba que Gunicorn puede servir tu aplicación:
gunicorn --bind 0.0.0.0:8000 myproject.wsgiInstalar y configurar Nginx
sudo apt install nginx -yCrea un archivo de configuración de bloque de servidor Nginx:
sudo nano /etc/nginx/sites-available/myprojectAñade la siguiente configuración:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/username/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}Habilita la configuración y reinicia Nginx:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxRecopilar archivos estáticos
Actualiza settings.py con el directorio de archivos estáticos:
STATIC_ROOT = BASE_DIR / 'staticfiles'Luego recopila todos los archivos estáticos:
python manage.py collectstaticAsegurar tu aplicación con SSL
Para cualquier aplicación Django en producción, HTTPS es innegociable. Un Certificado SSL encripta datos en tránsito entre tu servidor y tus usuarios, protege información sensible y es necesario para indicadores de confianza del navegador moderno. AlexHost ofrece certificados SSL que se integran perfectamente con tu entorno de hosting.
Consideraciones adicionales de producción
Variables de entorno para configuraciones sensibles
Nunca codifiques valores sensibles como SECRET_KEY, contraseñas de base de datos o claves API en settings.py. Usa variables de entorno en su lugar:
pip install python-decoupleEn settings.py:
from decouple import config
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)Establecer DEBUG en False en producción
DEBUG = FalseEjecutar con DEBUG = True en producción expone páginas de error detalladas e información de configuración sensible a posibles atacantes.
Configurar un nombre de dominio
Si aún no has registrado un dominio para tu proyecto Django, Registro de Dominio a través de AlexHost hace que sea fácil apuntar tu dominio a tu servidor rápidamente, con gestión completa de DNS incluida.
Elegir el hosting correcto para tu aplicación Django
El entorno de hosting que elijas tiene un impacto significativo en el rendimiento, confiabilidad y escalabilidad de tu aplicación Django. Aquí hay una guía rápida:
| Caso de uso | Hosting recomendado |
|---|---|
| Desarrollo y pruebas | Hosting web compartido |
| Aplicaciones de producción pequeñas a medianas | Hosting VPS |
| Aplicaciones de alto tráfico o intensivas en recursos | Servidores Dedicados |
| Aplicaciones Django integradas con aprendizaje automático / IA | Hosting GPU |
Para la mayoría de los proyectos Django que se mueven a producción, un plan de Hosting VPS ofrece el equilibrio ideal entre rendimiento, control y rentabilidad. Obtienes acceso root, la capacidad de instalar cualquier stack de software y recursos dedicados que el hosting compartido no puede proporcionar.
Solución de problemas comunes de instalación de Django
pip: command not found
Instala pip manualmente: sudo apt install python3-pip -y
django-admin: command not found
Tu entorno virtual puede no estar activado. Ejecuta source venv/bin/activate e intenta de nuevo.
Puerto 8000 no accesible
Verifica las reglas del firewall de tu servidor. En Ubuntu con UFW:
sudo ufw allow 8000
sudo ufw reloadConexión a base de datos rechazada
Verifica que tu servicio de base de datos esté ejecutándose:
sudo systemctl status postgresql
# or
sudo systemctl status mysqlALLOWED_HOSTS Error
Asegúrate de que la dirección IP o nombre de dominio de tu servidor esté listado en la configuración ALLOWED_HOSTS en settings.py
on All Hosting Services
