Python
Die Deploio-Build-Umgebung nutzt das Paketo Python Buildpack.
Beispiel-App
Eine einfache Python Django App zeigen wir in unserem
Beispiele-Repository. Du
kannst diese mit nctl deployen. Die Beispiel-Anwendung zeigt bei jedem
Neuladen der Seite eine zufällig ausgewählte Mitteilung. Über die
Django-Admin-Schnittstelle kannst du weitere Mitteilungen hinzufügen. Besuche
dazu einfach https://<URL of app>/admin, um auf die Schnittstelle
zuzugreifen. Logge dich mit den Login-Daten ein, die du über die
untenstehenden Umgebungsvariablen erstellst. Definiere bitte auch einen
SECRET_KEY, der zur Sicherung der signierten Daten dient und nicht
weitergegeben werden sollte.
nctl create application django-example \
--git-url=https://github.com/ninech/deploio-examples \
--git-sub-path=python/django \
--env=DJANGO_SU_NAME=admin \
--env=DJANGO_SU_EMAIL=admin@example.com \
--env=DJANGO_SU_PASSWORD=<INSERT A PASSWORD HERE> \
--env=SECRET_KEY=<LONG RANDOM STRING>
Build-Umgebungsvariablen
Das Python-Buildpack unterstützt nur wenige Umgebungsvariablen. Du findest diese in der Paketo-Dokumentation.
Besonderheiten bei Django
Procfile
Bei einer Django-Anwendung musst du ein Procfile im Root deines
Anwendungs-Quellcodes erstellen, welche den standardmässigen „Web“-Eingangspunkt
in eine gültige wsgi
Projektkonfigurationsdatei
umwandelt, welche von gunicorn bedient wird. Das Procfile in unserer
Beispiel-Anwendung sieht etwa so aus:
web: gunicorn deploio.wsgi
ALLOWED_HOSTS konfigurieren
Die Einstellung ALLOWED_HOSTS definiert die erlaubten Hostnamen/Domains,
welche die Django-Seite bedienen darf. Um bei deiner Anwendung die Nutzung der
standardmässigen Deploio-URLs zu ermöglichen, kannst du folgendes in deiner
settings.py Datei eintragen:
ALLOWED_HOSTS = [".deploio.app"]
Bitte beachte, dass du dieser Liste alle deine Domainnamen hinzufügen
musst. Wenn deine Anwendung also über django-app.example.com bedient werden
soll, sollten deine ALLOWED_HOSTS so aussehen:
ALLOWED_HOSTS = [
"deploio.app",
"django-app.example.com",
]
SECRET_KEY konfigurieren
Der SECRET_KEY-Parameter wird verwendet, um signierte Daten in Django zu
sichern. Er sollte sicher verwahrt werden und daher nicht zusammen mit deinem
Anwendungscode abgelegt werden. Eine Möglichkeit, ihn zu definieren, bietet das
Laden aus der Umgebung. Dazu kannst du den folgenden Code in deiner
settings.py-Datei einfügen:
# The secret key can be passed via the env variable "SECRET_KEY"
SECRET_KEY = os.environ.get('SECRET_KEY')
if SECRET_KEY == None:
raise ValueError("SECRET_KEY environment variable must be set")
Danach musst du die Umgebungsvariable SECRET_KEY mit nctl definieren, wie
du im Abschnitt Beispiel-App sehen kannst.