Configurer Laravel .env et storage pour la production
Un fichier .env correctement configuré et un storage fonctionnel sont essentiels pour toute application Laravel. Dans ce guide, vous apprendrez comment les configurer correctement pour un environnement de production.
Comprendre le fichier .env
Le fichier .env contient des configurations spécifiques à l'environnement qui ne doivent pas être versionnées.
Pourquoi utiliser .env
- Sépare la configuration du code
- Empêche les données sensibles dans Git
- Facilite le déploiement vers différents environnements
- Chaque environnement (dev, staging, production) a son propre .env
Créer un .env
Lorsque vous clonez Laravel, créez un .env :
cd ~/domains/votredomaine.nl/projet
# Copier le fichier exemple
cp .env.example .env
# Générer la clé de l'application
php artisan key:generate
Paramètres essentiels du .env
Configurez ces paramètres pour la production.
Paramètres de l'application
APP_NAME="Mon Application Laravel"
APP_ENV=production
APP_KEY=base64:clé-générée-ici
APP_DEBUG=false
APP_TIMEZONE=Europe/Amsterdam
APP_URL=https://votredomaine.nl
Important :
- `APP_ENV=production` active les optimisations de production
- `APP_DEBUG=false` empêche l'affichage des messages d'erreur
- `APP_URL` doit contenir votre URL complète avec https
Configuration de la base de données
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=votre_base_de_données
DB_USERNAME=votre_utilisateur
DB_PASSWORD=votre_mot_de_passe
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
Configuration des logs
LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=error
Pour la production :
- `daily` crée un nouveau fichier de log par jour
- `LOG_LEVEL=error` ne journalise que les erreurs, pas les avertissements
Cache et Session
CACHE_STORE=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=true
SESSION_PATH=/
SESSION_DOMAIN=.votredomaine.nl
Pour de meilleures performances sur un hébergement partagé, `file` est le meilleur choix.
Configuration de la Queue
QUEUE_CONNECTION=database
Ou pour un hébergement partagé sans workers :
QUEUE_CONNECTION=sync
Configuration de l'email
MAIL_MAILER=smtp
MAIL_HOST=mail.votredomaine.nl
MAIL_PORT=587
MAIL_USERNAME=info@votredomaine.nl
MAIL_PASSWORD=ton-mot-de-passe-email
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@votredomaine.nl
MAIL_FROM_NAME="${APP_NAME}"
Configurer le stockage
Laravel utilise le dossier storage pour les logs, le cache et les uploads.
Structure du stockage
storage/
├── app/
│ ├── public/ # Uploads accessibles au public
│ └── private/ # Fichiers privés
├── framework/
│ ├── cache/ # Cache de fichiers
│ ├── sessions/ # Fichiers de session
│ └── views/ # Vues compilées
└── logs/ # Fichiers de log
Créer un lien de stockage
Le stockage public doit être accessible via le web :
# Créer le symlink
php artisan storage:link
Cela crée : `public/storage` -> `storage/app/public`
Vérifiez si le lien fonctionne :
ls -la public/
# Vous devriez voir : storage -> /chemin/vers/storage/app/public
Symlink manuel
Si la commande artisan ne fonctionne pas :
cd public
ln -s ../storage/app/public storage
Configurer les droits de stockage
Assurez-vous que Laravel peut écrire :
# Rendre récursivement accessible en écriture
chmod -R 775 storage
chmod -R 775 bootstrap/cache
# Définir le propriétaire (si nécessaire)
chown -R www-data:www-data storage
chown -R www-data:www-data bootstrap/cache
Sur un hébergement partagé, il suffit généralement de faire chmod.
Sécurité de production
Protégez votre .env et votre stockage.
Protéger le .env
Le fichier .env ne doit jamais être accessible au public :
- Le dossier public de Laravel est la racine du document
- .env est un niveau plus haut
- .htaccess bloque l'accès
Vérifiez avec :
curl https://votredomaine.nl/.env
# Doit renvoyer 403 ou 404, JAMAIS le contenu !
.env dans .gitignore
Assurez-vous que .env ne soit jamais dans Git :
.env
.env.backup
.env.production
Protéger le stockage
Protéger les uploads privés :
// Dans routes/web.php
Route::get('/download/{file}', function ($file) {
// Vérification d'autorisation
if (!auth()->check()) {
abort(403);
}
return Storage::download('private/' . $file);
});
Configuration du cache
Optimisez le caching pour la production.
Cache de configuration
php artisan config:cache
Cela combine tous les fichiers de configuration dans un fichier mis en cache.
Attention : Après config:cache, .env n'est plus lu directement. Les modifications dans .env nécessitent :
php artisan config:clear
php artisan config:cache
Cache de route
php artisan route:cache
Accélère considérablement la résolution des routes.
Cache de vue
php artisan view:cache
Pré-compile toutes les templates Blade.
Tout en même temps
php artisan optimize
Ou lors du déploiement :
php artisan optimize:clear
php artisan optimize
Problèmes courants
Permission de stockage refusée
# Réinitialiser les droits
chmod -R 775 storage bootstrap/cache
# Contexte SELinux (CentOS/RHEL)
chcon -R -t httpd_sys_rw_content_t storage
Le symlink ne fonctionne pas
Sur certains serveurs, les symlinks sont désactivés :
# Copier au lieu de symlink
cp -r storage/app/public/* public/storage/
Ou modifiez le FileController pour servir les fichiers.
Les modifications .env ne fonctionnent pas
# Vider le cache de configuration
php artisan config:clear
# Ou si vous n'avez pas SSH
# Supprimez : bootstrap/cache/config.php
Problèmes de APP_KEY
Si vous manquez ou si votre APP_KEY est incorrect :
php artisan key:generate
Cela régénère la clé. Attention : les données chiffrées existantes deviendront illisibles.
Détection de l'environnement
Vérifiez l'environnement actuel dans le code :
// Dans le code
if (app()->environment('production')) {
// Code spécifique à la production
}
// Dans Blade
@production
@endproduction
Meilleures pratiques
Gestion du .env
- Ne jamais utiliser le même .env en dev et en production
- Conservez le .env de production en sécurité (gestionnaire de mots de passe)
- Utilisez des mots de passe forts et uniques
- Faites régulièrement tourner les identifiants
Gestion du stockage
- Configurer une sauvegarde pour storage/app
- Envisagez le stockage cloud pour l'évolutivité
- Nettoyez régulièrement les anciens logs
Articles connexes
- Frameworks PHP et DirectAdmin
- Laravel avec Composer via SSH
- Artisan et commandes Console via SSH
- Plus d'informations sur l'hébergement Laravel chez Theory7
Besoin d'aide ?
Nous sommes là pour vous ! Vous rencontrez un problème ou avez des questions ? Notre équipe de support se fera un plaisir de vous aider personnellement. Envoyez-nous un message via le système de tickets - nous répondons généralement dans quelques heures et sommes heureux de vous aider.
0 van 0 vonden dit nuttig