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 pushinvece 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.plincluso in ogni piano, - Un repository Git, se desideri utilizzare la distribuzione automatica (opzionale per iniziare, puoi anche caricare l'applicazione come archivio
.ziptramite il Pannello).
Installazione passo dopo passo
- Nel Pannello Saplo, vai su Catalogo delle applicazioni e seleziona Django (categoria "Applicazioni").
- Indica il Box e il nome dell'applicazione - da questo verrà creato il sottodominio predefinito
<name>.saploapp.pl. - Scegli la versione di Python (3.11 o 3.12, per impostazione predefinita 3.12) e conferma l'installazione.
- 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.
- 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
- 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.
- Nella directory principale del repository, inserisci il file
saplo.yamlcon il comando di build (ad esempio,collectstatic) ed eventuali pacchetti di sistema (ad esempio,libpq-dev, se ti connetti a PostgreSQL). - 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. - 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_URLviene automaticamente inclusa nel processo dell'applicazione. - Effettua il commit e il push di
saplo.yamlal ramo di produzione (di defaultmain). Ogni successivogit pushcostruisce, 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
