Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

"Skills"
11.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. Indem Sie diese Schritte befolgen, können Sie eine größere Kontrolle über das Verhalten der Dienste Ihres Systems erhalten und seine Gesamtfunktionalität verbessern.

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 wichtigsten Funktionen ist die Möglichkeit, Dienste automatisch beim Booten zu starten, um sicherzustellen, dass kritische Anwendungen und Dienste sofort nach dem Systemstart betriebsbereit sind. Dieser Artikel führt Sie durch die Schritte, die notwendig sind, um eine systemd-Diensteinheit zu erstellen und sie beim Booten zu starten.

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-File-Struktur bietet systemd eine flexible Möglichkeit zur Verwaltung von Diensten, Sockets, Geräten und anderen Systemressourcen.

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 Sie das Arbeitsverzeichnis

  1. Öffnen Sie Ihre Diensteinheitendatei, um die Richtlinie WorkingDirectory zu überprüfen:
    sudo nano /etc/systemd/system/myapp.service
  2. Suchen Sie die WorkingDirectory-Zeile. Sie sollte etwa so aussehen ( Suchen Sie nach: Create the Service Unit File):
    WorkingDirectory=/etc/systemd/myapp
  3. Überprüfen Sie, ob das angegebene Verzeichnis existiert:
    ls -l /etc/systemd/myapp

    * /path/to/myapp – Ersetzen Sie den Pfad 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 des Arbeitsverzeichnisses

  1. Wenn das Verzeichnis nicht existiert, erstellen Sie es:
    sudo mkdir -p /etc/systemd/myapp
  2. Setzen Sie die entsprechenden Berechtigungen, damit der in der User-Direktive Ihres Dienstes angegebene Benutzer darauf zugreifen kann. Wenn Ihr Dienst zum Beispiel unter dem Namen 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 den folgenden Inhalt in die Datei ein und ändern Sie ihn nach Bedarf für Ihre Anwendung:
      [Unit]
      Beschreibung=Meine eigene Anwendung
      Nach=network.target
      [Dienst]
      ExecStart=/usr/bin/myapp
      Neustart=Immer
      Benutzer=myuser
      WorkingDirectory=/etc/systemd/myapp
      [Installieren]
      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]: In diesem Abschnitt wird festgelegt, 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 gängiges Ziel für Benutzerdienste.

Schritt 3: Überprüfen der Berechtigungen

  1. Überprüfen Sie, ob der Benutzer die richtigen Berechtigungen für den Zugriff auf das Arbeitsverzeichnis hat:
    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

  1. Stellen Sie sicher, dass Ihre Anwendung in diesem Arbeitsverzeichnis ausgeführt werden kann. Sie können dies testen, indem Sie zum Benutzer wechseln und zu dem Verzeichnis navigieren:
    sudo -u meinBenutzer 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

  1. Nachdem Sie sichergestellt haben, dass das Arbeitsverzeichnis existiert und korrekt eingerichtet ist, laden Sie die systemd-Konfiguration neu:
    sudo systemctl daemon-reload
  2. Versuchen Sie, den Dienst erneut zu starten:
    sudo systemctl start myapp.service

Schritt 6: Prüfen Sie den Status

  1. Überprüfen Sie den Status des Dienstes, um festzustellen, 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 zusätzliche Informationen:

journalctl -u myapp.service

Schritt 8: (Optional) Stoppen 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

Fazit

Die Verwendung von systemd zum Starten eines Linux-Dienstes beim Booten ist ein unkomplizierter Prozess, der die Zuverlässigkeit und Verwaltung des Systems verbessert. Indem Sie eine Service-Unit-Datei erstellen, 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-Systemverwaltung macht.

Mit diesen Schritten können Sie Ihre eigenen Dienste effektiv einrichten und verwalten und so 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.

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

"Skills"