Django es un framework maduro para construir aplicaciones web y API en Python, con ORM, un sistema de migración y un panel de administración incorporado de inmediato. Sin embargo, una aplicación Django necesita un proceso WSGI en funcionamiento (generalmente gunicorn) que se ejecute en segundo plano, no solo un directorio con archivos, exactamente como Next.js necesita un proceso de Node. En un hosting compartido normal, dicho proceso no se puede ejecutar. En Saplo, ejecutas Django como un servicio gestionado con reinicio automático, y nginx sirve archivos estáticos y medios junto a él.
Para quién es Django en Saplo
Antes de empezar la instalación, comprueba si es una buena opción para tu proyecto:
- Tienes tu propio proyecto Django - Saplo ejecuta Gunicorn como un servicio gestionado, no necesitas escribir tu propia configuración de systemd.
- API para una aplicación móvil o un frontend SPA separado - Django Rest Framework o vistas JSON habituales, el frontend (React, Vue) lo configuras por separado desde el mismo directorio.
- Proyecto que creció de un plan gratuito de Heroku, Render o PythonAnywhere - Migras el código sin cambios en la aplicación, solo añades
saplo.yaml. - Quieres despliegues con
git pushen lugar de subir archivos manualmente - Conectas el repositorio una vez y Saplo construye, migra y reinicia el servicio automáticamente.
Requisitos
Para configurar Django en Saplo, necesitas:
- Un Box en el plan L o superior, si el proyecto va a usar su propia base de datos Postgres y tráfico real. Un starter con SQLite cabe en un plan inferior, pero una base de datos de producción y un mayor tráfico necesitan más RAM.
- Un mínimo de 256 MB de RAM libre y 2 GB de espacio en disco para el proceso de la aplicación (starter).
- Versión de Python 3.11 o 3.12 para instalaciones desde el catálogo, 3.13 disponible para despliegues vía Git.
- Un Dominio o subdominio
*.saploapp.plincluido en el precio de cada plan. - Un repositorio Git, si quieres usar el despliegue automático (opcional al inicio, también puedes subir la aplicación como un archivo
.zipa través del panel).
Instalación paso a paso
- En el panel de control de Saplo, ve a Catálogo de aplicaciones y elige Django (categoría "Aplicaciones").
- Indica el Box y el nombre de la aplicación - de este se genera el subdominio predeterminado
<name>.saploapp.pl. - Elige la versión de Python (3.11 o 3.12, por defecto 3.12) y confirma la instalación.
- El motor crea un nuevo proyecto Django con una base de datos SQLite (suficiente para iniciar y probar), configura gunicorn a través del supervisor en el puerto 8000, y nginx proxy'a el tráfico del dominio a ese puerto.
- Una vez finalizada la instalación, el dominio del paso 2 muestra un esqueleto de Django en funcionamiento - a partir de este momento, implementas tu propio proyecto en él.
Implementación de código propio mediante Git
- En los detalles de la aplicación, busca la sección Git / CI-CD y haz clic en "Conectar GitHub", confirma la instalación de la aplicación "Saplo Deploy" e indica el repositorio con el proyecto Django.
- En el directorio raíz del repositorio, coloca el archivo
saplo.yamlcon el comando de construcción (por ejemplo,collectstatic) y los paquetes de sistema adicionales (por ejemplo,libpq-dev, si te conectas a Postgres). - Las migraciones se ejecutan con el hook
hooks.post_deploy: python manage.py migrate, que se ejecuta después de la construcción y antes del inicio de la aplicación, por lo que no necesitas conectarte por SSH después de cada implementación. - Puedes configurar tu propia base de datos Postgres como una aplicación separada del catálogo (Bases de datos), y al crear la aplicación Django, selecciónala en la sección Conectar con la base de datos. La variable
DATABASE_URLse añade automáticamente al proceso de la aplicación. - Haz commit y push de
saplo.yamla la rama de producción (por defecto,main). Cadagit pushposterior construye, migra y reinicia el servicio; puedes ver el estado en la pestaña Despliegues.
Ejemplo de un archivo saplo.yaml mínimo para Django:
name: my-project
stack: django
runtime:
python: "3.13"
build:
install: pip install -r requirements.txt
command: python manage.py collectstatic --noinput
packages:
- libpq-dev
env:
DJANGO_SETTINGS_MODULE: config.settings.production
hooks:
post_deploy: python manage.py migrate
start:
command: gunicorn config.wsgi:application
port: 8000
Tienes tu propio Dockerfile en el proyecto y prefieres tener un control total sobre el entorno de ejecución? Elige el stack Docker en el catálogo en lugar de Django; de esta manera, Saplo no hará el build+gunicorn+nginx nativo para /static/, sino que ejecutará tu imagen tal como la has construido.
Django en Saplo vs. alternativas
| PythonAnywhere | Heroku / Render | Django en Saplo | |
|---|---|---|---|
| Modelo de facturación | límite de CPU en el plan gratuito, planes superiores de pago | consumo de recursos, aumenta con el tráfico | costo fijo de Box |
| Despliegues desde Git | limitados, principalmente carga manual | sí, de forma nativa | sí, git push a la rama de producción |
| Migraciones después del despliegue | manualmente a través de la consola | release phase en Procfile | hook post_deploy en saplo.yaml |
| Base de datos Postgres propia | servicio separado, costo adicional | complemento separado, facturado aparte | aplicación separada del mismo catálogo |
Preguntas frecuentes
¿Es adecuada la base de datos SQLite del iniciador para producción? Sí, para tráfico pequeño y pruebas, pero para mayor tráfico, conecta PostgreSQL desde el Catálogo de aplicaciones (sección Bases de datos) y selecciónalo al crear la aplicación Django.
¿Las migraciones se ejecutan automáticamente con cada despliegue?
Sí, si añades el hook hooks.post_deploy: python manage.py migrate en saplo.yaml; se ejecuta después de la compilación, antes de que la aplicación se inicie.
¿Puedo tener un proceso adicional junto a Django, como un worker de Celery?
Sí, el campo processes en saplo.yaml te permite definir procesos adicionales que se ejecutan junto con el principal.
¿Qué pasa si mi proyecto se conecta a PostgreSQL y necesita libpq?
Introduce el paquete del sistema en la sección packages del archivo saplo.yaml; se instalará antes de la compilación.
¿Obtendré SSL y mi propio Dominio?
Sí, el certificado SSL es automático, y el Dominio o subdominio *.saploapp.pl está incluido en el precio de cada plan.
En Saplo, puedes configurar Django desde cero hasta un Dominio funcional en minutos, y cada git push posterior compila, migra y reinicia el servicio sin tu intervención. Si el proyecto necesita control total sobre el entorno de ejecución a través de su propio Dockerfile, encontrarás el stack de Docker en el mismo directorio.
- #Django
- #Git Deploy
- #Guía
- #Python
