Einführung
Einführung

Einführung / Steuerung des Servers / Unix

Steuerung des FirstSpirit-Servers unter Linux-Betriebssystemen

Allgemeine Informationen

Inhaltsverzeichnis

Voraussetzungen für den Betrieb eines FirstSpirit-Servers sind Java, der Java Service Wrapper und die entsprechenden Steuerungsdateien zum Starten und Stoppen des FirstSpirit-Servers (bzw. der Java JVM).

Die gewünschten Aktionen, u.a.:

  • Start des FirstSpirit-Servers,
  • Stopp des FirstSpirit-Servers,
  • Neustart des FirstSpirit-Servers,
  • Erzeugen von Thread Dumps, ...

werden über die Steuerungsdatei („fs5“ bzw. „fs-server“) an die JVM weitergegeben. Die Steuerung erfolgt über ein Shell-Skript bzw. einen Systemdienst.

Bereitstellung der Steuerungsdateien

Bereitstellung über das Aktualisierungsarchiv fs-update-[version].tar.gz

Der Java Service Wrapper und die zugehörige, aktuelle Version der Steuerungsdateien werden von e-Spirit über das Aktualisierungsarchiv (für bestehende Installationen) bereitgestellt.

Das Archiv ist per Download erhältlich (für Zugangsdaten wenden Sie sich bitte an den Technical Support).

Wichtig Die Steuerungsdateien (fs-server und fs-server.bat) dürfen nicht verändert werden.

Entpacken des Archivs im Installationsverzeichnis

Das Archiv muss zunächst dekomprimiert (G(un)zip) und im vorhandenen FirstSpirit-Server-Installationsverzeichnis ausgepackt werden.

Exemplarischer Aufruf unter Linux für das Aktualisierungsarchiv:

~/firstspirit5$ tar xvfz fs-update-[version].tar.gz

Mit der tar-Option xvfz wird das gezippte tar-Archiv ( *.tar.gz ) entpackt.

Nach dem Auspacken sollten die Benutzer- und Gruppenrechte der ausgepackten Dateien betrachtet und ggfs. angepasst werden.

Schritt 1) Benutzer anlegen

Wir empfehlen, einen eigenen Systembenutzer für den FirstSpirit-Server anzulegen und den FirstSpirit-Server nicht als root zu starten.

Im Beispiel wird der Systembenutzer fs angelegt:

useradd fs

Der FirstSpirit-Server muss an mehreren Stellen in seinem Installations-Verzeichnis Dateien anpassen können. Am einfachsten ist es, ihn sein Installationsverzeichnis komplett schreiben zu lassen:

chown -R fs:fs ~FS

~FS dient hier als Platzhalter für das Server-Installationsverzeichnis.

Schritt 2) Wartungsmodus aktivieren

Alle Clients sollten vor Beginn der Aktionen abgemeldet sein.

Vor dem Starten und Stoppen des FirstSpirit-Servers kann der Wartungsmodus aktiviert werden.

Schritt 3) Auswahl der Steuerungsdatei

Im Installations- bzw. Aktualisierungsarchiv sind aktuell jeweils zwei Steuerungsdateien für Linux und Windows enthalten. Die neue Steuerungsdatei fs-server bietet einen größeren Funktionsumfang als die Steuerungsdatei fs5.

(Die Steuerungsdateien fs-server.bat und fs5.cmd werden ausschließlich für Windows-Betriebssysteme benötigt - siehe Steuerung unter Windows)

Die Steuerungsdatei fs-server

Der Funktionsumfang der Steuerungsdatei fs-server kann in der Kommandozeile über die integrierte Hilfe (Usage, Command syntax, Commands) aufgerufen werden, beispielsweise über den Aufruf fs-server:

fs@fs_example:~$ fs-server 
Usage: /home/fs_example/firstspirit/bin/fs-server [ console | start | stop | restart | condrestart | status | install | installstart | remove | dump ]
Commands:
console Launch in the current console.
start Start in the background as a daemon process.
stop Stop if running as a daemon or in another console.
restart Stop if running and then start.
condrestart Restart only if already running.
status Query the current status.
install Install to start automatically when system boots.
installstart Install and start running as a daemon process.
remove Uninstall.
dump Request a Java thread dump if running.

