Déployez une API PHP moderne (Laravel, Symfony ou PHP natif) avec PHP-FPM et Nginx : autoloader Composer optimisé, mise en cache des routes et exposition sécurisée du dossier public.
FastCGI Process Manager assurant le traitement haute performance des scripts PHP.
Génération de l'autoloader de classe optimisé via --optimize-autoloader.
Mise en cache des routes et des configurations pour supprimer le temps de parsing.
Seul le répertoire public/ doit être accessible par la directive root de Nginx.
# 1. Récupération et installation des dépendances sans les paquets de dev $ cd /var/www/mon-api-laravel $ git pull origin main $ composer install --no-dev --optimize-autoloader # 2. Mettre en cache la configuration et les routes pour accélérer l'API $ php artisan config:cache $ php artisan route:cache $ php artisan view:cache # 3. Exécuter les migrations de base de données en mode forcé pour la production $ php artisan migrate --force # 4. Ajuster les permissions pour que PHP-FPM puisse écrire dans storage/ $ sudo chown -R www-data:www-data storage bootstrap/cache $ sudo chmod -R 775 storage bootstrap/cache
Nginx reçoit la requête HTTP. Voyant qu'il s'agit d'un script .php, il ne l'exécute pas lui-même : il la transmet via un socket Unix rapide (ex. /run/php/php8.2-fpm.sock) au processus PHP-FPM. PHP-FPM compile, exécute le script, et renvoie le HTML ou JSON à Nginx, qui l'expédie au visiteur.
.env et tout votre code métier. root de votre serveur Nginx doit TOUJOURS pointer vers /var/www/mon-projet/public et JAMAIS vers la racine /var/www/mon-projet ! Si vous pointez vers la racine, les internautes pourront télécharger votre fichier .env en tapant simplement https://mon-api.com/.env ! | Critère | API Node.js (Express) | API PHP (Laravel / PHP-FPM) |
|---|---|---|
| Serveur HTTP | Intégré dans le code applicatif (app.listen) | Délégué à un serveur externe (Nginx + PHP-FPM) |
| Cycle de vie mémoire | Persistant : le serveur garde l'état en RAM | Éphémère : le script s'exécute et libère la RAM à chaque requête |
| Gestionnaire de processus | PM2 ou conteneur Docker obligatoire | Géré nativement par les pools de workers PHP-FPM |
| Gestion des dépendances | npm ci (package-lock.json) | composer install --no-dev (composer.lock) |