Laravel à l’Horizon

Bonjour à tous et bienvenue dans ce tutoriel dédié à l’installation serveur et locale et l’utilisation d’Horizon pour Laravel.

Horizon est un tableau de bord pour gérer le système de file d’attente (queues) de vos tâches (jobs) dans Laravel.

Tout d’abord, Horizon repose sur le driver de queue Redis, qu’il faut donc installer :

sudo apt-get install redis-server

Testez si celui-ci fonctionne et réagi :

redis-cli
ping //(retournera PONG)

Mettez à jour votre fichier .env :

QUEUE_CONNECTION=redis

Pour un tutoriel plus poussé sur serveur, vous pouvez regarder ce tutoriel (pour Ubuntu 16 et 18)

Il nous faut installer Supervisor pour que redis charge tout seul sur serveur :

sudo apt install supervisor
sudo service supervisor restart
sudo systemctl enable supervisord

Créer une configuration de Supervisor pour Horizon

Superviseur conserve les fichiers individuels de ses programmes dans

/etc/supervisor/conf.d

Il faut ainsi créer un fichier de config pour notre redis :

sudo nano /etc/supervisor/conf.d/YOUR-APP-NAME-CHANGE-THIS.conf

Et passer ce contenu :

[program:laravel_horizon]
process_name=%(program_name)s_%(process_num)02d
command=php /home/ubuntu/YOUR-PROJECT-FOLDER-CHANGE-THIS/artisan horizon
autostart=true
autorestart=true
redirect_stderr=true
user=www-data
stdout_logfile=/home/ubuntu/YOUR-PROJECT-FOLDER-CHANGE-THIS/storage/horizon.log

Plus qu’a redémarrer le superviseur :

sudo supervisorctl reread
sudo supervisorctl update

Et vérifier qu’il tourne :

sudo supervisorctl

Après chaque déploiement, il faut bien utiliser ces commandes (ou les intégrer dans votre pipeline de développement continu) :

php artisan horizon:purge
php artisan horizon:terminate
php artisan horizon

Et à partir de là, toutes vos tâches seront traitées par Horizon, sachez néanmoins que le dashboard disponible en local avec /horizon ne sera pas visible en production !

Sinon vous pouvez toujours utiliser Cloudways pour gérer vos déploiements automatiquement, leurs outils sont assez top.