Skip to main content
Cloud & DevOps (AWS)

Comment Configurer Supervisor pour les Files d'Attente Redis de Laravel sur Amazon Linux 2023

Configurez Supervisor pour les files d'attente Redis de Laravel sur Amazon Linux 2023. Gardez les workers de file en fonctionnement permanent avec redémarrage automatique et journalisation.

9 min
Temps de lecture
1,631
Mots
Publié
Dernière révision
Engr Mejba Ahmed

Écrit par

Engr Mejba Ahmed

Partager l'article

Comment Configurer Supervisor pour les Files d'Attente Redis de Laravel sur Amazon Linux 2023

Introduction

If you’ve ever deployed a Laravel app in production, you’ve probably run into this frustrating issue: tout fonctionne parfaitement pendant le développement, mais dès que vous fermez votre session SSH ou redémarrez le serveur, votre processus queue:work s'arrête.

Et quand cela arrive, les tâches d'arrière-plan — comme l'envoi d'e-mails, l'importation de fichiers ou le traitement des paiements — s'arrêtent soudainement.

That’s where Supervisor comes in.

Supervisor is a battle-tested process control system that ensures your Laravel queues keep running 24/7, even after reboots, crashes, or code updates. It’s one of those small, behind-the-scenes tools that separates a hobby project from a production-grade application.

In this 2025 step-by-step guide, you’ll learn exactly how to:

  • Install and configure Supervisor on Amazon Linux 2023 (EC2)
  • Set up Laravel to manage Redis queue workers automatically
  • Keep jobs running after code deploys or server reboots
  • Use systemd for stable startup and automatic recovery
  • Add logging, scaling, and security optimizations for production

Let’s build a bulletproof queue system that never quits.


1. Why Laravel Redis Queues Need Supervisor

Laravel’s queue system is brilliant—it lets you offload heavy or time-consuming tasks to a background process. Whether you’re sending hundreds of emails, syncing large data sets, or processing imported files, queues keep your app fast and responsive.

But there’s a problem: The command you use to run queues—

php artisan queue:work

— ne tourne que tant que votre session terminal est ouverte. Dès que vous fermez votre connexion SSH ou déployez du nouveau code, ce worker s'arrête.

In production, that’s unacceptable. You can’t afford your jobs to silently stop.

Découvrez Supervisor

Supervisor est un gestionnaire de processus léger écrit en Python. Il :

  • Surveille et redémarre les workers de file d'attente automatiquement
  • S'assure qu'ils démarrent au boot
  • Tient des logs d'activité et d'erreurs des workers
  • Vous permet de scaler facilement plusieurs processus worker
  • Provides simple control via supervisorctl

When configured properly, Supervisor gives you peace of mind—your Redis queues will always run in the background, even if you never log into the server again.


2. Prérequis

Before diving in, make sure you have:

  • Amazon Linux 2023 (EC2 instance)
  • PHP 8.2+ and Composer installed
  • Redis and phpredis or predis extension
  • A working Laravel 10 or 11 application
  • SSH access as ec2-user with sudo privileges

And confirm that your .env is correctly set up for Redis:

QUEUE_CONNECTION=redis
CACHE_DRIVER=redis
SESSION_DRIVER=redis

Once these are ready, let’s install Supervisor.


3. Installer Supervisor sur Amazon Linux 2023

Unlike Ubuntu, Amazon Linux 2023 doesn’t include Supervisor in its default repositories. We’ll install it manually using Python’s package manager (pip3).

Étape 1 : Installer pip et Supervisor

sudo dnf install -y python3-pip
sudo pip3 install supervisor

Étape 2 : Créer les Répertoires Supervisor

sudo mkdir -p /etc/supervisor/conf.d
sudo echo_supervisord_conf | sudo tee /etc/supervisord.conf > /dev/null

Étape 3 : Inclure les Fichiers de Configuration Supplémentaires

Ouvrez le fichier de configuration principal :

sudo nano /etc/supervisord.conf

Ajoutez en bas :

