Wie, Um Ihre Eigenen Dienste zu systemd Für eine Einfachere Verwaltung

0
436

Linux-Server sind so konzipiert, ausgeführt werden alle die Zeit, anstatt der Start wichtiger Programme manuell und verlassen Sie in einer tmux-Sitzung, sollten Sie fügen Sie Sie zu systemd als service, der automatisch startet beim Hochfahren und neu starten, wenn Fehler auftreten.

Arbeiten Mit Systemd Und Dienstleistungen

Systemd speichert die Konfiguration für die Dienste in beiden Orten. Die erste ist, /lib/systemd/system/, dort finden Sie die Konfiguration für viele Dienste auf Ihrem system. Die meisten software installiert, installieren Sie die services hier. Das zweite ist /etc/systemd/system/ die überschreibt die /lib/systemd-Verzeichnis und wird in der Regel verwendet, um Benutzer erstellten Dienstleistungen. Es gibt auch /etc/systemd/user/, die betreibt Dienste für einzelne eingeloggte Benutzer, wie das abrufen von mail.

Viele dieser Dienste nicht laufen die ganze Zeit wie nginx oder MySQL würde. Sie können drucken Sie eine Liste von Diensten, die derzeit in Verwendung mit:

service –status-all

Dienstleistungen, die mit einem ” + “- symbol ausgeführt werden, und Dienstleistungen, die mit einem ” – ” – symbol sind derzeit gestoppt. Sie können detailliertere Informationen mit:

service status nginx

Da die Dienste im hintergrund laufen, Sie nicht, melden Sie Ihre Ausgabe auf der Konsole statt Protokollausgabe an die systemd-journal. Die “status” – Befehl zeigt die letzten paar Zeilen dieser Zeitschrift, aber Lesen können Sie es direkt mit:

journalctl -fn 50 -u nginx

Dieser Befehl druckt die letzten 50 Einträge im log (-n) aus der nginx-Dienst (-u). Es ist so konfiguriert, drucken Sie alles und beginnen an der Unterseite, die folgenden neuen log-Einträge wie Sie erstellt werden (-f).

Natürlich, viele Programme immer noch schreiben, die meisten Dinge, um Ihre access-oder error-logs, so sicher sein, überprüfen Sie diese ebenfalls. Das journal hält den überblick über Dinge, die direkt angemeldet auf der Konsole, was nützlich sein kann für das Debuggen von eigenen Leistungen.

Einfache Service-Konfiguration

Systemd wird benutzt, um eine Menge Dinge in Linux; jedes Objekt, die es verwaltet, ist aufgerufen, eine Einheit und haben eine entsprechende “Unit-Datei” definiert, was Sie sind. Dies können einfache Dienste wie nginx oder MySQL, aber Sie können auch Dinge sein wie mount points, devices, sockets und viele andere unter-die-Haube-Zeug, alles verwaltet von systemd. Einheiten können auch Ziele, zu kontrollieren, wenn andere Dienste ausgeführt werden (d.h., nach Netzwerk wird initialisiert).

Für diesen Anwendungsfall werden Sie aber wahrscheinlich nur wollen, konfigurieren Sie Ihre Anwendung als Basis-service. Um dies zu tun, müssen Sie erstellen Sie eine neue unit-Datei, die Sie wollen, um Platz in /etc/systemd/system/ und den Namen mit ein .service-Erweiterung:

touch /etc/systemd/system/Anwendung.service

Unit-Dateien haben ein paar verschiedene Abschnitte, aber insgesamt wird in etwa so Aussehen:

[Einheit]
Beschreibung=Beispiel-Service
After=network.Ziel
StartLimitIntervalSec=0

[Service]
Typ=einfach
Neustart=immer
RestartSec=1
User=serviceuser
ExecStartPre=
ExecStart=/Pfad/zu/Programm [- Optionen]
ExecStartPost
ExecStop=
ExecReload=

[Installieren]
WantedBy=multi-user.Ziel

Erstens, die [Unit] – Abschnitt definiert, die eine Reihe von Metadaten über das Gerät. Die Nach= – Direktive kann verwendet werden, um die delay-Einheit Aktivierung, bis ein anderes Gerät gestartet wird, wie Netzwerk, oder einem anderen Dienst, wie mysql.Dienst Dies nicht machen es zu einem schwer abhängig von diesem Dienst, aber Sie können tun, dass mit dem Bedarf= oder Will= Richtlinien. In diesem Abschnitt wird auch konfiguriert die maximale Anzahl wie oft das Gerät versuchen wird, gestartet werden, bevor systemd gibt, das vollständig aus; da werden Sie wahrscheinlich wollen, es zu halten versuchen, können Sie dies auf 0, um dieses Verhalten zu deaktivieren.

Weiter ist die [Service] Abschnitt, spezifische service-unit-Dateien. Dies ist, wo Sie konfigurieren die Exec-Optionen. Benutzer der Dienst ausgeführt wird, als einen bestimmten Nutzer. Sie können diese Einstellung Ihrem persönlichen Benutzer-Konto, root, oder eine benutzerdefinierte-gemacht service-Konto. Nur stellen Sie sicher, dass der Benutzer genügend Berechtigungen, um seine Arbeit zu tun.

Es gibt ein paar verschiedene Richtlinien, die hier für die Angabe von Programmen ausführen. ExecStartPre wird zuerst ausgeführt, so dass Sie tun, keine Einrichtung erforderlich, bevor der Dienst wirklich gestartet wird. ExecStart ist das Hauptprogramm. ExecStartPost läuft hinterher, und ExecStop wird ausgeführt, wenn der Dienst heruntergefahren. ExecReload ist eine spezielle Richtlinie, und wird verwendet, wenn Sie rufen Sie “neu laden”, anstatt neu zu starten. Dies können Sie durchführen, Laufzeit nachladen der Konfiguration, vorausgesetzt, dass Ihre Anwendung hat die Fähigkeit.

Schließlich, die [Install] – Sektion definiert, die einige weitere Verhaltensmuster im Zusammenhang mit, wie systemd übernimmt die Einheit. Dies wird am häufigsten verwendet, um anzugeben, die WantedBy= – Richtlinie, die verwendet wird, um zu sagen, systemd, wenn Sie starten Sie den Dienst und erstellt symlinks zwischen den Zielen und Ihre abhängigen Einheiten. Wenn Sie unsicher sind, welche Zielgruppen zu bedienen, multi-user.Ziel wird die Ausführung von Diensten beim Systemstart, nachdem die meisten alles geladen ist.

Insgesamt ist die Konfiguration ziemlich einfach ist, und alles, was Sie wirklich tun müssen, ist in der ausführbaren Datei als argument in der [Service] Abschnitt. Sobald Ihr Dienst erstellt haben, müssen Sie die reload systemctl daemon-update mit den änderungen:

sudo systemctl daemon-reload

Und aktivieren Sie es (die die es ausgeführt wird, im boot, per-unit-config):

sudo systemctl enable myapp

Und dann den Dienst starten:

sudo service Anwendung starten

Der Dienst sollte jetzt im hintergrund ausgeführt, und Sie können überprüfen, journalctl zu beobachten, dessen Ausgang. Wenn es beendet, systemd automatisch starten Sie es erneut, und es sollte beim Start zusammen mit den anderen Diensten auf Ihrem system.

Wenn Sie brauchen, um starten Sie Ihren Dienst, die Sie verwenden können:

sudo service Anwendung neu starten

Die Ausführung der ExecStop= Richtlinie, das Herunterfahren des Gerätes, und dann starten Sie es erneut.