Testen Sie Ihre Fähigkeiten mit unseren Hosting-Diensten und erhalten Sie 15% Rabatt!

Code an der Kasse verwenden:

Skills
06.11.2024

systemd verwenden, um einen Linux-Dienst beim Booten zu starten

Für diejenigen, die Anwendungen oder Dienste auf Linux-VPS-Hosting verwalten, ist es für einen unterbrechungsfreien Betrieb unerlässlich, sicherzustellen, dass kritische Dienste beim Booten automatisch gestartet werden. Mit systemd, einem leistungsstarken und flexiblen Init-System, können Sie ganz einfach Dienste so konfigurieren, dass sie direkt beim Systemstart gestartet werden, was für Webanwendungen, Datenbanken und andere wichtige Dienste, die in VPS-Umgebungen laufen, entscheidend ist. Diese Anleitung führt Sie durch die Einrichtung einer benutzerdefinierten systemd-Service-Unit, so dass Sie den Start von Diensten automatisieren, die Verwaltung rationalisieren und die Zuverlässigkeit Ihrer Linux-VPS-Hosting-Einrichtung sicherstellen können

Verwenden Sie systemd, um einen Linux-Dienst beim Booten zu starten

systemd ist das moderne Init-System, das von vielen Linux-Distributionen zur Verwaltung von Systemdiensten und Ressourcen verwendet wird. Eine seiner Hauptfunktionen ist die Möglichkeit, Dienste automatisch beim Booten zu starten, um sicherzustellen, dass kritische Anwendungen und Dienste sofort nach dem Systemstart einsatzbereit sind. Dieser Artikel führt Sie durch die Schritte zur Erstellung einer systemd-Diensteinheit und zur Aktivierung des Starts beim Systemstart

Was ist systemd?

systemd ist ein Init-System, das ältere Init-Systeme wie SysVinit und Upstart ablöst. Es verwaltet Systemprozesse und -dienste und ermöglicht die Parallelisierung des Starts von Diensten, den bedarfsgesteuerten Start von Daemons und eine bessere Ressourcenkontrolle. Mit seiner Unit-Dateistruktur bietet systemd eine flexible Möglichkeit, Dienste, Sockets, Geräte und andere Systemressourcen zu verwalten

Erstellen eines systemd-Dienstes

Um einen Dienst beim Booten mit systemd zu starten , müssen Sie eine Service-Unit-Datei erstellen. Diese Datei enthält alle Informationen, die systemd für die Verwaltung des Dienstes benötigt. Im Folgenden wird beschrieben, wie Sie eine Service-Unit-Datei erstellen und konfigurieren

Schritt 1: Überprüfen des Arbeitsverzeichnisses

Öffnen Sie Ihre Service-Unit-Datei, um die WorkingDirectory-Anweisung zu überprüfen

sudo nano /etc/systemd/system/myapp.service

Suchen Sie die WorkingDirectory-Zeile. Sie sollte etwa so aussehen ( Suchen Sie nach: Create the Service Unit File)

WorkingDirectory=/etc/systemd/myapp

Überprüfen Sie, ob das angegebene Verzeichnis existiert

ls -l /etc/systemd/myapp

* /path/to/myapp – Ersetzen Sie das Verzeichnis durch den tatsächlichen Pfad, den Sie verwenden möchten. Wenn Sie eine Fehlermeldung erhalten, dass das Verzeichnis nicht existiert, müssen Sie es erstellen

Schritt 2: Erstellen Sie das Arbeitsverzeichnis

Wenn das Verzeichnis nicht existiert, erstellen Sie es

sudo mkdir -p /etc/systemd/myapp

Setzen Sie die entsprechenden Berechtigungen, damit der in der User-Direktive Ihres Dienstes angegebene Benutzer darauf zugreifen kann. Zum Beispiel, wenn Ihr Dienst als myuser läuft

sudo chown myuser:myuser /etc/systemd/myapp

