Erstinstallation - Linux
Erstinstallation
Kopieren Sie das Installationsskript smartWARE_452.5.0.0.14.auto.run in das Linux Home Verzeichnis des Benutzer, hier Beispiel genannt "user". Das Verzeichnis ist also "/home/user".
Dann die Datei ausführbar machen,
und starten.
Jetzt startet das Installationsskript und Sie werden folgende Ausgaben im Terminal sehen.
Da für die Installation root (sudo) Rechte notwendig sind, werden Sie nach dem Passwort gefragt. Geben Sie das Passwort ein, damit die Installation gestartet werden kann. Die erforderlichen Dateien werden in das Verzeichnis /tmp entpackt und anschließend in das Zielverzeichnis ~/smartWARE_452.5.0.0.14 kopiert. (Hinweis: "~/" ist die Kurzform des home Verzeichnis des Benutzers "user", also "/home/user")
Um mit dem Internet-Browser per HTTPS auf die Anwendung zugreifen zu können, erzeugt das Installationsskript ein selbst signiertes Zertifikat. Dieses Zertifikat kann später durch ein offizielles Zertifikat (falls vorhanden) ersetzt werden (siehe Basiskonfiguration).
Folgende Verzeichnisse wurden durch das Skript jetzt neu erstellt:
Das Verzeichnis ~/smartWAREData/ enthält alle persistenten Daten der Anwendung. Hier werden also alle Daten gespeichert, die auch nach einem Software-Update weiter erhalten bleiben müssen, wie zum Beispiel die von den Jupiter Geräten übertragenen Messwerte, Benutzereinstellungen, wie Dashboards oder Geräteplatzinformationen. Für den Zugriff benötigt man als Benutzer "root" Rechte. Das Verzeichnis ~/smartWARE_452.5.0.0.14/ enthält alle Skripte, die zum Betrieb der Anwendung nötig sind. Z.B.: Start- und Stop-Skript zum Starten bzw. Stoppen der Docker Services. In diesem Verzeichnis können auch individuelle Einstellungen in einer .env Datei konfiguriert und gespeichert werden. Mehr dazu unter dem Kapitel Basiskonfiguration.
Basiskonfiguration
Nach dem Ausführen des Installationsskripts werden die Services automatisch mit den default-Einstellungen
gestartet.
Die Services werden dann mit folgenden Standardeinstellungen gestartet.
Diese Einstellungen werden im Installationsverzeichnis der Software (~/smartWARE_452.5.0.0.14) in einer Datei mit dem Namen .env gespeichert.
Um diese Datei zu erzeugen oder zu ändern, kann das Skript ~/smartWARE_452.5.0.0.14/config_smartware.sh
verwendet werden. Mittels der textbasierenden Menüführung können die Parameter leicht geändert werden.
Zum Speichern der neuen Einstellungen den Menüpunkt Save/Exit auswählen.
Das erzeugte .env File wird unter ~/smartWARE_452.5.0.0.14/.env gespeichert.
Die Einstellungen werden mit dem nächsten Start in das System übernommen.
~/smartWARE_452.5.0.0.14/stop_smartware.sh
~/smartWARE_452.5.0.0.14/start_smartware.sh
Wurden die Ports geändert, muss dann aber im Browser beim Zugriff auf die GUI der Port mit angegeben werden. Das wäre in diesem Fall:
http://ip:8080
https://ip:8443
Dieser geänderte Port muss dann auch im Datastore Gateway der Jupiter Geräte korrekt eingestellt
werden! In diesem Fall wäre der Port für das HTTP Protocol anzugeben. (Hinweis: Das HTTPS Protokoll
im Jupiter Gerät wird erst mit Firmware Version 8.x unterstützt! Eine Installation der smartWARE
Evaluation Software im Internet auf einem Cloudrechner sollte also erst mit der HTTPS
Unterstützung der Firmware 8.x erwogen werden.)
ip:8080/store
Zeitzone einstellen
Die Standardeinstellung der Zeitzone ist DC_TIMEZONE=Europe/Berlin
Wenn die Software in einer anderen Zeitzone betrieben wird, muss diese Einstellung überschrieben werden.
Hier finden Sie eine Liste möglicher Zeitzonen https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Ports einstellen
Die Standardeinstellung der Proxy Ports ist:
Das bedeutet, die Software GUI ist über folgende URLs per Browser zu erreichen:
http://ip
https://ip
Den Port braucht man in diesem Fall nicht mit angeben, da die Browser den Port 80 bzw. bei HTTPS den Port 443 automatisch ergänzen, ohne dass es angezeigt wird. Falls die Standard-Ports auf dem zu installierenden Rechner schon belegt sind, besteht die Möglichkeit, die smartWARE Evaluation auf beliebige anderen freien Ports laufen zu lassen. Dazu muss man in der .env Datei die Ports überschreiben. Hier ein Beispiel:
Dadurch muss dann aber im Browser beim Zugriff auf die GUI der Port mit angegeben werden. Das wäre in diesem Fall:
http://ip:8080
https://ip:8443
Dieser geänderte Port muss dann auch im Datastore Gateway der Jupiter Geräte korrekt eingestellt werden! In diesem Fall wäre der Port für das HTTP Protocol anzugeben. (Hinweis: Das HTTPS Protokoll im Jupiter Gerät wird erst mit Firmware Version 7.x unterstützt! Eine Installation der smartWARE Evaluation Software im Internet auf einem Cloudrechner sollte also erst mit der HTTPS Unterstützung der Firmware 7.x erwogen werden.)
ip:8080/store
Selbstsigniertes Zertifikat ersetzen
Während der Installation wird ein selbst signiertes Zertifikat erzeugt und in das Verzeichnis ~/smartWAREData/reverse_proxy/certs kopiert. Wenn Sie die Software GUI im Browser über das HTTPS Protocol öffnen, werden Sie vom Browser eine Warnung bekommen, da das Zertifikat selbst signiert ist. Hier ein Beispiel des Chrome Browsers:
Diese Warnung können Sie aber ignorieren, da das selbst signierte Zertifikat dem Browser nicht bekannt ist. Klicken Sie dazu auf den Link "weiter zu... (unsicher)".
Die Warnung der Browser kann man aber auch dadurch verhindern, indem man ein offiziell signiertes Zertifikat benutzt bzw. diese der Software zur Verfügung stellt.
Im Verzeichnis ~/smartWAREData/reverse_proxy/certs liegen 2 Dateien:
smartware.crt
smartware.key
Der Austausch dieser Dateien kann nur als root User erfolgen (sudo).
Diese Zertifikat und Key Dateien können durch firmeneigene offiziell signierte Dateien ersetzt werden. Dazu die smartWARE Services stoppen (siehe 5.2).
Die beiden vorhandenen Dateien umbenennen (z.B. in smartware.ctr_original , smartware.key_original). Dann die offiziell signierten Dateien kopieren und gegebenenfalls umbenennen.
Wichtig, die Dateien müssen die Namen smartware.crt und smartware.key haben und müssen ein PEM/X509 Format sein.
Bitte nach dem Austausch der Dateien und dem Starten der smartWARE Services (siehe 5.1) die Log Datei kontrollieren, um zu überprüfen, dass die ersetzten Dateien keine Probleme erzeugen:
Updateinstallation
Die Updateinstallation unterscheidet sich nicht von der Erstinstallation. Somit gelten die Kapitel 3 und 4 auch für ein Update. Bereits vorhandene Konfigurationsdateien (z.B. File .env) werden in die neue Installation übernommen. Das Stoppen der alten Installation und das erneute Starten der neuen Installation werden vom Installationsskript durchgeführt.
Betrieb
Die smartWARE Evaluation Software besteht aus mehreren einzelnen Programmen (auch als Microservices
bezeichnet). Diese Programme werden als Docker Container gestartet. Zum einfachen Starten und Stoppen der Services befinden sich im Verzeichnis:
~/smartWARE_452.5.0.0.14
zwei Linux shell Dateien
start_smartware.sh
stop_smartware.sh
Starten des Services
Wechseln Sie in der Linux Console in das Verzeichnis ~/smartWARE_452.2.0.0.12 und starten Sie das Skript ./ start_smartware.sh.
$ ./start_smartware.sh
Die Eingabe der Zeichenkombination ./ (also ein Punkt gefolgt von einem Schrägstrich) ist notwendig, da Linux die Datei sonst nicht findet. Es zeigt Linux, dass sich die Datei im aktuellen Verzeichnis befindet.
Wenn Sie dieses Skript nach der Installation das erste Mal aufrufen, werden zuerst die Softwarepakete (Images) vom JUMO Server geladen. Danach werden die einzelnen Services als Docker Container gestartet. Sie können den aktuellen Status der Services sehen durch das Starten eines weiteren Shell Scripts:
$ ./status_smartware.sh
Jetzt sollten Sie eine Liste angezeigt bekommen, die Ihnen den Status der einzelnen Services anzeigt:
Wenn alle Services den State Up zeigen, laufen die Services. Nun kann man im Browser die Startseite öffnen mit http://IP oder https://IP. Wobei IP für die IPv4 Adresse des W10 PC steht, auf dem die Services gestartet wurden. Sie können aber auch statt der IP Adresse den Hostnamen des Rechners benutzen oder http://localhost, wenn der Browser auf dem selben Rechner gestartet wurde.
Falls die Ports 80/433 schon durch ein anderes Programm benutzt werden und Sie Ausweich-Ports durch Einträge in der .env Datei konfiguriert haben, so hängen Sie bitte diesen Port an die URL an, z.B. http://localhost:8080 oder https://localhost:8433.
Stoppen der Services
Um Änderungen der .env Dateien zu übernehmen, ist es notwendig, die einzelnen Services geordnet zu beenden, bevor man sie erneut starten kann. Dazu rufen Sie auf der Linux Console das Skript ./stop_smartware.sh auf.
$ ./stop_smartware.sh
Es dauert einige Sekunden, bis alle Services beendet sind. Sie sehen folgende Ausgabe am Bildschirm:
Hintergrundinformation
Begriffserklärungen
Docker: Legt Programme samt ihrer Abhängigkeiten in Images ab. Diese bilden die Basis für virtualisierte Container, die auf nahezu jedem Betriebssystem lauffähig sind. So werden Anwendungen portabel und unkompliziert.
Docker Desktop: Docker Desktop ist eine einfach zu installierende Anwendung für eine Windows- Umgebung, mit der containerisierte Anwendungen und Microservices erstellt und verteilt werden können. Docker Desktop umfasst Docker Engine, Docker CLI-Client, Docker Compose, Docker Content Trust, Kubernetes und Credential Helper.
Docker Compose: Ist ein Tool, das zum Definieren und Freigeben von Multicontaineranwendungen entwickelt wurde. Mit Compose können Services definieren werden, die dann mit einem einzigen Befehl gestartet bzw. beenden werden können.
Docker Image: Der Begriff „Image“ ist Ihnen im Zusammenhang mit Virtualisierung möglicherweise von virtuellen Maschinen (VMs) bekannt. Für gewöhnlich handelt es sich bei einem VM-Image um eine Kopie eines Betriebssystems. Ggf. enthält ein VM-Image weitere installierte Komponenten wie Datenbank und Webserver. Der Begriff entstammt einer Zeit, in der Software auf optischen Datenträgern wie CD-ROMs und DVDs verteilt wurde. Wollte man eine lokale Kopie des Datenträgers anlegen, erstellte man mit einer speziellen Software ein Abbild, auf Englisch „Image“. Bei der Container-Virtualisierung handelt es sich um die konsequente Weiterentwicklung der VMVirtualisierung. Anstatt einen virtuellen Computer (Maschine) mit eigenem Betriebssystem zu virtualisieren, umfasst ein Docker-Image in der Regel lediglich eine Anwendung. Dabei kann es sich um eine einzelne Binärdatei handeln oder um einen Verbund mehrerer Software-Komponenten.
Docker Container: Die Virtualisierungs-Lösung Docker hat im Verlauf des letzten Jahrzehnts grundlegend verändert, wie Software gebaut, verteilt und betrieben wird. Anders als bei den zuvor etablierten virtuellen Maschinen (VM) werden mit Docker einzelne Anwendungen virtualisiert. Bei einem Docker-Container handelt es sich also um einen Anwendungs- oder Software-Container. Der Begriff des Software-Containers ist angelehnt an physische Container, wie sie auf Schiffen eingesetzt werden. In der Logistik haben Container als standardisierte Einheit die modernen Handelsketten erst ermöglicht. So lässt sich ein Container auf jedem dafür ausgelegten Schiff, Lkw oder Zug befördern. Dies funktioniert weitgehend unabhängig vom Inhalt des Containers. Nach außen hin ist der Container mit standardisierten Schnittstellen versehen. Ganz ähnlich ist dies auch bei Docker-Containern der Fall.
VHDx Datei: In einer VHDx-Datei lässt sich der Inhalt einer kompletten Festplatte virtuell in Form einer einzigen Datei speichern. Das Dateiformat ist eine Erweiterung des VHD-Formats und wurde erstmals mit Windows 8 und Windows Server 2012 veröffentlicht. Es bietet gegenüber dem VHD-Format zahlreiche Verbesserungen und Funktionserweiterungen.
Software Struktur
Die smartWARE Evaluation Software besteht im wesentlichen aus 4 funktionalen Einheiten (Services):
Datastore
Speichert die Originaldaten (Cold Data), die von den Jupiter Geräten in Intervallen gesendet werden.Dataview
Bereitet Teile der der Daten (Cold Data) auf und speichert diese in der Postgres Datenbank (Warm Data). Nimmt Benutzereingaben der Browser Anwendung entgegen und liefert die Daten zur Darstellung der Dashboard Grafiken/Tabellen.Postgres Datenbank
Hier werden die sogenannten Warm Data gespeichert, also der Anteil der Daten, die zur schnellen Anzeige in den Dashboards dienen.Nginx (Reverse Proxy)
Die http(s) Schnittstelle der Services.
Diese Services sind als Linux Docker Container entwickelt und werden mit Hilfe von Docker-Compose konfiguriert und gestartet/gestoppt. Die Darstellung der Daten für den Benutzer erfolgt dabei über einen Web-Browser auf einem beliebigen Rechner des Netzwerks.
Persistente Daten
Alle aufgezeichneten Daten der Geräte werden durch den Datastore Service persistent im Home Verzeichnis des Linux Users gespeichert:
~/smartWAREData/datastore
Die Daten sind in gepackten Dateien gespeichert und durch zusätzliche signierte Dateien vor Manipulation geschützt. Dieser gesamte Datenbestand wird auch als Cold Data bezeichnet.
Das Löschen dieses Verzeichnisses oder einzelner Dateien aus diesem Verzeichnis führt zum Verlust der aufgezeichneten Daten, falls keine Kopie der Daten erstellt wurde!
Backup
Erst ab Version 3.0.0.7 ist die Backup Funktion unterstützt.
Wenn datastore Backup aktiviert ist, werden die Daten des datastore zusätzlich beim Empfang im Verzeichnis gespeichert.
~/smartWAREBackup/
Um die Wahrscheinlichkeit eines Datenverlust durch einen Festplattencrash zu minimieren, empfiehlt es sich die Daten aus diesem Verzeichnis regelmäßig auf ein NAS im Netzwerk zu verschieben. Ein Cron-Job in Verbindung mit dem Programm rsync und einen Shell Skript, kann für diesen Zweck erstellt werden.
Erstellen einer Shell Script Datei z.Bsp. backup_to_nas.sh
Diese Datei ausführbar machen mit chmod +x backup_to_nas.sh
Überprüfen, dass das Shell Script die Aufgabe erledigt, die es soll.
Überprüfen ob der Cron Service aktiv ist sudo systemctl status cron
Falls nicht aktiv, mit sudo systemctl start cron den Service aktivieren.
Hier ein Beispiel für ein Skript das die Daten auf ein NAS Laufwerk verschiebt, es kopiert also die Daten aus dem Verzeichnis ~/smartWAREBackup/ auf das NAS Laufwerk und löscht dann die kopierten Daten aus dem original ~/ smartWAREBackup/ Verzeichnis. Das original ~/smartWAREBackup/ Verzeichnis dient also nur als temporärer Zwischenspeicher!
#!/bin/sh
# This script move the files from the smatWAREBackup folder to a NAS folder
# to get an external backup of the recorded files
# this script will be called via cron every 1h
rsync -avL -progress --remove- source -files /home/ <youruser> /
smartWAREBackup /mnt/nas/smartWAREBackup/
Dieses Script kann man nun z.Bsp. jede Stunde durch einen Cron Job starten. Dazu öffnet man die Konfigurationsdatei in einem editor
crontab -e
und trägt z. Bsp. folgende Zeile ein
# start backup job every hour to move the smartWAREBackup files to the NAS
0 * * * * /home/ <youruser> /backup_to_nas .sh
Die Datei wird gespeichert mit Ctrl-o und "Eingabe Taste". Mit Ctrl-x wird der Editor verlassen.
Ob der Job nun jede Stunde gestartet wird, kann folgendermaßen geprüft werden:
grep CRON /var/log/syslog
Apr 12 00:00:01 yourlinuxpc CRON[3787445]: (ewks) CMD ( /home/ <youruser> /
backup_to_nas .sh)
Apr 12 01:00:01 yourlinuxpc CRON[3802213]: (ewks) CMD ( /home/ <youruser> /
backup_to_nas .sh)
Apr 12 02:00:01 yourlinuxpc CRON[3817019]: (ewks) CMD ( /home/ <youruser> /
backup_to_nas .sh)