Django ist ein Framework, um Web-Applikationen in Python zu entwickeln.
Auf Ihrem Managed Flex Server bieten wir Ihnen die neusten Python-Versionen an. Diese Versionen werden von uns regelmässig aktualisiert.
In dieser Anleitung ist beschrieben, wie Sie eine Django-Applikation auf Ihrem Managed Flex Server in Betrieb nehmen können.
Anforderungen
Um eine Django-Applikation in Betrieb nehmen zu können, benötigten Sie mindestens einen Managed Flex Server M.
Erstellen einer Django-Applikation
In dieser Anleitung wird eine einfache «Hello World»-Applikation erstellt, welche einen simplen Text auf HTTP-Anfragen ausliefert.
Wir empfehlen Ihnen, für Ihre eigenen Applikationen einen Ordner ~/app/ und darin jeweils für jede Ihrer Applikationen einen eigenen Unterordner zu erstellen. So haben Sie jederzeit eine saubere Ordnung und eine klare Übersicht. Für die Django-Applikation erstellen wir daher den Ordner ~/app/helloworld und wechseln in diesen Ordner:
mkdir -p ~/app/helloworld
cd ~/app/helloworld
Im neu erstellten Applikations-Ordner ~/app/helloworld erstellen Sie nun die benötigte Struktur für Ihre Applikation. In diesem Beispiel wird ein einfaches Django-Projekt aufgesetzt:
python3 -m venv venv
source venv/bin/activate
pip install django gunicorn
django-admin startproject helloworld .
Es ist empfohlen, Ihre Python-Projekte jeweils in eigene, separate «Virtual Environments» zu installieren. In diesem Beispiel wird dies mittels "python3 -m venv venv && source venv/bin/activate" gemacht.
In diesem Beispiel wird ein einfacher Text auf HTTP-Requests ausgegeben. Bearbeiten Sie hierzu die Datei ~/app/helloworld/helloworld/urls.py wie folgt:
from django.contrib import admin
from django.urls import path
from django.http import HttpResponse
urlpatterns = [
path('', lambda r: HttpResponse('Hello World')),
path('admin/', admin.site.urls),
]
Zusätzlich muss in den Django-Settings die ALLOWED_HOSTS-Variable angepasst werden. Der Einfachheit halber wird in diesem Beispiel der Zugriff von allen Domains aus erlaubt:
sed -i "" "s/ALLOWED_HOSTS =.*/ALLOWED_HOSTS = ['*']/" ~/app/helloworld/helloworld/settings.py
Integration
Betrieb mit der Custom Service Control
Die Custom Service Control (CSC) kann sich um den Betrieb und das automatische Management Ihrer Applikation, zum Beispiel das Starten und Stoppen bei Wartungsarbeiten an Ihrem Server, kümmern.
Die Konfiguration der Django-helloworld-App in der CSC ist denkbar einfach. Erstellen Sie dazu einen neuen Custom Service für die Django-Applikation:
hpservices supervisord add helloworld
Dabei wird in der Datei ~/.services/supervisord/helloworld/service.conf ein Konfigurationsgerüst für den neuen Service erstellt. Für die Django-Applikation muss nur das command angepasst werden, ansonsten können Sie alle vorgeschlagenen Werte übernehmen (Strichpunkt am Anfang der Zeile entfernen).
[program:helloworld]
command=%(ENV_HOME)s/app/helloworld/venv/bin/gunicorn helloworld.wsgi -b 127.0.0.1:8080 ; the program (can take args)
directory=%(ENV_HOME)s/app/helloworld/ ; directory to cwd to before exec (default no cwd)
autostart=true ; start application at supervisord start (default: true)
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/helloworld/log/default.log
stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/helloworld/log/default.err
stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
Mit supervisorctl update können sie die neue Konfiguration für ihre Django-Applikation aktivieren:
supervisorctl update
helloworld: added process group
Achtung: Falls Sie einen Fehler erhalten, muss zuerst einmalig "hpservices supervisord start" ausgeführt werden.
Genaueres zur Bedienung und zu den Möglichkeiten, die Ihnen mit der CSC zur Verfügung stehen, können Sie in der Anleitung zur Custom Service Control entnehmen.
Webserver-Konfiguration
Möchten Sie nun Ihre Applikation über HTTP(s) züganglich machen, müssen Sie Ihre Website im Hostpoint Control Panel so konfigurieren, dass der Webserver die Anfragen als Proxy an Ihre Applikation weiterleitet.
Erstellen Sie in Ihrem Hostpoint Control Panel eine Website vom Typ «Nginx Proxy auf eigene Applikation»:
- Server-Adresse und Port
- Die Proxy-Funktion erwartet, dass Ihre Applikation auf die IPv4-Loopback-Adresse 127.0.0.1 hört, und somit müssen Sie nur den Port angeben: 8080.
Für Supportanfragen verwenden Sie bitte dieses Formular.