Für die Verwendung der Steuerungsdatei fs-server ist ein Java Service Wrapper ab Version 3.5.42 notwendig:

  • Mit dem FirstSpirit Aktualisierungsverzeichnis erhalten sie immer eine aktuelle Version des Wrappers sowie die dazu passenden Steuerungsdateien.
  • Die Version des Java Service Wrappers, die auf dem Server aktuell verwendet wird, kann über das FirstSpirit ServerMonitoring ermittelt werden. Unter ServerMonitoring - Übersicht - Status wird unter „Grundinformationen (System)“ die „Wrapper-Version“ eingeblendet.
  • Entspricht die verwendete Wrapper-Version nicht der vom FirstSpirit-Server empfohlenen, wird dies durch rote Schrift und den Zusatz veraltet angezeigt. In der Datei fs-wrapper.log wird dies ebenfalls festgehalten.
    In diesem Fall sollte der Java Service Wrapper zeitnah aktualisiert werden (siehe dazu Das FirstSpirit-Backend aktualisieren).

Optionale Konfigurationsdatei fs-server-custom.shconf

Über die Datei fs-server-custom.shconf kann

  • der Benutzer festgelegt werden, mit dem der FirstSpirit-Server gestartet werden soll
  • der Pfad zur Java-Version definiert werden.

Bei einem Update des FirstSpirit Backends wird die Datei nicht automatisch aktualisiert und ist daher nicht in der Datei fs-update-[Version].tar.gz enthalten. Für bereits installierte Server kann die Datei aus der Datei fs-install-[Version]*.tar.gz extrahiert werden.

Anschließend müssen in der Datei die entsprechenden Zeilen einkommentiert (führendes # entfernt) und mit den gewünschten Werten versehen werden.

RUN_AS_USER=<Username>
export FS_JAVA_HOME=<path to java>

Die Steuerungsdatei fs5

Der Funktionsumfang der Steuerungsdatei fs5 kann in der Kommandozeile über die integrierte Hilfe (Usage, Command syntax, Commands) aufgerufen werden, beispielsweise über den Aufruf fs5:

fs@fs_example:~$ fs5
Usage: /home/fs_example/firstspirit/bin/fs5 [ console | start | stop | restart | status | dump ]
Commands:
console Launch in the current console.
start Start in the background as a daemon process.
stop Stop if running as a daemon or in another console.
restart Stop if running and then start.
status Query the current status.
dump Request a Java thread dump if running.
Wichtig Die Steuerungsdatei fs5 wird zukünftig entfallen. Geplant ist der Entfall des Supports mit FirstSpirit 2021-02.

Schritt 4) Server steuern

Die Steuerungsdateien unterstützen die Steuerung des FirstSpirit-Servers auf unterschiedlichen Init-Systemen.

Aktuell werden unterstützt:

  • systemd
  • Upstart
  • System-V-Init

Nachfolgend wird die Installation des Systemdienstes und die Steuerung des FirstSpirit-Servers am Beispiel des Init-Systems systemd gezeigt.

Für die anderen Init-Systeme ist die Installation des Systemdienstes und die Steuerung des FirstSpirit-Servers analog zum Vorgehen unter systemd möglich. Die einzelnen Kommandos, der Installationsort und die Konfiguration können aber, abhängig vom eingesetzten Init-System, abweichen.

Eine vollständige Dokumentation ist an dieser Stelle nicht möglich. Bitte konsultieren Sie hierfür die Dokumentation von systemd, Upstart und System-V-Init, insbesondere die Hinweise zur Härtung und Absicherung.

Beispiel: systemd

Alle größeren Linux-Distributionen verwenden systemd zur Steuerung von Systemdiensten. systemd ist im Vergleich zur Alternative SysVinit schneller und flexibler und ermöglicht beispielsweise den gleichzeitigen Start von Systemdiensten.

systemd: Voraussetzungen

Für die Verwendung mit der Steuerungsdatei fs-server sollte:

  • Das Programm pidof installiert sein:
    Die Steuerungsdateien fs-server verwenden intern das Programm pidof. Damit die Steuerungsdateien funktionieren, sollte das Programm auf dem System installiert sein.
  • Das Modul systemd PAM (Pluggable Authentication Modules) installiert und für die FirstSpirit-Benutzersitzung registriert sein (z. B. libpam-systemd unter Debian). (Das Modul wird zur Identifikation des systemd-Prozesses benötigt.)

systemd: Dienst installieren und Server starten (unter eigenem System-Benutzerkonto)

Der Dienst wird über die Kommandozeile installiert, z. B. für die Steuerungsdatei fs-server über den Befehl:

~FS/bin/fs-server install

oder alternativ über den Befehl:

