Page 1 sur 1

Gestion d'un Queue Worker pour Laravel avec Systemd sur serveur cloud Infomaniak

Publié : 14 juin 2024, 22:25
par ManiaKafe
Sur ce petit fil, je vous propose un pas à pas sur la création d'un worker linux Systemd pour la gestion des tâches en arrière-plan Laravel.

Comme infomaniak ne propose pas l'installation de Supervisor, nous devons passer par Systemd qui permet à peu de chose près la même chose.

1. Installer Systemd sur votre serveur cloud (via le fast installer)
Sous votre serveur cloud, rendez-vous sous "Fast Installer" puis chercher Systemd et cliquer sur installer.
Une fois installé, systemd sera disponible via SSH avec la commande "systemctl".

2. Ecriture d'un fichier de configuration
Ce fichier sera utilisé par Systemd pour connaître les actions à effectuer et dans quel dossier de votre hébergement

2.1 Se rendre sous "~/.config/systemd/user/"
Une fois connecté par SSH à votre serveur, tappez la commande suivante :

Code : Tout sélectionner

cd ~/.config/systemd/user/
2.2 Créez un nouveau fichier de configuration (avec extension .service)
Donnez ici le nom que vous souhaitez à votre fichier. Par exemple "laravelqueue.service".

Code : Tout sélectionner

nano laravelqueue.service
2.3 Ajouter les informations de votre service comme dans l'exemple ci-dessous:
A noter que dans cet example, j'utilise PHP 8.2, changez cela en fonction de vos besoins, ainsi que la description, le working directory et la commande d'exécution.

Code : Tout sélectionner

[Unit]
Description=***DESCRIPTION DE CE SERVICE POUR VOTRE INFO***
After=network.target

[Service]
Restart=always
WorkingDirectory=%h/sites/***DOSSIER DE VOTRE INSTALLATION LARAVEL (si situé sous "sites")***
ExecStart=/opt/php8.2/bin/php artisan queue:work --sleep=3 --tries=3

[Install]
WantedBy=default.target
Vous pouvez à présent sauver ce fichier.

3. Instruire Systemd à utiliser votre fichier

3.1 Lancez la commande suivante depuis le SSH de votre serveur afin de faire réanalyser les fichiers services de systemd:

Code : Tout sélectionner

systemctl --user daemon-reload
3.2 Puis activez le service en prenant soin de remplacer "laravelqueue.service" par le nom du fichier que vous avez créé:

Code : Tout sélectionner

systemctl --user enable --now laravelqueue.service
3.3 Vous pouvez ensuite vérifier si le service est fonctionnel avec:

Code : Tout sélectionner

systemctl --user status laravelqueue.service
3.4 Si le status de votre service n'est pas actif (le status n'est pas vert avec écrit "active (running)"), tentez de le relancer:

Code : Tout sélectionner

systemctl --user restart laravelqueue.service
Voilà ! Vous avez maintenant un worker laravel fonctionnel pour exécuter vos tâches d'arrière-plan 8-)