Hosting Python y Django en Chile: Cómo Desplegar Tu Aplicación Web
Django necesita un proceso WSGI persistente, no hosting PHP estándar. Esta guía explica qué hosting necesitas, cómo configurar el entorno y desplegar tu aplicación en servidores chilenos.
Hosting Python y Django en Chile: Cómo Desplegar Tu Aplicación Web
Desplegar una aplicación Django en producción no es como publicar un sitio WordPress. No basta con subir archivos por FTP — necesitas un servidor que soporte Python, un entorno virtual correctamente configurado, un servidor WSGI, y una cadena de configuración que muchos tutoriales dan por supuesta.
Si estás buscando cómo hacer esto en Chile, con un proveedor local y sin depender de AWS o servicios en inglés con soporte de 48 horas, esta guía es para ti.
¿Por qué Python/Django necesita un hosting diferente?
La mayoría de los hostings en Chile están optimizados para PHP. WordPress, WooCommerce, Laravel — todo PHP. Django es diferente en un punto clave: necesita un proceso Python persistente corriendo en el servidor, no solo interpretar archivos estáticos.
En PHP, cuando alguien visita tu sitio, el servidor web (Apache o LiteSpeed) invoca PHP, ejecuta el archivo, devuelve el HTML y termina. Stateless y simple.
En Python con Django, la aplicación necesita un servidor de aplicaciones (Gunicorn o uWSGI) que mantiene la aplicación en memoria y responde solicitudes. El servidor web (Nginx o Apache) actúa como proxy que reenvía las solicitudes al servidor WSGI.
Esta diferencia tiene implicaciones en el tipo de hosting que necesitas:
- Hosting compartido estándar: generalmente no permite procesos persistentes Python — no funciona para Django en producción
- Hosting compartido con Passenger: permite desplegar Django a través de Phusion Passenger como interfaz WSGI — funciona para proyectos medianos
- VPS o Cloud: control total del servidor, instalas Gunicorn, Nginx, PostgreSQL y cualquier dependencia — el camino correcto para producción seria
Requisitos técnicos del servidor para Python/Django
Antes de elegir hosting, verifica que cumple estos requisitos:
Python:
- Python 3.10 o superior (Django 5.x requiere Python 3.10+)
pipdisponible para instalar dependencias- Capacidad de crear entornos virtuales (
venvovirtualenv)
Servidor WSGI:
- Soporte para Gunicorn o uWSGI (en VPS los instalas tú)
- O soporte para Phusion Passenger (en hosting compartido con cPanel)
Base de datos:
- PostgreSQL 14+ (recomendado para Django)
- O MySQL/MariaDB (Django lo soporta pero no es la combinación nativa)
- SQLite solo para desarrollo local — nunca en producción
Sistema operativo:
- Linux (Ubuntu 22.04/24.04 LTS o Rocky Linux 8/9 son las opciones más comunes)
- Python 3.x disponible en PATH
Servidor web:
- Nginx (mejor opción para Django en VPS) o Apache con mod_wsgi
- LiteSpeed con LsAPI para Python (disponible en algunos hosting con Passenger)
Opciones de hosting para Python en Chile: compartido, VPS y cloud
Hosting compartido con Passenger (opción principiantes)
Phusion Passenger es un servidor de aplicaciones que se integra con Apache y LiteSpeed, permitiendo desplegar aplicaciones Python en hosting compartido. La configuración es más simple que un VPS pero con menos flexibilidad.
Cuándo elegir esta opción:
- Proyecto pequeño o en etapa de prototipo
- Sin requisitos avanzados de rendimiento
- Quieres empezar rápido sin gestionar servidor
Limitaciones:
- Control limitado sobre la versión de Python
- Sin acceso a
sudopara instalar dependencias del sistema - Rendimiento inferior al VPS bajo carga
- No adecuado para aplicaciones con workers Celery, Redis o tareas asíncronas pesadas
VPS (opción recomendada para producción)
Un VPS te da root access completo. Instalas Python, Gunicorn, Nginx, PostgreSQL y cualquier servicio que necesites. Es más trabajo inicial pero da control total y rendimiento previsible.
Por qué es la opción correcta para Django en producción:
- Instalas la versión exacta de Python que necesitas
- Configuras Gunicorn con tantos workers como necesites
- PostgreSQL con configuración optimizada para tu carga
- Variables de entorno y archivos
.envsin restricciones - Celery + Redis para tareas asíncronas sin limitaciones
Cloud hosting para Django
Para aplicaciones con tráfico variable, alta disponibilidad requerida o múltiples servicios (Django app, workers Celery, Redis, base de datos en instancia separada), el cloud es la opción más robusta.

