PT
Iniciar sessão Criar conta

Como instalar o Django no Saplo (a tua própria aplicação em Python)

A aplicação Django precisa de um processo gunicorn em execução em segundo plano, não apenas de um diretório com ficheiros - exatamente como o Next.js do lado do Node. No Saplo, instalas o Django como um serviço gerido com reinício automático, migrações e a tua própria base de dados Postgres ligada através do `saplo.yaml`.

Grzegorz Kalmus ·

Django é um framework maduro para a criação de aplicações web e APIs em Python, com ORM, um sistema de migração e um painel de administrador integrado e pronto a usar. No entanto, uma aplicação Django personalizada precisa de um processo WSGI em execução (normalmente gunicorn) a ser mantido em segundo plano, não apenas de um diretório com ficheiros - tal como o Next.js precisa de um processo Node. Num alojamento partilhado normal, tal processo não pode ser executado. No Saplo, executas o Django como um serviço gerido com reinício automático, e o nginx serve ficheiros estáticos e multimédia ao lado.

Para quem é o Django na Saplo

Antes de começares a instalação, verifica se é uma boa escolha para o teu projeto:

  • Tens um projeto Django próprio - A Saplo executa o gunicorn como um serviço gerido, não precisas de escrever a configuração do systemd tu próprio,
  • API para uma aplicação móvel ou um frontend SPA separado - Django Rest Framework ou visualizações JSON normais, o frontend (React, Vue) é configurado separadamente a partir do mesmo diretório,
  • Projeto que cresceu a partir de um plano gratuito Heroku, Render ou PythonAnywhere - migras o código sem alterações na própria aplicação, adicionando apenas saplo.yaml,
  • Queres implementações com git push em vez de carregar ficheiros manualmente - conectas o repositório uma vez e a Saplo constrói, migra e reinicia o serviço automaticamente.

Requisitos

Para instalar o Django na Saplo, precisas de:

  • Um Box no plano L ou superior, se o projeto usar a sua própria base de dados Postgres e tráfego real - um starter com SQLite caberá num plano inferior, mas uma base de dados de produção e maior tráfego requerem mais RAM,
  • Mínimo de 256 MB de RAM livre e 2 GB de espaço em disco para o processo da aplicação (starter),
  • Versão Python 3.11 ou 3.12 para instalações do catálogo, 3.13 disponível para implementações via Git,
  • Um domínio ou subdomínio *.saploapp.pl incluído em cada plano,
  • Um repositório Git, se quiseres usar a implementação automática (opcional para começar, também podes carregar a aplicação como um arquivo .zip através do painel).

Instalação passo a passo

  1. No Painel da Saplo, vai a Catálogo de aplicações e escolhe Django (categoria "Aplicações").
  2. Indica a Box e o nome da aplicação - a partir dele é criado o subdomínio padrão <name>.saploapp.pl.
  3. Seleciona a versão do Python (3.11 ou 3.12, por predefinição 3.12) e confirma a instalação.
  4. O motor cria um novo projeto Django com uma base de dados SQLite (suficiente para iniciar e testar), configura o gunicorn através do supervisor na porta 8000, e o nginx encaminha o tráfego do domínio para esta porta.
  5. Após a conclusão da instalação, o domínio do passo 2 mostra o esqueleto Django em funcionamento - a partir deste momento, implementas o teu próprio projeto nele.

Implementar o teu próprio código através do Git

  1. Nos detalhes da aplicação, encontra a secção Git / CI-CD e clica em "Ligar GitHub", confirma a instalação da aplicação "Saplo Deploy" e seleciona o repositório com o projeto Django.
  2. No diretório raiz do repositório, coloca o ficheiro saplo.yaml com o comando de compilação (por exemplo, collectstatic) e os pacotes de sistema necessários (por exemplo, libpq-dev, se te conectares ao Postgres).
  3. As migrações são executadas pelo hook hooks.post_deploy: python manage.py migrate - executa-se após a compilação, antes do início da aplicação, para que não precises de te ligar via SSH após cada implementação.
  4. A tua própria base de dados Postgres é criada como uma aplicação separada do catálogo (Bases de dados), e ao criar a aplicação Django, seleciona-a na secção Ligar à base de dados - a variável DATABASE_URL é automaticamente adicionada ao processo da aplicação.
  5. Faz commit e push do saplo.yaml para o branch de produção (por predefinição main). Cada git push subsequente compila, migra e reinicia o serviço; podes ver o Estado no separador Deployments.

Exemplo de um ficheiro 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

Tens o teu próprio Dockerfile no projeto e preferes ter controlo total sobre o ambiente de execução? No catálogo, escolhe a stack Docker em vez de Django - assim, o Saplo não fará um build+gunicorn+nginx nativo para /static/, mas sim executará a tua imagem tal como a construíste.

Django na Saplo vs. alternativas

PythonAnywhere Heroku / Render Django na Saplo
Modelo de faturação limite de CPU no plano gratuito, planos superiores pagos consumo de recursos, aumenta com o tráfego custo fixo da Box
Implementações com Git limitadas, principalmente upload manual sim, nativo sim, git push para o ramo de produção
Migrações pós-implementação manualmente via consola release phase no Procfile hook post_deploy no saplo.yaml
Base de dados Postgres própria serviço separado, custo adicional addon separado, faturado à parte aplicação separada do mesmo catálogo

Perguntas Frequentes

A base de dados SQLite do starter é adequada para produção? Para tráfego baixo e testes, sim, mas com mais tráfego, liga o Postgres a partir do Catálogo de aplicações (secção Bases de dados) e seleciona-o ao criar a aplicação Django.

As migrações são executadas automaticamente a cada implementação? Sim, se adicionares o hook hooks.post_deploy: python manage.py migrate em saplo.yaml - executa-se após a construção, antes do início da aplicação.

Posso ter um processo adicional ao lado do Django, por exemplo, um worker Celery? Sim, o campo processes em saplo.yaml permite definir processos adicionais que são executados juntamente com o principal.

E se o meu projeto se conectar ao Postgres e precisar de libpq? Insere o pacote de sistema na secção packages do ficheiro saplo.yaml - será instalado antes da construção.

Vou receber SSL e o meu próprio Domínio? Sim, o certificado SSL é automático e o Domínio ou subdomínio *.saploapp.pl está incluído no preço de qualquer plano.

No Saplo, configuras o Django do zero para um domínio funcional em minutos, e cada git push subsequente constrói, migra e reinicia o serviço sem a tua intervenção. Se o projeto precisar de controlo total sobre o ambiente de execução através do teu próprio Dockerfile, encontrarás a stack Docker no mesmo diretório.

  • #Django
  • #Git Deploy
  • #Guia
  • #Python