Erstellen Sie die Service-Unit-Datei

  1. Öffnen Sie ein Terminal auf Ihrem Linux-System.
  2. Erstellen Sie eine neue Service-Unit-Datei im Verzeichnis /etc/systemd/system/. Der Dateiname sollte mit .service enden. Um zum Beispiel einen Dienst für eine benutzerdefinierte Anwendung namens myapp zu erstellen, führen Sie aus
    sudo nano /etc/systemd/system/myapp.service
  3. Fügen Sie der Datei den folgenden Inhalt hinzu und ändern Sie ihn nach Bedarf für Ihre Anwendung:
    [Unit]
    Description=My Custom Application
    After=network.target
    [Service]
    ExecStart=/usr/bin/myapp
    Restart=always
    User=myuser
    WorkingDirectory=/etc/systemd/myapp
    [Install]
    WantedBy=multi-user.target
  • abschnitt [Unit]: Dieser Abschnitt enthält Metadaten und Abhängigkeiten für den Dienst
      • Beschreibung: Eine kurze Beschreibung des Dienstes.
      • Nach: Gibt an, dass der Dienst gestartet werden soll, nachdem das Netz verfügbar ist.
  • abschnitt [Dienst]: Dieser Abschnitt legt fest, wie sich der Dienst verhält
      • ExecStart: Der Befehl zum Starten des Dienstes. Ersetzen Sie /usr/bin/myapp durch den Pfad zu Ihrer ausführbaren Datei.
      • Neustart: Legt das Neustartverhalten fest. always bedeutet, dass der Dienst neu gestartet wird, wenn er abstürzt.
      • Benutzer: Legt den Benutzer fest, unter dem der Dienst ausgeführt werden soll.
      • WorkingDirectory: Legt das Arbeitsverzeichnis für den Dienst fest.
  • abschnitt [Installieren]: In diesem Abschnitt wird festgelegt, wie der Dienst aktiviert werden soll.
      • GesuchtBy: Hier wird das Ziel definiert, unter dem der Dienst gestartet werden soll. multi-user.target ist ein übliches Ziel für Benutzerdienste.

Schritt 3: Überprüfen der Berechtigungen

Überprüfen Sie, ob der Benutzer die richtigen Berechtigungen für den Zugriff auf das Arbeitsverzeichnishat

ls -ld /etc/systemd/myapp

Vergewissern Sie sich, dass die Berechtigungen dem Benutzer erlauben, Dateien in diesem Verzeichnis zu lesen und auszuführen

Schritt 4: Ausführbare Datei im Arbeitsverzeichnis testen

Stellen Sie sicher, dass Ihre Anwendung von diesem Arbeitsverzeichnis aus ausgeführt werden kann. Sie können dies testen, indem Sie in den Benutzer wechseln und zu dem Verzeichnis navigieren

sudo -u myuser bash
cd /etc/systemd/myapp
/usr/bin/myapp
Prüfen Sie, ob es ohne Fehler läuft. Wenn dies nicht der Fall ist, beheben Sie das Problem in der Anwendung selbst.

Schritt 5: Laden Sie systemd neu und starten Sie den Dienst

Nachdem Sie sichergestellt haben, dass das Arbeitsverzeichnis existiert und korrekt eingerichtet ist, laden Sie die systemd-Konfiguration neu

sudo systemctl daemon-reload

Versuchen Sie, den Dienst erneut zu starten

sudo systemctl start myapp.service

Schritt 6: Prüfen Sie den Status

Überprüfen Sie den Status des Dienstes, um zu sehen, ob er erfolgreich gestartet wurde

sudo systemctl status myapp.service

Schritt 7: Überprüfen Sie die Protokolle auf weitere Fehler

Wenn der Dienst immer noch nicht gestartet werden kann, überprüfen Sie die Protokolle auf weitere Informationen

journalctl -u myapp.service

Schritt 8: (Optional) Anhalten und Deaktivieren des Dienstes

Wenn Sie den Dienst anhalten oder verhindern möchten, dass er beim Booten gestartet wird, können Sie die folgenden Befehle verwenden

  • Um den Dienst anzuhalten
    sudo systemctl stop myapp.service
  • So deaktivieren Sie den Start des Dienstes beim Booten
    sudo systemctl disable myapp.service

Schlussfolgerung

Die Verwendung von systemd zum Starten eines Linux-Dienstes beim Booten ist ein unkomplizierter Prozess, der die Zuverlässigkeit und Verwaltung des Systems verbessert. Durch die Erstellung einer Service-Unit-Datei können Sie definieren, wie Ihre Anwendung ausgeführt werden soll, und sicherstellen, dass sie automatisch mit Ihrem System gestartet wird. Diese Methode vereinfacht nicht nur die Verwaltung von Diensten, sondern bietet auch leistungsstarke Funktionen zur Steuerung des Dienstverhaltens, was systemd zu einem unverzichtbaren Werkzeug für die moderne Linux-Systemadministration macht. Mit diesen Schritten können Sie Ihre eigenen Dienste effektiv einrichten und verwalten und die Gesamtfunktionalität Ihrer Linux-Umgebung verbessern. Wenn Sie auf Probleme stoßen, kann die Überprüfung der Protokolle mit journalctl hilfreiche Erkenntnisse darüber liefern, was schief gelaufen sein könnte.

Testen Sie Ihre Fähigkeiten mit unseren Hosting-Diensten und erhalten Sie 15% Rabatt!

Code an der Kasse verwenden:

Skills