Django ist ein ausgereiftes Framework für die Entwicklung von Webanwendungen und APIs mit Python, das sofort mit ORM, einem Migrationssystem und einem Admin-Panel ausgestattet ist. Eine eigene Django-Anwendung benötigt jedoch einen laufenden WSGI-Prozess (üblicherweise Gunicorn), der im Hintergrund gehalten wird, nicht nur ein Verzeichnis mit Dateien - genau wie Next.js einen Node-Prozess benötigt. Auf einem normalen Shared-Hosting kann ein solcher Prozess nicht ausgeführt werden. Auf Saplo betreibst du Django als verwalteten Dienst mit automatischem Neustart, und Nginx serviert daneben statische Dateien und Medien.
Für wen ist Django auf Saplo gedacht?
Bevor du mit der Installation beginnst, prüfe, ob es die richtige Wahl für dein Projekt ist:
- Du hast ein eigenes Django-Projekt - Saplo führt Gunicorn als verwalteten Dienst aus, du musst keine eigene systemd-Konfiguration schreiben.
- API für eine mobile Anwendung oder ein separates SPA-Frontend - Django Rest Framework oder einfache JSON-Views. Das Frontend (React, Vue) hostest du separat aus demselben Verzeichnis.
- Ein Projekt, das aus einem kostenlosen Plan von Heroku, Render oder PythonAnywhere herausgewachsen ist - Du migrierst den Code ohne Änderungen an der Anwendung selbst. Du fügst lediglich
saplo.yamlhinzu. - Du möchtest Deployments mit
git pushanstelle des manuellen Hochladens von Dateien - Du verbindest das Repository einmal, und Saplo erstellt, migriert und startet den Dienst automatisch neu.
Anforderungen
Um Django auf Saplo einzurichten, benötigst du:
- Eine Box im Plan L oder höher, wenn das Projekt eine eigene Postgres-Datenbank und realen Traffic nutzen soll. Ein Starter mit SQLite passt auf einen niedrigeren Plan, aber eine Produktionsdatenbank und größerer Traffic benötigen mehr RAM.
- Mindestens 256 MB freien RAM und 2 GB Speicherplatz für den Anwendungsprozess selbst (Starter).
- Python-Version 3.11 oder 3.12 bei Installation aus dem Katalog, 3.13 verfügbar bei Git-Bereitstellungen.
- Eine Domain oder Subdomain
*.saploapp.plim Preis jedes Plans inbegriffen. - Ein Git-Repository, wenn du automatisches Deployment nutzen möchtest (optional für den Start, du kannst die Anwendung auch als Archiv
.zipüber das Panel hochladen).
Schritt-für-Schritt-Installation
- Gehe im Saplo-Panel zum App-Katalog und wähle Django (Kategorie "Anwendungen").
- Wähle die Box und den Anwendungsnamen aus - daraus entsteht die Standard-Subdomain
<name>.saploapp.pl. - Wähle die Python-Version (3.11 oder 3.12, Standard ist 3.12) und bestätige die Installation.
- Die Engine erstellt ein neues Django-Projekt mit einer SQLite-Datenbank (ausreichend für Start und Tests), konfiguriert Gunicorn über Supervisor auf Port 8000, und Nginx leitet den Traffic von der Domain auf diesen Port weiter.
- Nach Abschluss der Installation zeigt die Domain aus Schritt 2 ein funktionierendes Django-Framework an - ab diesem Zeitpunkt kannst du dein eigenes Projekt darauf bereitstellen.
Eigenen Code per Git bereitstellen
- Navigieren Sie in den App-Details zum Abschnitt Git / CI-CD und klicken Sie auf „GitHub verbinden“. Bestätigen Sie die Installation der Anwendung „Saplo Deploy“ und wählen Sie das Repository mit Ihrem Django-Projekt aus.
- Legen Sie im Hauptverzeichnis des Repositorys die Datei
saplo.yamlmit dem Build-Befehl (z.B.collectstatic) und eventuellen Systempaketen (z.B.libpq-dev, wenn Sie eine Verbindung zu PostgreSQL herstellen) ab. - Datenbank-Migrationen können Sie mit dem Hook
hooks.post_deploy: python manage.py migrateausführen. Dieser wird nach dem Build und vor dem Start der Anwendung ausgeführt, sodass Sie sich nach jeder Bereitstellung nicht per SSH verbinden müssen. - Ihre eigene PostgreSQL-Datenbank richten Sie als separate Anwendung aus dem App-Katalog (Datenbanken) ein. Bei der Erstellung Ihrer Django-Anwendung wählen Sie diese im Abschnitt Mit Datenbank verbinden aus. Die Variable
DATABASE_URLwird automatisch an den Anwendungsprozess übergeben. - Committen und pushen Sie
saplo.yamlauf den Produktions-Branch (standardmäßigmain). Jeder nachfolgendegit pusherstellt, migriert und startet den Dienst neu. Den Status sehen Sie auf dem Tab Deployments.
Beispiel für eine minimale saplo.yaml Datei für 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
Haben Sie eine eigene Dockerfile in Ihrem Projekt und bevorzugen Sie die volle Kontrolle über die Laufzeitumgebung? Wählen Sie im Katalog den Docker-Stack anstelle von Django. Saplo führt dann keinen nativen Build+Gunicorn+Nginx für /static/ aus, sondern startet Ihr Image so, wie Sie es erstellt haben.
Django auf Saplo vs. Alternativen
| PythonAnywhere | Heroku / Render | Django auf Saplo | |
|---|---|---|---|
| Abrechnungsmodell | CPU-Limit im kostenlosen Plan, kostenpflichtige höhere Pläne | Ressourcenverbrauch, steigt mit dem Traffic | Feste Box-Kosten |
| Bereitstellungen von Git | Eingeschränkt, hauptsächlich manueller Upload | Ja, nativ | Ja, git push für den Produktionszweig |
| Migrationen nach der Bereitstellung | Manuell über die Konsole | Release-Phase in Procfile | Hook post_deploy in saplo.yaml |
| Eigene Postgres-Datenbank | Separater Dienst, zusätzliche Kosten | Separates Add-on, separat abgerechnet | Separate Anwendung aus demselben Katalog |
Häufig gestellte Fragen
Ist die SQLite-Datenbank aus dem Starter für die Produktion geeignet? Für geringen Traffic und Tests ja, aber bei höherem Traffic verbinde Postgres aus dem App-Katalog (Datenbanken-Sektion) und wähle es bei der Erstellung der Django-App aus.
Werden Migrationen bei jeder Bereitstellung automatisch ausgeführt?
Ja, wenn du den Hook hooks.post_deploy: python manage.py migrate in saplo.yaml hinzufügst - er wird nach dem Build, vor dem Start der Anwendung, ausgeführt.
Kann ich neben Django einen zusätzlichen Prozess haben, z.B. einen Celery-Worker?
Ja, das Feld processes in saplo.yaml ermöglicht es dir, zusätzliche Prozesse zu definieren, die zusammen mit dem Hauptprozess gestartet werden.
Was, wenn mein Projekt sich mit Postgres verbindet und libpq benötigt?
Gib das Systempaket im Abschnitt packages der Datei saplo.yaml ein - es wird vor dem Build installiert.
Bekomme ich SSL und eine eigene Domain?
Ja, das SSL-Zertifikat ist automatisch, und die Domain oder Subdomain *.saploapp.pl ist im Preis jedes Plans inbegriffen.
Du kannst Django auf Saplo innerhalb weniger Minuten von Grund auf zu einer funktionierenden Domain aufsetzen, und jedes weitere git push erstellt, migriert und startet den Dienst ohne dein Zutun neu. Wenn das Projekt volle Kontrolle über die Laufzeitumgebung durch ein eigenes Dockerfile benötigt, findest du im selben Verzeichnis den Docker-Stack.
- #Django
- #Git Deploy
- #Anleitung
- #Python