Cómo desplegar Django en cPanel paso a paso
Para hosting compartido con cPanel y soporte Passenger:
Paso 1 — Verifica la versión de Python disponible
Accede a SSH y ejecuta:
python3 --version python3.11 --version # prueba versiones específicas
En cPanel moderno, también puedes ver las versiones disponibles en cPanel → Software → Setup Python App.
Paso 2 — Crea la aplicación Python en cPanel
Ve a cPanel → Software → Setup Python App:
- Versión Python: selecciona 3.10 o superior
- Directorio de la aplicación:
django-app(o el nombre de tu proyecto) - Dominio y directorio público: configura según tu estructura
- Clic en "Create"
Esto crea automáticamente un entorno virtual en ~/virtualenv/django-app/.
Paso 3 — Activa el entorno virtual e instala Django
cPanel genera un comando de activación al crear la app. Conectate por SSH y ejecutá ese comando. Luego:
pip install django gunicorn psycopg2-binary # psycopg2 para PostgreSQL pip install -r requirements.txt # si tienes archivo de dependencias
Paso 4 — Subí tu proyecto Django
Usá el Administrador de archivos de cPanel o SFTP para subir tu proyecto al directorio configurado. La estructura típica:
~/django-app/
myproject/
manage.py
myproject/
settings.py
urls.py
wsgi.py
apps/
requirements.txt
passenger_wsgi.py ← este archivo es clave para cPanel
Paso 5 — Configurá passenger_wsgi.py
Este archivo es el punto de entrada que Passenger usa para iniciar tu aplicación:
import os, sys
sys.path.insert(0, os.path.dirname(__file__))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Paso 6 — Configuración básica en settings.py
Para producción en cPanel:
DEBUG = False ALLOWED_HOSTS = ['tudominio.cl', 'www.tudominio.cl'] STATIC_ROOT = '/home/usuario/public_html/static/' MEDIA_ROOT = '/home/usuario/public_html/media/'
Paso 7 — Ejecutá migraciones y collectstatic
python manage.py migrate python manage.py collectstatic --noinput python manage.py createsuperuser
Paso 8 — Reiniciá la aplicación Passenger
En cPanel → Setup Python App → Restart. Tu aplicación Django debería estar accesible en el dominio configurado.
Configurar entorno virtual, WSGI y static files
Entorno virtual (virtualenv)
El entorno virtual aísla las dependencias de tu aplicación Django del sistema Python global. En VPS:
# Crear entorno virtual python3.11 -m venv /home/usuario/venv/django-app # Activar source /home/usuario/venv/django-app/bin/activate # Instalar dependencias pip install -r requirements.txt
Nunca instalés paquetes globalmente (sin virtualenv) en un servidor de producción. Si tienes varias aplicaciones Python en el mismo servidor, cada una debe tener su propio entorno virtual.
Gunicorn como servidor WSGI (en VPS)
Gunicorn es el servidor WSGI recomendado para Django en VPS:
# Instalar en el virtualenv pip install gunicorn # Arrancar manualmente (para probar) gunicorn --workers 3 --bind 127.0.0.1:8000 myproject.wsgi:application
Para producción, configurá Gunicorn como servicio systemd:
# /etc/systemd/system/django-app.service
[Unit]
Description=Django app Gunicorn
[Service]
User=usuario
Group=www-data
WorkingDirectory=/home/usuario/django-app
ExecStart=/home/usuario/venv/django-app/bin/gunicorn \
--workers 3 \
--bind unix:/home/usuario/django-app/django.sock \
myproject.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
systemctl enable django-app systemctl start django-app
Static files con Nginx
En producción, Django no debe servir archivos estáticos — Nginx lo hace directamente (más eficiente):
server {
listen 80;
server_name tudominio.cl;
location /static/ {
alias /home/usuario/django-app/staticfiles/;
}
location /media/ {
alias /home/usuario/django-app/media/;
}
location / {
proxy_pass http://unix:/home/usuario/django-app/django.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Bases de datos: PostgreSQL vs MySQL para Django
Django soporta ambas, pero PostgreSQL es la opción nativa y recomendada:
| PostgreSQL | MySQL/MariaDB | |
|---|---|---|
| Soporte Django | Nativo, primera clase | Soportado pero con limitaciones |
| Tipos de datos | JSONField nativo, ArrayField, HStore | JSON limitado, sin arrays |
| Transacciones | ACID completo | ACID con InnoDB |
| Full-text search | Superior | Básico |
| Velocidad con Django ORM | Ligeramente superior | Comparable en operaciones simples |
| Migraciones Django | Sin problemas | Requiere cuidado extra |
Configuración de PostgreSQL en Django:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'nombre_db',
'USER': 'usuario_db',
'PASSWORD': 'contraseña_segura',
'HOST': 'localhost',
'PORT': '5432',
}
}
Instalá el conector:
pip install psycopg2-binary # para desarrollo pip install psycopg2 # para producción (requiere libpq-dev)
Seguridad para aplicaciones Django en producción
Django tiene una arquitectura de seguridad sólida, pero requiere configuración correcta en producción:
Variables críticas en settings.py
# Nunca dejes DEBUG=True en producción
DEBUG = False # ❌ esto está bien, lo contrario sería el problema
# Especificá los dominios permitidos explícitamente
ALLOWED_HOSTS = ['tudominio.cl', 'www.tudominio.cl']
# SECRET_KEY desde variable de entorno, nunca hardcoded ✅
import os
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
# HTTPS obligatorio
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
Archivo .env para variables sensibles
Nunca commitees credenciales a Git. Usá python-dotenv:
pip install python-dotenv
# settings.py
from dotenv import load_dotenv
load_dotenv()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASSWORD'),
'HOST': os.environ.get('DB_HOST', 'localhost'),
}
}
Permisos de archivos
# El directorio del proyecto solo accesible por el usuario de la app chmod 750 /home/usuario/django-app/ chmod 600 /home/usuario/django-app/.env # Media y static pueden leer www-data chmod 755 /home/usuario/django-app/staticfiles/ chmod 755 /home/usuario/django-app/media/
Actualizaciones de dependencias
Django tiene un ciclo de versiones con soporte de seguridad definido. Siempre usá la versión LTS más reciente y mantén un proceso de actualización de dependencias.
# Revisar dependencias con vulnerabilidades conocidas pip install safety safety check
Comparativa: hosting Python en Chile 2026
| Opción | Costo mensual | Python version | PostgreSQL | Acceso SSH | Gunicorn/WSGI | Ideal para |
|---|---|---|---|---|---|---|
| cPanel con Passenger | $10.000–$25.000 CLP | 3.10–3.12 (según hosting) | MySQL (PostgreSQL en algunos) | Sí | Passenger | Prototipos, proyectos pequeños |
| VPS básico (2GB RAM) | $25.000–$50.000 CLP | Cualquiera | Sí (instalas tú) | Sí (root) | Gunicorn | Proyectos medianos en producción |
| VPS profesional (4-8GB RAM) | $50.000–$120.000 CLP | Cualquiera | Sí | Sí (root) | Gunicorn + Nginx | Aplicaciones con tráfico real |
| Cloud hosting | $60.000–$200.000 CLP | Cualquiera | Sí | Sí | Gunicorn + Nginx | Alta disponibilidad, escalado |
Recomendación por etapa:
- Prototipo / MVP: hosting compartido con cPanel Passenger
- Producción inicial: VPS básico con Gunicorn + Nginx + PostgreSQL
- Crecimiento: VPS profesional o cloud con autoescalado
Los planes VPS de Elevocloud incluyen acceso SSH root, soporte para Python 3.10+, instalación de PostgreSQL, y soporte técnico en español para ayudarte con la configuración inicial del entorno.

Despliega tu app Python en hosting chileno con soporte real. Conoce Elevocloud para desarrolladores →