~FS/bin/fs-server installrun
Wichtig Nur bei einer Installation über systemd relevant:
Bei der Verwendung von installrun müssen die systemd-Overwrites vor der Ausführung unter /etc/systemd/system/fs-server.service.d/override.conf vorhanden sein
(siehe auch systemd: Konfiguration über Unitfiles).

Unter eigenem System-Benutzerkonto: Unter Linux sollten Prozesse aus Sicherheitsgründen nicht mit root-Rechten, sondern in einem abgesicherten Benutzerkontext ausgeführt werden. Die Ausführung des Kontrollskriptes setzt zwar root-Rechte voraus, der eigentliche Prozess wird aber in einem Benutzerkontext ausgeführt.

Um den Benutzer anzugeben, der für den Prozess genutzt werden soll, kann die optionale Konfigurationsdatei fs-server-custom.shconf verwendet werden (siehe Abschnitt Benutzer anlegen).

Nach der Installation des systemd-Dienstes wird ausschließlich systemd zur Steuerung verwendet, d. h. auch bei einem Aufruf von fs-server im Benutzerkonto wird systemctl verwendet (bei der Verwendung eines anderen Init-Systems kann das Kommando abweichen).

Der Benutzer muss zum Starten und Stoppen des systemd-Dienstes über ausreichende Berechtigungen in systemd verfügen, ansonsten wird der Benutzer nach dem root-Passwort gefragt. Für die Konfiguration der Benutzerberechtigung (z. B. mithilfe von polkitd) ist eine vollständige Dokumentation an dieser Stelle nicht möglich. Bitte konsultieren Sie hierfür die Dokumentation von systemd.

Alle Subkommandos können anschließend über systemd nach der folgenden Syntax ausgeführt werden:

systemctl [reload|restart|start|status|stop|...] fs-server

oder alternativ über:

~FS/bin/fs-server [reload|restart|start|status|stop|...]

z. B. Starten des FirstSpirit-Servers:

systemctl start fs-server

bzw.:

~FS/bin/fs-server start

Das Installieren des entsprechenden Dienstes für die Steuerungsdatei fs5 liegt im Verantwortungsbereich des Administrators. Unter ~FS/bin/fs5.init existiert eine Vorlage für SysV-Init.

Zur Installation und Konfiguration siehe auch Betriebssystem vorbereiten (Unix) (→Installationsanleitung).

systemd: Konfiguration über Unitfiles

systemd verwaltet seine Dienste über Units. Die Dateien, die eine solche Unit (hier den FirstSpirit-Server) während des Bootens initialisieren und starten, heißen Unitfiles. Unitfiles sind keine ausführbaren Dateien mehr, sondern Konfigurationsfiles vergleichbar mit den Ini-Dateien von Windows.

Durch den Befehl ~FS/bin/fs-server install wird die systemd-Service-Datei automatisch erzeugt und üblicherweise unter /etc/systemd/system abgelegt.

Bestehende Unitfiles können mit dem Befehl edit erweitert werden - dazu ist die entsprechende die systemd-Service-Datei anzugeben, z. B.:

systemctl edit fs-server.service

Ein einfaches Beispiel einer Konfiguration (fs-server) sieht wie folgt aus:

[Service]
Group=fs
UMask=0027
LimitNOFILE=10000
Environment="FS_JAVA_HOME=/opt/openjdk/lts"

Im Abschnitt [Service] werden Umgebungsvariablen definiert:

  • UMask: Der hier konfigurierte Wert sollte sich an der Standardeinstellung der Konfigurationsdatei fs-wrapper.conf orientieren (siehe wrapper.umask). Standardmäßig ist der Wert für diesen Parameter 0027. Das bedeutet, dass die Benutzerklasse „Gruppe“ (engl. group) über Lese- und die Benutzerklasse „Sonstige“ (engl. others) über keinerlei Rechte verfügt.
  • LimitNOFILE: Über diese Variable können die Ressourcenlimits, also die maximal mögliche Anzahl gleichzeitig geöffneter Filehandles unter dem Benutzerkonto des FirstSpirit-Servers definiert werden (siehe hierzu Betriebssystem vorbereiten (Unix) (→Installationsanleitung)).
  • Environment: Innerhalb des Service-Blocks kann die Direktive Environment= eingefügt werden, um z. B. die Variable FS_JAVA_HOME in der systemd-Servicedatei zu deklarieren.

Beispiel: Server steuern über System-V-Init (nur fs5)

System-V-Init: Dienst konfigurieren

Alternativ zur zuvor beschriebenen systemd-Methode gibt es für Systeme mit dem (älteren) System-V-Init-System in ~FS/bin/fs5.init eine Vorlage für ein Init-Script. Damit FirstSpirit darüber automatisch beim Unix-Server-Start mitgestartet wird, muss dieses an die entsprechende Stelle kopiert und angepasst werden:

