IT
Accedi Crea un account

Come installare Django su Saplo (la tua applicazione Python)

Un'applicazione Django ha bisogno di un processo gunicorn in background funzionante, non solo di una directory con file, proprio come Next.js lato Node. Su Saplo, installi Django come servizio gestito con riavvio automatico, migrazioni e il tuo database Postgres collegato tramite `saplo.yaml`.

Grzegorz Kalmus ·

Django è un framework maturo per la creazione di applicazioni web e API in Python, con ORM, un sistema di migrazione e un pannello di amministrazione integrati. Tuttavia, la tua applicazione Django ha bisogno di un processo WSGI funzionante (solitamente gunicorn) mantenuto in background, non solo di una directory di file - proprio come Next.js ha bisogno di un processo Node. Non è possibile eseguire un tale processo su un normale hosting condiviso. Su Saplo, esegui Django come servizio gestito con riavvio automatico e nginx serve file statici e media accanto ad esso.

A chi è rivolto Django su Saplo

Prima di iniziare l'installazione, verifica se è la scelta giusta per il tuo progetto:

  • hai un tuo progetto Django - Saplo esegue gunicorn come servizio gestito, non devi scrivere tu la configurazione systemd,
  • API per un'applicazione mobile o un frontend SPA separato - Django Rest Framework o semplici viste JSON, il frontend (React, Vue) lo installi separatamente dalla stessa directory,
  • un progetto che è cresciuto oltre il piano gratuito di Heroku, Render o PythonAnywhere - migri il codice senza modifiche all'applicazione stessa, aggiungi solo saplo.yaml,
  • vuoi implementazioni con git push invece di caricare i file manualmente - colleghi il repository una volta, e Saplo costruisce, migra e riavvia il servizio automaticamente.

Requisiti

Per configurare Django su Saplo, ti servirà:

  • Un Box nel piano L o superiore, se il progetto deve utilizzare il proprio database Postgres e traffico reale - un progetto di avvio con SQLite può rientrare in un piano inferiore, ma un database di produzione e un traffico maggiore richiedono una riserva di RAM,
  • Un minimo di 256 MB di RAM libera e 2 GB di spazio su disco per il solo processo dell'applicazione (starter),
  • Python versione 3.11 o 3.12 per l'installazione dal catalogo, 3.13 disponibile per le distribuzioni tramite Git,
  • Un Dominio o sottodominio *.saploapp.pl incluso in ogni piano,
  • Un repository Git, se desideri utilizzare la distribuzione automatica (opzionale per iniziare, puoi anche caricare l'applicazione come archivio .zip tramite il Pannello).

Installazione passo dopo passo

  1. Nel Pannello Saplo, vai su Catalogo delle applicazioni e seleziona Django (categoria "Applicazioni").
  2. Indica il Box e il nome dell'applicazione - da questo verrà creato il sottodominio predefinito <name>.saploapp.pl.
  3. Scegli la versione di Python (3.11 o 3.12, per impostazione predefinita 3.12) e conferma l'installazione.
  4. Il motore crea un nuovo progetto Django con un database SQLite (sufficiente per l'avvio e i test), configura gunicorn tramite supervisord sulla porta 8000, e nginx fa da proxy al traffico dal Dominio a questa porta.
  5. Al termine dell'installazione, il Dominio del passaggio 2 mostra lo scheletro Django funzionante - da questo momento puoi distribuire il tuo progetto su di esso.

Implementa il tuo codice tramite Git

  1. Nei dettagli dell'applicazione, trova la sezione Git / CI-CD e clicca su "Connetti GitHub", conferma l'installazione dell'applicazione "Saplo Deploy" e indica il repository con il progetto Django.
  2. Nella directory principale del repository, inserisci il file saplo.yaml con il comando di build (ad esempio, collectstatic) ed eventuali pacchetti di sistema (ad esempio, libpq-dev, se ti connetti a PostgreSQL).
  3. Puoi eseguire le migrazioni con l'hook hooks.post_deploy: python manage.py migrate - viene eseguito dopo il build, prima dell'avvio dell'applicazione, quindi non devi connetterti tramite SSH dopo ogni implementazione.
  4. La tua base di dati PostgreSQL la crei come applicazione separata dal catalogo (Database), e durante la creazione dell'applicazione Django la selezioni nella sezione Connetti al database - la variabile DATABASE_URL viene automaticamente inclusa nel processo dell'applicazione.
  5. Effettua il commit e il push di saplo.yaml al ramo di produzione (di default main). Ogni successivo git push costruisce, migra e riavvia il servizio, lo stato lo vedi nella scheda Deployment.

Esempio di un file saplo.yaml minimo per 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

Hai il tuo Dockerfile nel progetto e preferisci il controllo completo sull'ambiente di runtime? Scegli lo stack Docker dal catalogo invece di Django - in questo caso Saplo non effettuerà un build+gunicorn+nginx nativo per /static/, ma avvierà la tua immagine così come l'hai costruita.

Django su Saplo vs. alternative

PythonAnywhere Heroku / Render Django su Saplo
Modello di fatturazione Limite CPU sul piano gratuito, a pagamento per livelli superiori Consumo di risorse, cresce con il traffico Costo fisso del Box
Distribuzioni da Git Limitate, principalmente upload manuale Sì, nativamente Sì, git push per il ramo di produzione
Migrazioni dopo il deploy Manualmente tramite console Fase di rilascio in Procfile Hook post_deploy in saplo.yaml
Database Postgres proprio Servizio separato, costo aggiuntivo Componente aggiuntivo separato, fatturato a parte Applicazione separata dalla stessa directory

Domande frequenti

Il database SQLite dello starter è adatto alla produzione? Per un traffico ridotto e per i test sì, ma con un traffico maggiore collega un database Postgres dal Catalogo delle applicazioni (sezione Database) e selezionalo quando crei l'applicazione Django.

Le Migrazioni vengono eseguite automaticamente ad ogni deployment? Sì, se aggiungi l'hook hooks.post_deploy: python manage.py migrate in saplo.yaml - viene eseguito dopo il build, prima dell'avvio dell'applicazione.

Posso avere un processo aggiuntivo accanto a Django, ad esempio un worker Celery? Sì, il campo processes in saplo.yaml ti permette di definire processi aggiuntivi eseguiti insieme a quello principale.

Cosa succede se il mio progetto si connette a Postgres e ha bisogno di libpq? Inserisci il pacchetto di sistema nella sezione packages del file saplo.yaml - verrà installato prima del build.

Riceverò un certificato SSL e il mio Dominio? Sì, il certificato SSL è automatico e il tuo Dominio o sottodominio *.saploapp.pl è incluso nel Prezzo di ogni piano.

Puoi configurare Django su Saplo da zero a un Dominio funzionante in pochi minuti, e ogni successivo git push costruisce, migra e riavvia il servizio senza il tuo intervento. Se il progetto necessita del controllo completo sull'ambiente di runtime tramite il proprio Dockerfile, troverai lo stack Docker nella stessa directory.

  • #Django
  • #Git Deploy
  • #Guida
  • #Python