Das Installationsskript enthält alle Schritte um die SharedMobility.ai Web API zu betreiben. In diesem Tutorial gehen wir davon aus, dass die Domain api.sharedmobility.ai lauten wird. Diese ist für die eigene Installation entsprechend anzupassen. Die einzelnen Schritte umfassen:
- Installation des Apache-Webservers
Dieser dient als Reverse-Proxy für die Node.js-Applikation, da wir TLS/SSL-Zertifikate und die HTTP-Einstellungen so an einer zentralen Stelle einfacher konfigurieren können. Statt Apache kann selbstverständlich auch jeder andere HTTP-Webserver mit Reverse-Proxy-Fähigkeit verwendet werden. Wir konfigurieren hier HTTP/2 als Standardprotokoll für die API. - Installation von Certbot und generieren eines Let’s Encrypt TLS-Zertifikats
Alle Verbindungen zur API müssen über eine mit TLS gesicherte Verbindung aufgebaut werden. In der Apache vhost-Konfiguration werden alle Requests auf HTTPS umgeleitet. - Node.js via Debian-Package installieren
Hierfür verwenden wir die von NodeSource bereitgestellten Debian-Packages für Node 12. Die Standard-Installation verwendet auch einen separaten Linux-User „node“ um die Web API auszuführen, der ebenfalls im Script angelegt wird. - SharedMobility.ai-Repository klonen
Zuerst wird noch git nachinstalliert um anschließend das SharedMobility.ai-Repository von Github zu klonen. Mit npm werden danach alle JavaScript-Pakete installiert. Die Web API benötigt u.a. TensorFlow.js als Abhängigkeit. - PM2 als Prozessmonitor
Statt die Node-Applikation direkt auszuführen, verwenden wir PM2 als Prozessmonitor. Dieser wird die API automatisch neustarten, falls ein Fehler auftritt. Zu beachten ist, dass wir die Applikation nicht als root-User ausführen, sondern als User „node“ und so die Berechtigungen während der Laufzeit auf ein Minimum reduzieren.
Vollständiges Installations-Skript
Die einzelnen Dateien (vhost-Konfigurationen, app.json, …) befinden sich im vollständigen Gist auf Github. Das nachfolgene Skript geht davon aus, dass alle Konfigurationsdateien entsprechend vorhanden sind.
Weitere Konfigurationsdateien
app.json
ist die PM2 Ecosystem Datei und definiert wie der Applikationsprozess gestarten werden soll. Der HTTP-Server wird über die Umgebungsvariable PORT
auf den TCP-Port 54321
gestartet, auf den der Apache Reverse-Proxy wiederum weiterleitet.
In der Apache vhost-Konfiguration befindet sich der Reverse-Proxy, der die eingehenden Anfragen lokal an den Node-Webserver weiterleitet.