branchway

Django hosten

Django läuft mit Gunicorn als Web-Prozess. Zu klären sind drei Dinge: Migrationen, statische Dateien und der Ort für hochgeladene Medien.

Procfile und Abhängigkeiten

# Procfile
web: python manage.py migrate --noinput && gunicorn projekt.wsgi --bind 0.0.0.0:$PORT --workers 2
# requirements.txt
django
gunicorn
whitenoise
psycopg[binary]

Statische Dateien mit WhiteNoise

Ohne eigenen Webserver liefert WhiteNoise CSS und JavaScript direkt aus Django aus:

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "whitenoise.middleware.WhiteNoiseMiddleware",
    # …
]
STATIC_ROOT = BASE_DIR / "staticfiles"

Das Einsammeln gehört in den Build oder den Start: python manage.py collectstatic --noinput.

Hochgeladene Dateien

Uploads gehören in den dauerhaften Speicher, nicht ins Projektverzeichnis – das wird bei jedem Deployment ersetzt:

import os
MEDIA_ROOT = os.path.join(os.environ.get("BRANCHWAY_DATEN", "/daten"), "media")

Häufige Fragen

Welche Datenbank kann ich nutzen?

Verwaltete PostgreSQL, MySQL, MariaDB oder Redis per Klick – oder jede andere erreichbare Datenbank, angebunden über eine Umgebungsvariable.

Wie laufen regelmäßige Aufgaben?

Über zeitgesteuerte Aufgaben in der Console, etwa ein nächtliches Management-Kommando. Celery-Worker laufen als Prozess im Procfile.

Weiterlesen