Skip to content

Installationsanweisung Backend

Dominik Eitner edited this page Mar 19, 2022 · 21 revisions

Installationsanweisung Backend

Im Gegensatz zur App und der Verwaltungsoberfläche bildet das Backend keine Benutzeroberfläche für Blutspender/innen oder Mitarbeitende der Blutspende-Einrichtung selbst, sondern eine Schnittstelle zur Datenbank und bestimmten Funktionalitäten, die diese Benutzeroberflächen erst ermöglicht. Diese Schnittstelle wird „API“ (Application Programming Interface) genannt. Um eine funktionsfähige App und Verwaltungsoberfläche zu gewährleisten, muss dieses Backend parallel auf einem Server laufen, um so die Anfragen der App als auch, die der Verwaltungsoberfläche verarbeiten zu können.

Jede Aktion der App und Verwaltungsoberfläche, die Daten der Datenbank abruft oder verändert, muss mit dem Backend und somit der „API“ kommunizieren, dies geschieht über sogenannte Endpunkte.

Da die Aktionen, die Endnutzer/innen der App oder Mitarbeitende der Einrichtung ausführen, sich in ihren Rechten, in Bezug auf Zugriff auf die Datenbank, unterscheiden, existieren im Backend zwei „APIs“, eine für die App und eine für die Verwaltungsoberfläche. Somit werden verschiedene Aktionen für verschiedene Rollen an Nutzern/innen ermöglicht(z. B. sollte ein/e Blutspender/in nicht eine Terminanfrage annehmen können).

Damit die Verwaltungsoberfläche durchgehend aktualisiert wird und Terminanfragen von Blutspendern/innen in Echtzeit angezeigt werden, basieren die Endpunkte der sogenannten „Admin-API“ (API für die Verwaltungsoberfläche) nicht auf dem HTTPS-Protokoll, sondern auf dem WebSocket-Protokoll. Dieses Protokoll ermöglicht eine bidirektionale Verbindung, somit kann das Backend automatisch die Verwaltungsoberfläche aktualisieren, ohne zuvor einen Request von dieser erhalten haben zu müssen, wie es sonst über HTTPS nötig ist.

Eine Übersicht über alle Endpunkte des Backendes kann im Wiki in der Backend API Dokumentation gefunden werden. Im Folgenden können Sie nun nachlesen, wie Sie das Backend auf ihrem System installieren und aufsetzen können. Nachdem Sie alle hier aufgeführten Schritte in der angegebenen Reihenfolge ausgeführt haben, können Sie das Backend auf ihrem Rechner lokal bearbeiten und nach Belieben verändern.

Inhaltsverzeichnis

1. Installation von Python

Da das Backend mit dem Framework Django erstellt wurde und somit in der Programmiersprache Python geschrieben ist, muss zunächst diese Sprache installiert werden. Hierzu sollte die Version 3.10.1 installiert werden, da diese bei der Entwicklung genutzt wurde und bei der Nutzung einer neueren Version eventuell Konflikte mit den benutzten Packages auftreten könnten. Die Installationsdatei kann hier heruntergeladen werden, anschließend müssen Sie den Schritten folgen, die von Ihnen während der Installation verlangt werden. Wenn Sie sich weiter zum Framework Django informieren wollen, können Sie dieses in der offiziellen Dokumentation oder im Wiki unter der Framework Nutzung tun.

2. Installation von Docker

Aus Sicherheits- und Wartbarkeitsgründen wird die Container-Technologie Docker genutzt. Ein Container ermöglicht es den Zugriff, von Applikationen, mit all ihren Abhängigkeiten und Codes, auf Ressourcen zu verwalten. Dies geschieht auf Ebene des Betriebssystems, daher ist es noch effizienter als die Verwendung von virtuellen Maschinen. Um Docker zu verwenden, müssen Sie es zunächst installieren, dafür müssen Sie auf dieser Website die passende Version von Docker für Ihr Betriebssystem herunterladen. Wenn Sie Docker unter Linux nutzen, müssen Sie zusätzlich zum Docker Engine auch Docker Compose installieren, Windows- und Mac-Nutzer benötigen nur Docker Desktop und haben bereits alles Notwendige installiert. Die für die Installation von Docker Compose notwendige Datei können Sie ebenfalls auf dieser Website finden.

3. Starten des gesamten Backendes

Um nun das Backend als Ganzes, also beide APIs, sowohl die User-API als auch die Admin-API gleichzeitig, zu starten, müssen Sie zunächst den Branch docker-2 des Git Repositorys auswählen. Um einen Docker Container zu starten, muss der Docker Engine auf dem PC oder Server laufen. Nun kann einfach im Projektordner ein Terminal geöffnet werden und der Befehl

docker-compose up -d

ausgeführt werden. Hierdurch startet der Docker-Container und alle nötigen Befehle zum Starten der beiden Django-Projekte werden innerhalb, dieses Containers, ausgeführt. Anschließend können beide APIs über den Localhost genutzt und getestet werden. Das Backend kann nun mit dem Befehl

docker-compose down

wieder beendet werden. Weitere Informationen über das Aufsetzen des gesamten Backendes im Rahmen eines Roll-Outs können Sie im Wiki unter Rollout-als-Organisation finden.

4. Starten der User-API

Um die User API einzeln zu starten, müssen Sie manuell alle Schritte ausführen, um das Django-Projekt zu starten. Hierzu öffnen Sie einen Terminal innerhalb des Ordners userAPI und führen den Befehl

pip install -r requirements.txt

aus, dieser Befehl installiert alle für diese API nötigen Packages und berücksichtigt hierbei zusätzlich auch die Versionen. Nun führen Sie die Befehle

python manage.py makemigrations 
python manage.py migrate 

und

python manage.py runserver

aus (in mac os und linux python3 anstatt python verwenden). Durch Strg+C, innerhalb der Konsole, in der der Server gestartet wurde, kann dieser wieder beendet werden.

5. Starten der Admin-API

Um die Admin-API zu starten, muss ein Terminal innerhalb des Ordners adminAPI geöffnet werden, nun muss der Befehl

pip install -r requirements.txt

ausgeführt werden. Nachdem alle Packages installiert wurden, können Sie die Modelle der Datenbank migrieren und führen hierzu

python manage.py makemigrations 

und anschließend

python manage.py migrate

aus. Anschließend muss nun Redis gestartet werden (für das Websocket-Protokoll), hierzu müssen Sie den Befehl

docker run -p 6379:6379 -d redis:5

ausführen. Wenn alle diese Schritte erfolgreich abgeschlossen wurden, können Sie nun den Server mit dem Befehl

python manage.py runserver

starten und anschließend mit Strg+C wieder schließen.