Introduction
Lorsque vous déployez une application Laravel en production, il faut la préparer pour qu’elle fonctionne le plus efficacement possible. Ce guide couvre les points essentiels d’un déploiement en production fiable.Flux de déploiement
Prérequis serveur
Le framework Laravel a les prérequis système suivants. PHP 8.3 ou supérieur et les extensions PHP ci-dessous sont requises.| Extension | Description |
|---|---|
| Ctype | Contrôle des types de caractères |
| cURL | Communication HTTP |
| DOM | Manipulation DOM de XML/HTML |
| Fileinfo | Détection des types MIME |
| Filter | Filtrage des données |
| Hash | Fonctions de hachage |
| Mbstring | Traitement des chaînes multi-octets |
| OpenSSL | Chiffrement |
| PCRE | Expressions régulières |
| PDO | Connexion à la base de données |
| Session | Gestion des sessions |
| Tokenizer | Analyse des tokens PHP |
| XML | Traitement XML |
Configuration serveur
Nginx
Si vous utilisez Nginx, basez-vous sur la configuration suivante. Il est essentiel de rediriger toutes les requêtes verspublic/index.php.
Ne déplacez pas index.php à la racine du projet, ce qui exposerait des fichiers de configuration sensibles.
FrankenPHP
FrankenPHP est un serveur d’applications PHP moderne écrit en Go. Vous pouvez démarrer votre application Laravel avec cette seule commande.Permissions des répertoires
Laravel a besoin d’écrire dansbootstrap/cache et storage.
Configurez les permissions pour que l’utilisateur du serveur web puisse y écrire.
Optimisation
Lors du déploiement en production, mettez en cache la configuration, les événements, les routes et les vues pour améliorer les performances. La commandeoptimize effectue tout cela en une fois.
optimize:clear.
Commandes d’optimisation individuelles
optimize regroupe les commandes suivantes, exécutables séparément si besoin.
| Commande | Description |
|---|---|
php artisan config:cache | Fusionne les fichiers de configuration en un seul fichier mis en cache |
php artisan event:cache | Met en cache le mapping événement → listener |
php artisan route:cache | Met en cache les définitions de routes pour accélérer leur enregistrement |
php artisan view:cache | Précompile les vues Blade pour accélérer les requêtes |
Après avoir exécuté
config:cache, n’appelez env() qu’à l’intérieur des fichiers de configuration.
Une fois le cache généré, le fichier .env n’est plus lu, et env() renvoie null en dehors des fichiers de configuration.Rechargement des services
Après un déploiement, les services longue durée comme les queue workers, Laravel Reverb ou Laravel Octane doivent être redémarrés pour utiliser le nouveau code.Si vous utilisez Laravel Cloud, le rechargement gracieux de tous les services est géré automatiquement ; la commande
reload n’est pas nécessaire.Mode debug
L’optiondebug de config/app.php contrôle le niveau d’information d’erreur affiché à l’utilisateur.
Par défaut, elle prend la valeur de la variable APP_DEBUG du fichier .env.
Route de health check
Laravel inclut une route de health check intégrée pour surveiller l’état de l’application. Elle s’intègre avec les moniteurs d’uptime, les load balancers ou des systèmes d’orchestration comme Kubernetes. Par défaut, l’endpoint/up est fourni : il retourne 200 si l’application démarre correctement, et 500 en cas d’exception au démarrage.
L’URI peut être personnalisé dans bootstrap/app.php.
Illuminate\Foundation\Events\DiagnosingHealth est déclenché, ce qui vous permet d’ajouter des vérifications supplémentaires (base de données, cache…) via des listeners.
Déployer avec Laravel Cloud ou Forge
Laravel Cloud
Si vous cherchez une plateforme de déploiement entièrement managée avec auto-scaling, Laravel Cloud est la solution. C’est un PaaS optimisé pour Laravel offrant compute managé, base de données, cache et stockage objet. Réglée directement par l’équipe Laravel, elle s’intègre parfaitement au framework.Laravel Forge
Si vous préférez gérer vous-même votre serveur sans configurer manuellement Nginx, MySQL et autres services, Laravel Forge est très utile. Il crée des serveurs sur les principaux fournisseurs cloud (DigitalOcean, Linode, AWS…) et installe et gère automatiquement Nginx, MySQL, Redis, Memcached, Beanstalk, etc.Prochaines étapes
Déploiement — Documentation officielle
Consultez la documentation officielle pour les derniers détails de configuration de déploiement.