cp ~FS/bin/fs5.init /etc/init.d/fs5

In der Datei müssen zwei Zeilen angepasst werden:

FSDIR=@@FSDIR@@
FSUSER=@@FSUSER@@

Bei FSDIR ist das Installationsverzeichnis (hier als ~FS bezeichnet) einzutragen und bei FSUSER wird der oben für den FirstSpirit-Server-Betrieb angelegte System-Benutzer fs angegeben.

Die Umgebungsvariable FS_JAVA_HOME kann mit einer Export-Anweisung im Init-Script gesetzt werden (vor dem case-Block):

export FS_JAVA_HOME=%JAVA_HOME%

Für

System-V-Init: Server steuern (unter eigenem System-Benutzerkonto) (nur fs5)

Die Server-Steuerung funktioniert mit den gleichen Befehlen wie bei systemd, nur als Aufruf des Init-Scripts. Zum Start bedeutet das also:

/etc/init.d/fs5 start

Der FirstSpirit-Server kann auch von einem normalen Benutzerkonto aus gesteuert werden, sofern der Nutzer die entsprechenden Schreib-Rechte hat - siehe Abschnitt Benutzer anlegen.

Ist man als entsprechender Nutzer angemeldet, ruft man statt des System-Init-Scripts einfach das Script ~FS/bin/fs5 mit den gleichen Parametern (start, stop, restart und status) auf.

~FS ist hier das Installationsverzeichnis für den FirstSpirit-Server.

Schritt 5) Fehlerdiagnose und Monitoring

Protokollierung / Logdateien

Falls während bzw. nach dem Start des FirstSpirit-Servers Probleme auftreten, liefern die Logdateien fs-server.log und fs-wrapper.log unter ~FS/log detaillierte Hinweise zur Problemursache.

Kann die Java VM nicht gestartet werden, wird nur die fs-wrapper.log aktualisiert.

Für eine weiterführende Analyse und Auswertung der Logdateien können sie sich auch an den Technical Support wenden.

Stackdump erzeugen

Über den Befehl:

fs-server dump

bzw.:

fs5 dump

wird ein aktueller Thread Dump erstellt und nach ~FS/log/fs-dump-DATUM-UHRZEIT.log geschrieben.

Eine weitere Analysemöglichkeit bietet das FirstSpirit ServerMonitoring. Die über die Funktionalität Threads erstellten Thread Dumps können hier analysiert und in einer aufbereiteten Ansicht angezeigt werden.

Status des Dienstes ausgeben

Statusinformationen zum Dienst können über den Befehl:

fs-server status

bzw.:

fs5 status

ausgegeben werden.

Runlevel

Beim Start eines FirstSpirit-Servers stehen Informationen über den aktuellen Runlevel zur Verfügung.

Die Runlevel werden an verschiedenen Stellen ausgegeben:

  • als Logausgabe in der Datei fs-server.log bzw. fs-wrapper.log
  • als Wert [Zahl] in der Datei ~FS/.fs.lock

Anhand dieser Runlevels kann abgelesen werden, ob bzw. wann welche Server-Funktionalität zur Verfügung steht:

  • SHUTDOWN (RunLevel 0)
    Der Server ist heruntergefahren.
    Hinweis: Die Datei ~FS/.fs.lock ist in diesem Runlevel nicht vorhanden.
  • IN_PROGRESS (RunLevel 20)
    Der Server startet bzw. wird beendet, es sind keine Funktionalitäten sicher verfügbar.
  • CORE_STARTED (RunLevel 40)
    Die Grundfunktionalitäten stehen zur Verfügung, der Server kann über den SOCKET-Port erreicht werden.
  • ROOT_WEBAPP_STARTED (RunLevel 60)
    Der Server kann nun auch über den HTTP-Port erreicht werden.
  • CORE_WEBAPPS_STARTED (RunLevel 80)
    Die globalen Web-Anwendungen stehen zur Verfügung.
  • STARTED (RunLevel 100)
    Alle FirstSpirit-Funktionalitäten stehen zur Verfügung.

Auf diese Runlevel kann beispielweise per API reagiert werden (Interface RunLevelAgent, Package de.espirit.firstspirit.agency, FirstSpirit Developer-API).

© 2005 - 2020 e-Spirit AG | Alle Rechte vorbehalten. | FirstSpirit 2020-08 | Datenschutz | Impressum | Kontakt