ObiDevTech ObiDevTech

Déployer Laravel sur un VPS : la checklist exhaustive pour un go-live sans accroc

Mise en ligne maîtrisée, sans improvisation de dernière minute.

15/07/2025 3 min 835 par Hoyt Botsford

Déployer une application Laravel en production est un moment stressant — surtout si c'est la première fois. La plupart des incidents de mise en ligne ne viennent pas de bugs dans le code, mais d'une configuration serveur incomplète, de permissions incorrectes, d'un .env mal configuré ou de services qui ne démarrent pas automatiquement au redémarrage du serveur. Cette checklist est basée sur l'expérience ObiDevTech accumulée sur des dizaines de déploiements clients au Bénin et en Afrique de l'Ouest.

Phase 1 — Préparation du serveur

  • Ubuntu 22.04 LTS (stable, support long terme) — mise à jour complète apt update && apt upgrade
  • Nginx dernière version stable — configuration par vhost dans /etc/nginx/sites-available/
  • PHP 8.2+ avec FPM — extensions requises : mbstring, xml, curl, zip, bcmath, gd, intl, redis, pdo_mysql
  • MySQL 8.0 ou PostgreSQL 15 — base de données dédiée avec utilisateur aux droits limités (pas root)
  • Redis — pour les sessions, les queues et le cache applicatif
  • Composer 2 installé globalement
  • Node.js + npm (si build des assets sur le serveur) — ou utiliser les assets pré-buildés en CI

Phase 2 — Déploiement du code

  • Cloner le dépôt dans /var/www/votreapp/ (jamais dans le home de root)
  • Créer le fichier .env de production — jamais committer en Git
  • Permissions : storage/ et bootstrap/cache/ doivent être en écriture pour www-data
  • composer install --no-dev --optimize-autoloader
  • php artisan key:generate (si première installation)
  • php artisan migrate --force
  • php artisan config:cache && route:cache && view:cache

Phase 3 — SSL et sécurité

  • Certificat SSL Let's Encrypt via Certbot — renouvellement automatique
  • Nginx configuré pour forcer le HTTPS et rejeter le HTTP
  • Headers sécurité dans la config Nginx : HSTS, X-Frame-Options, X-Content-Type-Options
  • Désactiver les pages d'erreur Nginx par défaut (elles révèlent la version de Nginx)
  • Firewall UFW : autoriser uniquement 22 (SSH), 80 et 443 — bloquer tout le reste
  • SSH configuré pour authentification par clé uniquement (désactiver l'authentification par mot de passe)

Phase 4 — Queues et scheduler

  • Installer Supervisor : apt install supervisor
  • Configurer un worker Laravel dans /etc/supervisor/conf.d/laravel-worker.conf
  • Configurer le cron pour le scheduler Laravel : * * * * * php /var/www/votreapp/artisan schedule:run
  • Vérifier que les queues traitent bien les jobs avec php artisan queue:work --verbose

Phase 5 — Monitoring et sauvegardes

  • UptimeRobot ou BetterUptime : alerte si le site répond autre chose qu'un 200
  • Sentry ou Bugsnag : capture des erreurs Laravel en production (configurer SENTRY_LARAVEL_DSN)
  • Sauvegardes automatiques quotidiennes avec spatie/laravel-backup vers S3 ou rclone
  • Tester la restauration d'une sauvegarde avant de considérer le déploiement terminé

Conclusion

Chez ObiDevTech, nous partageons cette checklist avec chaque client lors d'un go-live — et nous la complétons ensemble avant de pointer le DNS. Un déploiement sérieux prend du temps, mais il évite les nuits sans sommeil à cause d'une panne post-lancement qui aurait pu être prévenue.

Poursuivre la lecture

Articles similaires

D’autres contenus qui pourraient vous intéresser

Voir tout le blog
Architecture & DevOps

Sécuriser vos formulaires Laravel : CSRF, XSS, uploads et injections SQL

Les formulaires web sont la principale surface d'attaque de la plupart des applications. Voici le socle minimal de sécurité à mettre en place — concrètement, avec des exemples de code Laravel — pour ne jamais exposer vos utilisateurs.

4 min de lecture 2 245 vues