Mein Variomedia

Hier können Sie sich im Kundenmenü einloggen.




Passwort vergessen?

Weitere Logins

Sie befinden sich hier: variomedia.de > Support > Häufige Fragen (FAQ) > Webanwendungen und Datenbanken > PHP

Fragen und Antworten

Wie kann ich Laravel Queue Worker auf dem Webserver automatisch starten?

In unseren Pro- bzw. Reseller.Dedicated Hosting-Paketen können Sie auf Wunsch eigene Dienste mittels Systemd auf Ihrem Webserver einrichten. Bitte wenden Sie sich dazu an unsere Kundenbetreuung und teilen den Benutzernamen mit, für den Systemd eingerichtet werden soll. Nach der Freischaltung der Systemd Benutzerdienste können Sie dann Dienste für Laravel Queue Worker einrichten.

Systemd einrichten

Die Konfigurationsdateien für Ihre Systemd-Benutzerdienste werden im Unterverzeichnis .config/systemd/user in ihrem Benutzerverzeichnis hinterlegt, dass Sie per SSH über folgenden Befehl anlegen können:

mkdir -p ~/.config/systemd/user

Die Konfigurationsdateien in diesem Verzeichnis haben die Dateiendung .service, davor können Sie einen beliebigen Namen vergeben.

Damit Systemd Ihre Benutzerdienste erkennt, muss weiterhin noch das Runtime-Verzeichnis über die Umgebungsvariable XDG_RUNTIME_DIR angegeben werden:

export XDG_RUNTIME_DIR=/run/user/$(id -u)

Es empfiehlt sich, diese Zeile am Ende der .bashrc-Konfigurationsdatei in Ihrem Benutzerverzeicihnis hinzuzufügen, damit die Umgebungsvariable beim SSH-Login automatisch gesetzt wird.

Systemd Konfigurationsdatei

Der Aufbau einer einfachen Systemd Konfigurationsdatei lässt sich an folgendem Beispiel nachvollziehen:

[Unit]
Description=Laravel Queue Worker

[Service]
Type=simple
Restart=on-failure
ExecStart=/usr/bin/php80 /homepages/u12345/artisan queue:work --daemon --env=production

[Install]
WantedBy=default.target

Unter Description können Sie eine Beschreibung für Ihren Dienst eingeben, unter ExecStart wird der auszuführende Befehl mit allen Optionen angegeben, die anderen Optionen müssen im Regelfall nicht angepasst werden.

Dienste verwalten

Um einen Dienst zu starten nutzen Sie folgenden Befehl (ersetzen Sie dabei dienstname.service durch den Namen Ihres Dienstes):
systemctl --user start dienstname.service

Um einen Dienst zu beenden nutzen Sie folgenden Befehl:
systemctl --user stop dienstname.service

Um den Status eines Dienstes anzuzeigen nutzen Sie folgenden Befehl:
systemctl --user status dienstname.service

Um die Ausgaben (z.B. Fehlermeldungen) eines Dienstes anzuzeigen nutzen Sie folgenden Befehl:
journalctl --user-unit dienstname.service

Um einen Dienst automatisch zu Starten nutzen Sie folgenden Befehl:
systemctl --user enable dienstname.service

Um den automatischen Start eines Dienstes zu deaktivieren nutzen Sie folgenden Befehl:
systemctl --user disable dienstname.service

Um die Konfigurationsdateien bei Änderungen neu zu laden nutzen Sie folgenden Befehl:
systemctl --user daemon-reload

Mehrere Instanzen eines Queue Worker Dienstes starten

Sie können auch mehrere Instanzen eines Queue Worker Dienstes starten. Dazu muss der Dateiname des Dienstes mit @.service enden.

Sie können dann z.B. 2 Queue Worker über folgende Befehle starten:
systemctl --user start dienstname@1.service
systemctl --user start dienstname@2.service

Zur Vereinfachung können Sie die Zahl der Worker auch in geschweiften Klammern angeben, z.B. für 4 Worker Dienste:
systemctl --user start dienstname@{1..4}.service

So können Sie dann auch den den automatischen Start von 4 Worker Diensten aktivieren:
systemctl --user enable dienstname@{1..4}.service


Laravel
Systemd