Déployer un site Laravel sur Plesk
DOG&DEV · 25/01/2025
Déployer un site Laravel sur Plesk
Déployer une application Laravel sur Plesk implique de pointer la racine web vers le dossier public/, de configurer .env, les migrations, les permissions et le cron pour la file et les tâches planifiées. Ce guide décrit une procédure type adaptée à un hébergement mutualisé ou VPS avec Plesk.
Prérequis
- Plesk installé avec un domaine (plesk-config-domaine)
- PHP 8.1+ avec extensions Laravel (openssl, pdo, mbstring, tokenizer, xml, ctype, json, bcmath, fileinfo)
- Accès FTP/SFTP ou Git pour déployer le code
- MySQL ou PostgreSQL (créé dans Plesk)
1. Déployer le code
- Git : cloner le dépôt dans un répertoire hors
httpdocs(ex.~/repos/monapp) puis, pour la prod, faire ungit pullet lancer le build (voir ci‑dessous). Vous pouvez aussi déployer dans un sous-dossier dehttpdocset faire pointer le domaine vershttpdocs/monapp/public— éviter de mettre tout Laravel dans la racine web. - FTP/SFTP : envoyer les fichiers dans un dossier dédié. Ne pas exposer
.env,/storage,/vendorà la racine web : la racine doit être uniquement le contenu depublic/(ou un alias verspublic/).
Structure cible typique :
- Dossier projet : ex.
/var/www/vhosts/domaine.com/monapp/(contenantapp/,config/,public/,vendor/, etc.) - Document Root du domaine (ou sous-domaine) :
.../monapp/public
2. Document Root : pointer vers public/
Dans Plesk : Domaines → domaine.com → Paramètres d’hébergement (ou Hosting & DNS).
Document Root : passer de httpdocs à le chemin vers le dossier public du projet, par ex. :
httpdocs/monapp/public
ou~/repos/monapp/current/publicsi vous utilisez un déploiement avec symlink.
Tout le trafic web doit être servi depuis public/ pour que index.php et les assets soient utilisés, et que le reste du code (.env, vendor/, etc.) ne soit pas accessible.
3. Fichier .env et base de données
- Créer ou copier
.envà la racine du projet (à côté deartisan), pas danspublic/. - Renseigner notamment :
APP_ENV=productionAPP_DEBUG=falseAPP_URL=https://domaine.comDB_*: hôte (souventlocalhost), base, utilisateur, mot de passe (créés dans Plesk)
Générer la clé :
php artisan key:generate
4. Dépendances et build
En SSH (ou via une tâche de déploiement) :
cd /chemin/vers/monapp
composer install --no-dev --optimize-autoloader
php artisan config:cache
php artisan route:cache
php artisan view:cache
Si vous utilisez Vite ou Mix :
npm ci
npm run build
(À lancer en amont et à inclure dans votre pipeline si vous en avez un.)
5. Migrations et permissions
php artisan migrate --force
Droits : storage/ et bootstrap/cache/ doivent être en écriture pour le compte PHP (souvent www-data ou l’utilisateur du domaine Plesk) :
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
(Adaptez www-data au user/group utilisés par Plesk pour ce domaine.)
6. Cron : schedule:run
Pour les tâches planifiées Laravel (App\Console\Kernel, schedule) :
* * * * * cd /chemin/vers/monapp && php artisan schedule:run >> /dev/null 2>&1
Dans Plesk : Domaines → domaine.com → Tâches planifiées (ou Scheduled Tasks) → Ajouter :
- Commande :
php artisan schedule:run - Répertoire : le répertoire du projet
- Fréquence : Chaque minute (
* * * * *).
7. File d’attente (queue)
Si vous utilisez des jobs (emails, traitements) :
- Driver :
database,redis, etc. dans.env(QUEUE_CONNECTION=...). - Pour
database:php artisan queue:work(ouqueue:listen) dans un supervisor ou une tâche planifiée longue.
Plesk ne gère pas toujours un worker ; un accès SSH et l’installation de Supervisor sur le serveur peuvent être nécessaires.
8. SSL (HTTPS)
- Activer Let’s Encrypt pour le domaine et forcer HTTPS : ssl-plesk.
- Dans
.env:APP_URL=https://domaine.comet, si derrière un reverse proxy,TrustProxiesetAPP_URLcohérents.
Dépannage
| Symptôme | Cause possible | Correctif |
|---|---|---|
| 500 après déploiement | Permissions storage/bootstrap/cache, .env manquant, APP_KEY vide |
chmod/chown ; vérifier .env et php artisan key:generate |
| « No application encryption key » | APP_KEY absent |
php artisan key:generate |
| Erreur BDD | Mauvais DB_* dans .env |
Vérifier hôte, base, user, mot de passe dans Plesk |
| Assets 404 | Document Root pas sur public/ ou Vite/Mix non buildés |
Pointer Document Root sur public/ ; npm run build |
Bonnes pratiques
- Ne jamais commiter
.env; le générer côté serveur. - Utiliser
composer install --no-devet les caches (config:cache,route:cache,view:cache) en production. - Automatiser le déploiement (script Git +
composer+artisan+npm run build) pour limiter les erreurs.
Chez DOG&DEV, nous déployons régulièrement des applications Laravel (sites, PanelRP, etc.) ; ces étapes constituent une base solide pour une mise en production avec Plesk.
Ressources
- Documentation Laravel – Déploiement
- Documentation Laravel – Tâches planifiées
- Documentation Plesk – Paramètres d’hébergement
Cet article s’inscrit dans notre série de guides hébergement et gaming. Pour un serveur sur-mesure, contact.