Zum Inhalt

Server - Installation

Auf einer IoT-Plattform werden unterschiedlicher Server eingesetzt. Diese bedienen die verschiedenen internen und externen Service-Anfragen.

Betriebssysteme und Testumgebungen

Um während der Entwicklungsphase mit Datenbaken arbeiten zu können, sollten diese auf der lokalen Arbeitsmaschinen installiert werden. Unter Windows ist dies sehr unproblematisch, wenn der User mit Administrator-Rechten angemeldet ist.

In der Praxis werden neben den cloudbasierten Anbieterdiensten (Amazon-AWS, Microsoft-AZURE, Google-CLOUD, ...) selbst gehostete Server betrieben. Hier haben sich zwei Linux-Distributionen etabliert:

Ubuntu

Server-Versionen sollten als LTS-Version (LongTime-Service) installiert werden. Download

Debian

Debian ist schon sehr lange verfügbar und bildet für einige Distro's die Basis (Ubuntu, Resbian, ...). Download

Virtuelle Maschinen

Soll Linux auf dem eigenen Windows-PC installiert und getestet werden, dann ist es besonders komfortabel, das Linux-System in einer virtuellen Umgebung laufen zu lassen. Hier haben sich zwei Varianten etabliert, die auch kostenlos nutzbar sind:

VirtualBox

Insbesondere für Desktop-Versionen von Ubuntu oder Debian empfiehlt sich VirtualBox.

Link

Vmware

Link (Registrierung erforderlich)

Docker-Container

In einem Docker-Container lassen sich einfachste Linux-Basis-Maschinen installieren, die dann z.B. Python-Skripte oder Serveranwendungen (Grafana, Datenbanken, ...) laufen lassen. Docker läuft sowohl unter Windows als auch unter Linux.

Link

Datenbanken

Datenbank-Server sollten i.d.R. immer als interne Servier-Dienste angelegt werden. Von außen sollten sie keinenfalls erreichbar sein. Das bedeutet, dass die Firewall des Servers entsprechend die von den Datenbank-Servern genutzten Ports sperrt.

Die Installation verschiedener Datenbank-Server wird in Abschnitt Installation beschrieben.

Administration von Linux-Servern

Linux-Server werden i.d.R. "headless" (1) aufgesetzt.

  1. headless bedeutet ohne Desktop und ist nur über eine Terminal-App nutzbar.

Bei der Installation werden immer festgelegt:

  1. User-Account
  2. ssh-Server

SSH

Über die SSH (Secure-Shell) kann eine verschlüsselte Verbindung zweier Computer hergestellt werden. Dabei spielt das Betriebssystem des jeweiligen Computers keine Rolle, solange dort ein SSH-Server läuft. Sowohl auf Windows- als auch auf Linux-Rechnern wird der OpenSSH-Server eingesetzt (meist schon installiert und aktiv).

SSH-Client

Der wichtigste SSH-Client ist die Remote-Terminal-Anwendung. Damit kann über das Internet eine Verbindung zum Server aufgebaut werden und die typischen Shell-Kommandos abgesetzt werden. In den meisten Betriebssystemen ist ein SSH-Client wie folgt erreichbar:

>_
ssh <user>@<host>

SSH-Terminal-Apps

Weitere komfortablere Terminal-Lösungen finden sich hier: SSH-Terminal-Apps

Python SSH

mit paramiko steht ein Package für Server und Client-Implementierung mit Python zur Verfügung.

Web-Server

Um auf einem System zu testen oder dauerhaft webseiten ausliefern lassen zu können braucht es einen Web-Server. Hier sollen die beiden wichtigsten Systeme genannt werden:

Apache HTTP Server

Dieser Web-Server wird automatisch mit dem dem Packet XAMPP mitinstalliert. Dies ist die einfachste Option, um eine Web-Server zumindest Testweise zu betreiben. Er kann aber auch separat installiert werden.

Konfiguration

Die wichtigsten Konfigurationen sind

  • Pfad auf die Webseite (html-Dateien etc.)
  • Bindung an eine IP-Adresse

Die Konfiguration wird beim Start des Server aus der Datei ./apache/conf/httpd.conf gelesen. Diese ASCII-Text-Datei kann mit einem Texteditor, wie z.B. dem VSC, angepasst werden.

httpd.conf (Auszüge)
...
#Listen 12.34.56.78:80
Listen 80
...
ServerName localhost:80
...
# DocumentRoot "C:/IoT/xampp/htdocs"
# <Directory "C:/IoT/xampp/htdocs">
DocumentRoot "w:/"
<Directory "w:/">
...

NGINX

NGINX (engine x) ist ein sehr schneller und ressourcenschonender Web-Server, der sehr weit verbreitet ist. Wie der Apache-Web-Sserver ist er modular aufgebaut.

>_
sudo apt-get update
sudo apt-get install nginx
# Service steuern
sudo service nginx reload
sudo service nginx restart

Konfiguration

Die Konfiguration wird beim Start des Server aus der Datei ./nginx/conf/nginx.conf gelesen. Diese ASCII-Text-Datei kann mit einem Texteditor, wie z.B. dem VSC, angepasst werden.

nginx.conf (Auszüge)
    http {
        include       mime.types;
        default_type  application/octet-stream;

        sendfile        on;
        keepalive_timeout  65;

        server {
            listen       80  default_server;
            # server_name  localhost;

            root   html;
            location / {
                root   html/site1;
                index  index.html;
            }

Wurde eine Änderung an der Konfiguration vorgenommen, dann muss der nginx neu gestartet werden:

>_
    sudo service nginx restart

nginx -s reload (1)

  1. nginx -s ACTION
    ACTION:
    stop — fast shutdown
    quit — graceful shutdown
    reload — reloading the configuration file
    reopen — reopening the log files

File-Transfer

Wenn ein oder mehere Dateien auf einen entfernten Server übertragen werden sollen, dann kann hierfür ein spezielles File-Transfer-Protokoll eingesetzt werden. Wird eine gesicherte Übertragung eingesetzt, dann handelt es sich um sFTP, dass auf der SSH aufsetzt (Alternative zu FTP !!).

Voraussetzung für die Nutzung ist ein FTP-Server auf dem Server, der neben der Übertragung auch die Zugangsberechtigungen regelt. Bei sFTP wird der Zugang durch das Benutzerkonto auf dem Server geregelt.

Mit einer komfortablen Client-Lösung (Windows, Linux) lassen sich mehrere Zugänge verwalten, synchrone Verzeichnisswechsel einstellen u.v.m.

Beispiele für Tools (siehe Tools )

  • FileZilla Client
  • WinSCP

WinSCP

WinSCP - Screenshot