-
Notifications
You must be signed in to change notification settings - Fork 1
Rollout als Organisation
Bitte beachten Sie: Diese Softwareanwendungen wurden durch Studierende entwickelt und es wird keine Haftung übernommen. Ob und wie die Software verwendet werden kann, ist in der Lizenz festgehalten. Da auch andere Open Source Quellen verwendet werden, müssen außerdem diese jeweiligen Lizenzen beachtet werden.
Für den Rollout als Organisation müssen nacheinander verschiedenste Sachen angepasst werden. Die grundlegenden Anpassungen sind die Assets der App, also Bilder und Texte und die Verbindung mit dem Backend. Da die App und die Verwaltungsoberfläche neu kompiliert werden müssen, ist die Installation der neusten Flutter Version Voraussetzung.
Für das Backend empfehlen wir eine Virtualisierung eines Debian/ Ubuntu Servers. Für unsere Lösung werden keine enormen Rechen- oder Speicherkapazitäten gebraucht, weswegen eine Virtualisierung durchaus ausreichen sollte.
Ist der Server einsatzbereit, kann mit der Installation als Docker Container fortgesetzt werden. Hierfür sollte die neuste Docker und Docker Compose Version installiert werden. Dafür einfach den Anweisungen von Docker folgen.
https://docs.docker.com/engine/install/
https://docs.docker.com/compose/install/
Nach der Docker Installation empfehlen wir noch die Installation von nginx als reverse-proxy, um die User-API auch über HTTPS auf der Transportebene zu verschlüsseln. Hier muss dann das SSL Modul aktiviert werden und eine manuelle location angelegt werden. Diese könnte nach außen vom Port 5000 erreicht werden und lokal auf den Port 5001 zeigen (bzw. auf welchem Port dann der Docker Container der User-API läuft).
https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
Als letzten Schritt muss das Backend heruntergeladen werden. Dafür einfach das Repository des Backends clonen und in den Branch docker-2 wechseln. In der docker-compose Konfigurationsdatei können dann die öffentlichen Ports und der API-Token festgelegt werden. Da der Token aber auch für die Erstellung des Dockerimages notwendig ist, muss auch in dem Dockerfile der User-API der Token eingetragen werden. Eine Beispiel-Konfiguration könnte sein, dass die User-API lokal auf dem Port 5001 und die Admin-API auf dem Port 5002 zu erreichen sind. Sind die Konfigurationen abgeschlossen, kann das Backend gestartet werden.
Das Backend startet mit dem Befehl:
docker-compose up -d
Das Argument -d steht für "detached", sodass der Containerverbund im Hintergrund gestartet wird.
Der Programm-Log lässt sich wie folgt einsehen:
docker-compose logs
Der Verbund lässt sich stoppen mit:
docker-compose down
Als Erstes müssen im Code der Verwaltungsoberfläche die Konstanten für das Backend gesetzt werden, dann kann das Projekt als Webseite kompiliert werden und zum Schluss intern als Webseite bereitgestellt werden.
Für die Code-Konfiguration kann der Installationsanleitung für die Verwaltungsoberfläche folgen. Bei der Konfiguration muss nun die WEBSOCKETURL auf den Docker Container der Admin zeigen, je nachdem wie sie in dem docker-compose file eingestellt ist (hier Port 5002). Ist die Anpassung abgeschlossen, kann das Projekt kompiliert werden.
flutter build web --release
Die fertige Webseite ist danach im Ordner /build/web zu finden.
Diese kann indessen einfach als Webseite bereitgestellt werden. Hierfür kann einfach auf dem vorhandenen Linux-Server bei nginx eine weitere location angelegt werden, die dann auf diesen Ordner zeigt.
https://docs.nginx.com/nginx/admin-guide/web-server/web-server/
Auch hier müssen erst im Code der App Konstanten angepasst werden, danach können dann die Apps kompiliert werden. Die Android-App kann auf jedem Gerät erstellt werden, jedoch ist für die iOS-Version ein Computer mit macOS erforderlich.
Für die Anpassung der kann auch hier einfach der Installationsanleitung für die App gefolgt werden. Der API_TOKEN muss der gleiche sein, wie in der Konfiguration des Backendes. Die API_ADDRESS muss aus dem Internet erreichbar sein, dazu muss die Firewall den passenden Port durchlassen (Hier der Port des nginx reverse-proxy, also 5000) und es muss eine öffentliche IP-Adresse/ Domain sein.
Das App-Icon wird mit dem Packet flutter_launcher_icons gesetzt:
https://pub.dev/packages/flutter_launcher_icons
Der App Splash-Screen wird mit dem Packet flutter_native_splash gesetzt:
https://pub.dev/packages/flutter_native_splash
Ist der Code angepasst, kann kompiliert werden. Bei beiden Prozesse sollte der Dart Code verzerrt werden, damit der "Reverse-Engineering-Prozess" deutlich erschwert wird.
https://docs.flutter.dev/deployment/obfuscate
Der Prozess für Android und iOS ist jetzt grundlegend verschieden.
Für Android haben wir die notwendigen Schritte einmal aufgelistet.
https://docs.flutter.dev/deployment/android#signing-the-app
https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration
https://docs.flutter.dev/deployment/android#building-the-app-for-release
https://developer.android.com/distribute/googleplay/start
Für iOS kann der offiziellen Flutter Dokumentation gefolgt werden:
https://docs.flutter.dev/deployment/ios
Weitere Informationen unter:
https://developer.apple.com/ios/submit/
https://developer.android.com/studio/publish
Informationen zur Bedienung der einzelnen Anwendungen finden Sie in den jeweiligen Benutzeranleitungen. Im Zusammenhang damit empfehlen wir Mitarbeiter:innen bezüglich der neuen Software zu schulen. Somit kann der eigentliche Grundgedanke hinter dem Projekt, die Vereinfachung der Terminbuchung für eine Blutspende, erfüllt werden.