5.4Déploiement & CI/CD (Git, serveur, hébergement)
Développer une application, c'est bien ; la mettre en ligne pour qu'elle soit accessible au monde est l'aboutissement. Le déploiement consiste à faire tourner votre application PHP sur un serveur accessible sur Internet (au lieu de localhost). PHP a l'avantage d'être TRÈS répandu et facile à héberger — de nombreuses options existent selon le besoin et le budget. L'hébergement mutualisé : le plus simple et économique — vous partagez un serveur avec d'autres sites, l'hébergeur gère tout (PHP, base, serveur web) ; idéal pour de petits sites, mais avec des limites (peu de contrôle, ressources partagées). Les plateformes PaaS (Platform as a Service, comme certains services spécialisés PHP/Laravel) : simplifient le déploiement (on connecte son dépôt Git, la plateforme gère beaucoup). Le VPS (serveur virtuel privé) : plus de contrôle mais plus de responsabilités — vous administrez le serveur (installer PHP, un serveur web comme Nginx/Apache, MySQL, configurer, sécuriser, HTTPS). Les grands clouds (AWS, etc.) pour les besoins d'envergure. Un rôle central est joué par Git (le système de gestion de versions) : on ne transfère plus les fichiers « à la main » (par FTP, source d'erreurs), on déploie via Git (le serveur récupère le code depuis le dépôt) — plus fiable et traçable.
Au-delà du déploiement ponctuel, la pratique professionnelle est le CI/CD (Intégration Continue / Déploiement Continu) — automatiser le chemin du code vers la production. L'Intégration Continue (CI) : à chaque modification du code (push sur Git), un pipeline automatisé se déclenche et VÉRIFIE le code — lance les TESTS (PHPUnit, section 4-5), l'analyse de qualité, éventuellement la construction — pour attraper les problèmes tôt. Le Déploiement Continu (CD) : si les vérifications passent, le code est automatiquement DÉPLOYÉ. Des outils comme GitHub Actions (ou GitLab CI…) créent ces pipelines. Les bénéfices : automatisation (plus de déploiement manuel fastidieux et risqué), fiabilité (les tests s'exécutent avant chaque déploiement — rien de cassé ne part en production), rapidité, traçabilité. Quelques essentiels transversaux du déploiement PHP en production. La configuration par environnement : les paramètres et SECRETS (identifiants de base, clés) sont fournis par l'environnement de production, JAMAIS codés en dur ni dans le dépôt Git (variables d'environnement, fichiers .env hors du dépôt). Le HTTPS (indispensable — chiffrer les communications). La configuration de PRODUCTION : NE PAS afficher les erreurs détaillées (les journaliser — elles peuvent divulguer des informations sensibles), activer l'OPcache (performance), optimiser Composer (autoloader optimisé pour la production). Les migrations de base à exécuter au déploiement (si vous utilisez un framework). La gestion des ENVIRONNEMENTS séparés (dev / staging / production). Ce niveau clôt le parcours en connectant tout : vous avez appris le langage, le web, les bases de données, la POO, les frameworks, la sécurité, les tests, l'optimisation, Docker — et vous MENEZ l'application EN PRODUCTION (déploiement, CI/CD). C'est le cycle complet du développeur back-end moderne — de l'idée au code, du code à la production, de façon fiable et professionnelle. Savoir déployer et automatiser (au moins sur un hébergement adapté avec un pipeline de base) transforme votre application « qui marche chez vous » en un service réel, en ligne, fiable — l'aboutissement concret de tout ce que vous avez appris, et ce qui achève de faire de vous un développeur PHP autonome, capable non seulement de créer mais de LIVRER.
Vocabulaire de la section
- Déploiement / hébergement
- Faire tourner l'application PHP sur un serveur accessible sur Internet. Options : hébergement mutualisé (simple, économique), PaaS (simplifié), VPS (contrôle + responsabilités), cloud.
- Git pour déployer
- Déployer via Git (le serveur récupère le code depuis le dépôt) plutôt que de transférer les fichiers à la main (FTP) — plus fiable et traçable.
- CI/CD (GitHub Actions)
- Automatiser code → production : CI (à chaque push, tester/vérifier — PHPUnit), CD (déployer automatiquement si les vérifications passent). GitHub Actions/GitLab CI créent ces pipelines.
- Configuration & secrets
- Paramètres et SECRETS (identifiants base, clés) fournis par l'environnement de production, JAMAIS dans le code/dépôt Git (variables d'environnement, .env hors dépôt).
- Essentiels de production PHP
- HTTPS, erreurs NON affichées (journalisées), OPcache activé, autoloader Composer optimisé, migrations exécutées au déploiement, environnements séparés (dev/staging/prod).
Quels points essentiels ne pas oublier à la mise en PRODUCTION d'une app PHP ?
En pratique — Déployer et automatiser une application PHP
- Choisissez un hébergement adapté (mutualisé pour un petit site, PaaS/VPS pour plus de contrôle) et déployez votre application via Git (pas de FTP manuel).
- Configurez la production : secrets et paramètres via variables d'environnement (.env hors dépôt), HTTPS, erreurs journalisées (pas affichées), OPcache activé.
- Mettez en place un pipeline CI/CD (GitHub Actions) : à chaque push, lancer les tests (PHPUnit) et déployer si tout passe.
- Gérez les migrations de base au déploiement (framework) et des environnements séparés (dev / staging / production).
Points clés à retenir
- DÉPLOYER = faire tourner l'app PHP sur un serveur accessible sur Internet. Options : HÉBERGEMENT MUTUALISÉ (simple, économique), PaaS, VPS (contrôle + responsabilités), cloud. PHP est facile à héberger.
- Déployer via GIT (le serveur récupère le code) plutôt que par FTP manuel (fiable, traçable). CI/CD (GitHub Actions) automatise : CI (tests PHPUnit à chaque push) + CD (déployer si ça passe).
- Configuration & SECRETS : via variables d'environnement (.env HORS dépôt Git), jamais codés en dur. Essentiels prod : HTTPS, erreurs NON affichées (journalisées), OPcache activé, autoloader Composer optimisé, migrations.
- Ce niveau CONNECTE tout : langage → web → bases → POO → frameworks → sécurité → tests → optimisation → Docker → MENER EN PRODUCTION. Savoir LIVRER (déployer + automatiser) achève le développeur PHP autonome.
Questions fréquentes
Comment choisir où et comment héberger une application PHP, surtout quand on débute ?
Le choix de l'hébergement PHP dépend de la TAILLE du projet, du besoin de CONTRÔLE, du budget et de votre niveau — et PHP a l'avantage d'offrir beaucoup d'options, dont des très simples pour débuter. Voici comment décider. Les options, de la plus simple à la plus complexe : (1) Hébergement MUTUALISÉ — le plus simple et économique, idéal pour débuter/petits sites. Vous partagez un serveur avec d'autres sites ; l'hébergeur GÈRE TOUT (PHP, base MySQL, serveur web, maintenance). Vous n'avez qu'à téléverser votre code (souvent via un panneau de contrôle ou Git). Avantages : très SIMPLE (pas d'administration serveur), ÉCONOMIQUE (peu cher), rapide à mettre en place. C'est le point de départ classique pour héberger un site PHP (PHP est massivement supporté par les hébergements mutualisés — un atout de PHP). Inconvénients : peu de CONTRÔLE (configuration limitée, versions de PHP imposées), ressources PARTAGÉES (performance limitée), pas adapté aux grosses applications. POUR : petits sites, sites vitrines, blogs, projets d'apprentissage, applications à faible trafic. C'est souvent le bon choix pour DÉBUTER et pour de nombreux sites. (2) Plateformes PaaS (Platform as a Service). Des plateformes qui simplifient le déploiement (on connecte son dépôt Git, la plateforme construit et gère l'application, souvent avec HTTPS, scaling de base). Certaines sont spécialisées PHP/Laravel. Avantages : simplicité (plus de contrôle qu'un mutualisé, moins de gestion qu'un VPS), déploiement facile. POUR : projets modernes, applications qui veulent un déploiement simplifié sans gérer un serveur. (3) VPS (serveur virtuel privé) — plus de contrôle, plus de responsabilités. Vous louez un serveur virtuel que vous ADMINISTREZ VOUS-MÊME : installer PHP (la version voulue, les extensions), un serveur web (Nginx/Apache), MySQL, configurer, sécuriser, gérer HTTPS (Let's Encrypt), les mises à jour, les sauvegardes. Avantages : CONTRÔLE total, flexibilité (votre configuration exacte), coût raisonnable, formateur (vous apprenez l'administration). Inconvénients : COMPLEXITÉ (vous gérez tout, y compris la sécurité et la maintenance — des responsabilités réelles), courbe d'apprentissage (Linux, administration serveur). POUR : applications qui ont besoin de contrôle, développeurs voulant apprendre l'administration, projets moyens/gros — mais PAS idéal pour un débutant qui veut juste mettre un site en ligne simplement. (4) Cloud (AWS, Google Cloud…). Puissant mais complexe, pour les applications d'envergure et les besoins avancés — surdimensionné et intimidant pour débuter. Le rôle de Git dans le déploiement (important) : quelle que soit l'option, DÉPLOYEZ via GIT (le serveur récupère le code depuis votre dépôt) plutôt que de transférer les fichiers « à la main » par FTP. Le FTP manuel est source d'erreurs (fichiers oubliés, versions incohérentes, écrasements) ; le déploiement via Git est FIABLE (tout le code cohérent) et TRAÇABLE (on sait quelle version est déployée), et permet l'automatisation (CI/CD). Recommandations selon le profil : (1) Vous DÉBUTEZ / petit site / apprentissage → un HÉBERGEMENT MUTUALISÉ (simple, économique, PHP bien supporté) ou une plateforme PaaS simple. Déployez votre site facilement, sans administration. L'important, quand on apprend, est de RÉUSSIR à mettre un site en ligne (vivre le déploiement, la configuration, HTTPS) sans la complexité d'un serveur. C'est le bon point de départ. (2) Vous voulez APPRENDRE l'administration / plus de contrôle → un VPS (formateur : vous apprenez à configurer PHP, un serveur web, MySQL, HTTPS — des compétences utiles), en sachant que c'est plus d'effort. (3) Application d'ENVERGURE / besoins avancés → cloud, mais pas le sujet du débutant. Conseils transversaux : (1) COMMENCEZ SIMPLE (mutualisé/PaaS) — réussir à mettre une application en ligne est l'important, pas maîtriser une infrastructure complexe. (2) Vous POURREZ ÉVOLUER (vers un VPS, le cloud) quand vos besoins/compétences grandiront — les concepts (déploiement, config, HTTPS, Git, CI/CD) se transfèrent. (3) DOCKER (section 5-3) facilite la portabilité entre solutions. (4) Quelle que soit l'option, appliquez les ESSENTIELS : secrets hors du code (variables d'environnement), HTTPS, erreurs non affichées en production, OPcache. (5) Vérifiez que la VERSION de PHP de l'hébergement correspond à celle de votre développement (éviter les surprises). En résumé : le choix se fait sur le compromis simplicité vs contrôle. POUR DÉBUTER, un hébergement MUTUALISÉ (simple, économique, PHP bien supporté — un atout de PHP) ou une plateforme PaaS simple est presque toujours le bon choix — vous mettez votre site en ligne facilement, sans administration. Le VPS (contrôle, formateur, mais responsabilités) et le cloud (puissant, complexe) viennent après, selon vos besoins et compétences. Déployez toujours via GIT (fiable, traçable) plutôt que par FTP manuel. L'important, quand on apprend, est de RÉUSSIR à mener une application en production simplement — un mutualisé/PaaS le permet idéalement. Commencez simple, approfondissez ensuite ; les compétences de déploiement se transfèrent. PHP est facile à héberger (largement supporté, options abordables) — un avantage pour franchir facilement l'étape essentielle : mettre votre travail en ligne, accessible au monde.
Quels sont les points essentiels à ne pas oublier lors de la mise en production d'une application PHP ?
La mise en production a des exigences spécifiques (différentes du développement local) qu'il ne faut pas négliger — les oublier cause des problèmes de sécurité, de performance ou de fiabilité. Voici les points essentiels. (1) Les SECRETS et la CONFIGURATION par environnement. Point CRUCIAL de sécurité : les SECRETS (identifiants de base de données, clés d'API, clés de chiffrement) ne doivent JAMAIS être codés en dur dans le code ni versionnés dans Git. Utilisez des VARIABLES D'ENVIRONNEMENT ou des fichiers de configuration (comme .env) HORS du dépôt Git. Et la configuration DIFFÈRE entre environnements (dev vs production : identifiants de base différents, réglages différents) — gérez-la par environnement. Un secret exposé (dans un dépôt public, dans le code) est une faille grave et fréquente. (2) HTTPS (obligatoire). En production, activez HTTPS (chiffrement des communications) — indispensable pour la sécurité (sans lui, mots de passe, données, sessions circulent en clair, interceptables). Des certificats gratuits (Let's Encrypt) existent. HTTPS n'est pas optionnel pour une application réelle. (3) NE PAS afficher les ERREURS détaillées en production. En développement, on AFFICHE les erreurs (pour déboguer). En PRODUCTION, il faut les DÉSACTIVER de l'affichage et les JOURNALISER (logs) à la place. Pourquoi : les erreurs détaillées peuvent DIVULGUER des informations sensibles (chemins de fichiers, structure de la base, détails techniques) exploitables par un attaquant, et donnent une mauvaise expérience utilisateur. Affichez un message d'erreur générique à l'utilisateur, journalisez les détails pour vous. C'est un réglage de configuration PHP important à faire pour la production. (4) PERFORMANCE : activer l'OPcache et optimiser Composer. En production, activez l'OPCACHE (met en cache le bytecode compilé — gain de performance majeur, section 5-2). Optimisez l'autoloader Composer pour la production (composer install --optimize-autoloader --no-dev ou équivalent : autoloader optimisé, sans les dépendances de développement). Ces optimisations rendent l'application nettement plus rapide en production. (5) Les MIGRATIONS de base de données. Si vous utilisez un framework avec des migrations (Laravel, Symfony), exécutez les migrations au déploiement pour mettre à jour la structure de la base en production (créer/modifier les tables selon votre code). À gérer dans le processus de déploiement. (6) Les DÉPENDANCES. Installez les dépendances de production (via Composer) sur le serveur (ou déployez-les), sans les dépendances de développement. Assurez-vous que les extensions PHP nécessaires sont présentes. (7) Les ENVIRONNEMENTS séparés. Idéalement, ayez des environnements séparés : DÉVELOPPEMENT (local), STAGING/préproduction (pour tester avant la vraie production, dans des conditions proches), PRODUCTION. Cela permet de tester avant de mettre en ligne pour de vrai. (8) Les DROITS et permissions de fichiers. Configurez correctement les permissions (les dossiers d'upload, de cache, de logs doivent être accessibles en écriture ; le reste protégé) — ni trop permissif (sécurité), ni trop restrictif (l'app doit fonctionner). (9) Les SAUVEGARDES. Mettez en place des sauvegardes régulières (base de données, fichiers) — une perte de données en production serait catastrophique. (10) Le point d'entrée / la structure. En production, exposez seulement ce qui doit l'être (idéalement, seul un dossier public est accessible ; le code, la config, les secrets sont hors de la racine web accessible). Les frameworks structurent cela (un dossier public/ exposé, le reste protégé). (11) Le MONITORING et les LOGS. Surveillez l'application (logs d'erreurs, performance) pour détecter les problèmes en production. (12) Garder PHP et les dépendances À JOUR (sécurité — les failles connues sont corrigées). (13) Le CI/CD pour automatiser et fiabiliser le déploiement (tests avant déploiement, processus reproductible). La différence dev / production (à intégrer) : votre configuration locale (erreurs affichées, OPcache parfois désactivé, dépendances de dev, données de test) DIFFÈRE de la production (erreurs journalisées, OPcache activé, dépendances de prod optimisées, vraies données, sécurité renforcée). Ne déployez pas votre configuration de développement telle quelle — adaptez à la production. En résumé, les essentiels de la mise en production PHP : (1) SECRETS et config par environnement (jamais dans le code/dépôt — variables d'environnement) ; (2) HTTPS (obligatoire) ; (3) erreurs NON affichées mais journalisées (sécurité) ; (4) performance (OPcache activé, autoloader Composer optimisé) ; (5) migrations de base exécutées ; (6) dépendances de production ; (7) environnements séparés (dev/staging/prod) ; (8) permissions correctes ; (9) sauvegardes ; (10) structure sécurisée (seul le public exposé) ; (11) monitoring/logs ; (12) PHP/dépendances à jour ; (13) CI/CD pour automatiser. Ces points (surtout secrets, HTTPS, erreurs non affichées, performance) distinguent une mise en production PROFESSIONNELLE et sûre d'un déploiement bâclé (risqué et lent). Ne négligez pas la différence dev/production : adaptez la configuration. Bien mener une application en production (avec ces essentiels) est l'aboutissement du développement — ce qui transforme votre travail en un service réel, fiable et sûr, accessible au monde. C'est la dernière étape qui achève de faire de vous un développeur PHP autonome, capable non seulement de créer mais de LIVRER professionnellement.