ES
Inicia sesión Crea tu cuenta

Cómo instalar Django en Saplo (tu propia aplicación Python)

Una aplicación Django necesita un proceso gunicorn en segundo plano, no solo un directorio de archivos, al igual que Next.js en Node. En Saplo, puedes configurar Django como un servicio gestionado con reinicio automático, con migraciones y tu propia base de datos Postgres conectada a través de `saplo.yaml`.

Grzegorz Kalmus ·

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 push en 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.pl incluido 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 .zip a través del panel).

Instalación paso a paso

  1. En el panel de control de Saplo, ve a Catálogo de aplicaciones y elige Django (categoría "Aplicaciones").
  2. Indica el Box y el nombre de la aplicación - de este se genera el subdominio predeterminado <name>.saploapp.pl.
  3. Elige la versión de Python (3.11 o 3.12, por defecto 3.12) y confirma la instalación.
  4. 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.
  5. 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

  1. 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.
  2. En el directorio raíz del repositorio, coloca el archivo saplo.yaml con el comando de construcción (por ejemplo, collectstatic) y los paquetes de sistema adicionales (por ejemplo, libpq-dev, si te conectas a Postgres).
  3. 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.
  4. 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_URL se añade automáticamente al proceso de la aplicación.
  5. Haz commit y push de saplo.yaml a la rama de producción (por defecto, main). Cada git push posterior 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