[include]
files = /etc/supervisor/conf.d/*.conf

Sauvegardez et quittez (Ctrl + O, Entrée, Ctrl + X).


4. Configurer Supervisor avec systemd

To make sure Supervisor starts automatically when your EC2 instance boots, we’ll wire it to systemd.

Étape 1 : Créer le Fichier d'Unité systemd

sudo tee /etc/systemd/system/supervisord.service > /dev/null <<'SERVICE'
[Unit]
Description=Supervisor daemon
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
Restart=always
User=root

[Install]
WantedBy=multi-user.target
SERVICE

Étape 2 : Activer et Démarrer Supervisor

sudo systemctl daemon-reload
sudo systemctl enable --now supervisord
sudo systemctl status supervisord

Vous devriez voir :

Active: active (running)

Maintenant Supervisor démarrera automatiquement à chaque redémarrage du serveur.


5. Configurer les Workers de File d'Attente Laravel

We’ll configure Supervisor to manage your Laravel queue workers.

Étape 1 : Trouver votre Chemin PHP

which php

You’ll likely get /usr/bin/php. Utilisez ce chemin dans votre fichier de configuration.

Étape 2 : Créer votre Configuration de Worker

sudo tee /etc/supervisor/conf.d/laravel-redis-queues.conf > /dev/null <<'CONF'
[program:laravel-redis-queue]
directory=/var/www/writeflow-ai
command=/usr/bin/php artisan queue:work redis --sleep=3 --tries=3 --timeout=120 --backoff=3 --verbose
autostart=true
autorestart=true
user=ec2-user
redirect_stderr=true
stdout_logfile=/var/www/writeflow-ai/storage/logs/queue-worker.log
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=5
environment=APP_ENV="production",HOME="/home/ec2-user",PATH="/usr/local/bin:/usr/bin:/bin"
CONF

Étape 3 : Recharger Supervisor

sudo /usr/local/bin/supervisorctl reread
sudo /usr/local/bin/supervisorctl update
sudo /usr/local/bin/supervisorctl status

If everything’s configured correctly, you’ll see:

laravel-redis-queue RUNNING pid 1234, uptime 0:00:03

6. Tester votre Configuration de File d'Attente

Let’s make sure your queues actually run.

Étape 1 : Créer un Job de Test

php artisan make:job TestQueueJob

Ouvrez app/Jobs/TestQueueJob.php et modifiez la méthode handle() :

public function handle()
{
    \Log::info('✅ Queue is working fine: '.now());
}

Étape 2 : Dispatchez-le

php artisan tinker --execute="App\\Jobs\\TestQueueJob::dispatch();"

Étape 3 : Vérifiez les Logs

tail -f storage/logs/laravel.log

Vous devriez voir :

[2025-10-10 21:33:05] production.INFO: ✅ Queue is working fine: 2025-10-10 21:33:05

Félicitations — votre file d'attente Redis Laravel est maintenant entièrement supervisée et prête pour la production.


7. Redémarrer Automatiquement les Workers Après les Déploiements de Code

Chaque fois que vous déployez du nouveau code ou modifiez votre fichier .env, vous devez redémarrer vos workers de file d'attente pour charger les dernières modifications.

Au lieu d'exécuter de longues commandes, créez un script d'aide :

sudo tee /usr/local/bin/restart-workers.sh >/dev/null <<'SH'
#!/bin/bash
echo "🔄 Restarting Laravel queue workers..."
/usr/local/bin/supervisorctl reread
/usr/local/bin/supervisorctl update
/usr/local/bin/supervisorctl restart all
echo "✅ All workers restarted successfully."
SH

sudo chmod +x /usr/local/bin/restart-workers.sh

Après chaque déploiement, exécutez simplement :

sudo /usr/local/bin/restart-workers.sh

Simple, propre et sûr.


8. Garder les Logs Gérables avec la Rotation des Logs

Supervisor crée des fichiers de log séparés pour chaque worker. Au fil du temps, ceux-ci peuvent devenir volumineux. Vous pouvez automatiser le nettoyage avec logrotate.

sudo tee /etc/logrotate.d/laravel-supervisor >/dev/null <<'ROT'
/var/www/writeflow-ai/storage/logs/queue-worker.log {
  weekly
  rotate 5
  missingok
  notifempty
  copytruncate
  compress
}
ROT

Cela effectue la rotation des logs chaque semaine, garde 5 sauvegardes et compresse les anciens.


9. Scaler les Workers de File d'Attente

Plus de trafic ou de tâches d'arrière-plan qui s'accumulent ? Scalez facilement.

Modifiez votre configuration Supervisor :

[program:laravel-redis-queue]
numprocs=2
process_name=%(program_name)s_%(process_num)02d

Puis :

sudo /usr/local/bin/supervisorctl reread
sudo /usr/local/bin/supervisorctl update
sudo /usr/local/bin/supervisorctl status

Now you’ll have two concurrent workers processing jobs simultaneously.


10. Tout Vérifier Après un Redémarrage

Redémarrez votre instance EC2 pour confirmer le comportement de démarrage automatique :

sudo reboot

Une fois l'instance de retour en ligne :

sudo /usr/local/bin/supervisorctl status

Votre file d'attente devrait tourner automatiquement — sans que vous touchiez à quoi que ce soit.


11. Erreurs Courantes et Solutions

Problème Cause Solution
BACKOFF ou FATAL Mauvais chemin PHP Exécutez which php et mettez à jour
Permission denied Wrong file owner sudo chown -R ec2-user:ec2-user storage
queue:work not processing Redis not running or wrong env vars sudo systemctl restart redis
No logs Wrong log file path Check stdout_logfile in config
Jobs stuck in failed_jobs Exceptions or timeout too short Increase --timeout or inspect logs

Quick Takeaways

✅ Use Supervisor to ensure your Laravel queues run continuously. ✅ Install via pip3 on Amazon Linux 2023 (not yum). ✅ Link Supervisor to systemd so it auto-starts on reboot. ✅ Add a restart script for clean deployments. ✅ Implement log rotation to prevent storage bloat. ✅ Scale workers easily with numprocs. ✅ Test with a sample job to confirm everything works.


Conclusion

When it comes to Laravel queue reliability, Supervisor is non-negotiable. Without it, your background jobs can silently stop, leading to failed emails, unprocessed tasks, or delayed user experiences.

By setting up Supervisor on Amazon Linux 2023, you’ve built a robust, self-healing background process system powered by Redis and systemd.

Your queues now:

  • Run automatically after deploys or reboots
  • Restart on crashes
  • Scale seamlessly
  • Log every event

That’s the kind of stability every serious Laravel application deserves.


Call to Action

If this guide helped, share it with your DevOps or Laravel team.

Need expert help right now?

Let’s make your queues bulletproof and your deployments effortless.


FAQs

1. Why use Supervisor instead of a cron job?

Because cron runs on fixed intervals, not continuously. Supervisor monitors queue:work in real-time and restarts it instantly on crash or reboot.

2. Can I use this setup for SQS or Database queues?

Absolutely. Just replace redis in the command with your queue driver (e.g., database or sqs).

3. How do I stop all queue workers?

Run:

sudo /usr/local/bin/supervisorctl stop all

4. Que se passe-t-il si je déploie du nouveau code sans redémarrer les workers ?

They’ll keep running old code in memory. Always run supervisorctl restart all after a deploy.

5. Cette configuration est-elle sûre pour la production ?

Yes. It’s clean, secure, and aligned with modern Amazon Linux 2023 practices.


Mot Final : Vos files d'attente Redis Laravel sont maintenant inarrêtables. Plus de temps d'arrêt. Plus de redémarrages manuels. Juste de la performance pure, de qualité production — propulsée par Supervisor.

Coffee cup

Vous avez apprécié cet article ?

Votre soutien m'aide à créer davantage de contenu technique approfondi, d'outils open source et de ressources gratuites pour la communauté des développeurs.

Sujets connexes

Engr Mejba Ahmed

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 8+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Articles connexes

Tout parcourir

Comments

Leave a Comment

Share a question or add to the discussion.

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

AI assistant · trained on my work

👋

Hey there!

Quick Actions

WhatsApp Direct line to me

Chat on WhatsApp

+880 1723 741224 · Replies within the hour on working days

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

mejba.13@gmail.com

✓ Details sent! I'll get back to you shortly.

Powered by Claude

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support