5.4 · Déploiement & CI/CD (Git, serveur, hébergement)

Niveau 5 · Niveau pro & déploiement

5.4Déploiement & CI/CD (Git, serveur, hébergement)

Objectif : mener votre application PHP en production (hébergement, déploiement via Git, config/secrets, HTTPS) et automatiser la livraison (CI/CD) — le cycle complet, de l'idée au service en ligne fiable.
Temps estimé : 11 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Déployer = mettre en ligne : faire tourner l'app sur un serveur accessible — mutualisé simple pour débuter, PaaS/VPS pour plus de contrôle.
  • CI/CD = livraison auto : à chaque push, tester (PHPUnit) puis déployer si tout passe — fini le FTP manuel risqué.
  • Secrets hors du code : config et secrets en variables d'environnement (.env hors dépôt) — jamais dans Git.

Mini-cas filé — Riad met en ligne à Constantine

La boutique conteneurisée de Riad tourne bien — mais seulement sur les postes de l'équipe à Constantine. Il la déploie : dépôt Git connecté, variables d'environnement renseignées sur l'hébergement, HTTPS actif, erreurs journalisées au lieu d'affichées. Puis il ajoute un pipeline : à chaque push, les tests PHPUnit tournent, et le déploiement suit seulement s'ils passent. Dernier épisode des cas 5.1-5.3 — Riad livre un vrai service en ligne.

Dernier épisode des cas 5.1-5.3 — Riad boucle conception, performance et Docker avec la mise en production.

1. Héberger et déployer via Git

Le déploiement fait tourner l'application sur un serveur accessible sur Internet (au lieu de localhost). PHP a l'avantage d'être très répandu et facile à héberger : l'hébergement mutualisé (le plus simple et économique — l'hébergeur gère tout — idéal pour débuter et les petits sites, avec peu de contrôle), les plateformes PaaS (déploiement simplifié depuis le dépôt Git), le VPS (plus de contrôle mais plus de responsabilités : installer PHP, Nginx/Apache, MySQL, sécuriser, HTTPS), le cloud pour l'envergure. Rôle central de Git : on ne transfère plus les fichiers « à la main » par FTP (source d'erreurs) — le serveur récupère le code depuis le dépôt, plus fiable et traçable. Riad commence par un mutualisé pour la vitrine, et vise un VPS quand la boutique grandit.

Recommandation : mutualisé pour mettre ses projets en ligne vite, PaaS pour un déploiement simplifié moderne, VPS pour apprendre l'administration ou gagner en contrôle.

2. CI/CD et essentiels de production

Le CI/CD automatise le chemin code → production. L'intégration continue : à chaque push, un pipeline lance les tests (PHPUnit) et l'analyse qualité pour attraper les problèmes tôt. Le déploiement continu : si tout passe, le code est déployé automatiquement. GitHub Actions (ou GitLab CI) crée ces pipelines. Bénéfices : automatisation (plus de gestes manuels fastidieux), fiabilité (rien de cassé ne part en production), rapidité, traçabilité. Essentiels de production PHP : secrets et config par environnement (fichier .env hors dépôt), HTTPS indispensable, erreurs non affichées (journalisées — elles peuvent divulguer des informations sensibles), OPcache activé, autoloader Composer optimisé, migrations exécutées au déploiement, environnements séparés (dev/staging/prod). Riad écrit son premier pipeline : installer, tester, déployer si vert — c'est l'aboutissement, non seulement créer mais livrer.

Même simple, un pipeline change tout : les tests ne sont plus jamais « oubliés » avant un déploiement.

3. Choisir sans se tromper

Le compromis fondamental : simplicité contre contrôle. Mutualisé : simplicité extrême pour débuter, peu de contrôle. PaaS : simplicité moderne sans gérer de serveur. VPS : contrôle total et flexibilité, mais vous gérez tout (sécurité, mises à jour, sauvegardes). Pour un prototype, un déploiement simple suffit ; dès qu'un projet est sérieux, déployé régulièrement ou en équipe, même un CI/CD simple apporte une vraie valeur. Riad compare les offres des hébergeurs (formules et limites évoluant souvent, il vérifie la documentation actuelle au moment de choisir) et fait valider le choix d'infrastructure sensible par sa DSI avant d'exposer des données réelles, sauvegardes de la base comprises.

Dans tous les cas, les essentiels restent : secrets en variables d'environnement, HTTPS, erreurs journalisées, OPcache, sauvegardes, environnements séparés.

Erreur d'interprétation fréquente : « Déployer, c'est envoyer mes fichiers par FTP — et les mots de passe peuvent rester dans le code, c'est plus simple ». Non. Le FTP manuel, c'est le déploiement à l'aveugle : fastidieux, source d'erreurs, tests oubliés, version incertaine. Et des secrets dans le code ou dans Git, c'est une faille grave : identifiants et clés vivent dans l'environnement (.env hors dépôt), jamais versionnés. Déployer via Git + automatiser (CI/CD) + externaliser (variables d'environnement), c'est la base.
Du code à la production Automatiser la livraison Push Git Une modificationdu codeCI Pipeline :tests PHPUnitCD Déploiement autosi tout passeEn ligne Hébergement +HTTPS + sauvegardes
Automatiser la livraison
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Push : Riad pousse son code à Constantine. 2) CI : le pipeline installe les dépendances Composer et lance PHPUnit — tout échec bloque la suite. 3) CD : si tout passe, déploiement automatique vers l'hébergement, migrations comprises. 4) En ligne : l'app tourne avec HTTPS, secrets en variables d'environnement et sauvegardes. Leçon : automatiser la livraison pour ne plus jamais déployer à l'aveugle.

🔎 Exemple concret — Le pipeline de Riad

À chaque push : installer, tester, déployer si vert.

# GitHub Actions (.github/workflows/ci.yml)
# à chaque push :
#   composer install → vendor/bin/phpunit → déployer si vert
# secrets & config : variables d'environnement (.env hors dépôt)
# production : HTTPS + OPcache + erreurs journalisées

Lecture : le pipeline est la porte : rien de cassé ne passe.

Leçon : les secrets vivent dans l'environnement, jamais dans le dépôt.

Vocabulaire de la section

Déploiement
Faire tourner l'app sur un serveur accessible sur Internet.

Exemple simple : La boutique de Riad quitte localhost pour une adresse publique.

Ce que ce n'est pas : envoyer des fichiers par FTP à la main.

Réflexe : mon app est-elle accessible hors de mon poste ?

Hébergement mutualisé
Serveur partagé où l'hébergeur gère PHP, la base et le serveur web.

Exemple simple : Riad y met la vitrine en ligne vite et à petit budget.

Ce que ce n'est pas : un serveur qu'on administre soi-même.

Réflexe : ai-je besoin de contrôle, ou de simplicité ?

VPS
Serveur virtuel loué qu'on administre soi-même.

Exemple simple : Riad y installerait PHP, MySQL et le HTTPS lui-même.

Ce que ce n'est pas : un hébergement où tout est géré.

Réflexe : suis-je prêt à assumer sécurité et sauvegardes ?

CI/CD
Pipeline qui teste à chaque push et déploie si tout passe.

Exemple simple : Le push de Riad déclenche PHPUnit puis la mise en ligne auto.

Ce que ce n'est pas : un déploiement manuel à coups de FTP.

Réflexe : un push peut-il partir en prod sans tests ?

Variables d'environnement
Config et secrets fournis par l'environnement, hors du code.

Exemple simple : Le mot de passe base de Riad vit dans le .env, jamais dans Git.

Ce que ce n'est pas : un secret écrit en dur dans le code.

Réflexe : un secret traîne-t-il dans mon dépôt ?

En pratique — Déployer et automatiser une application PHP

  1. 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).
  2. 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é.
  3. Mettez en place un pipeline CI/CD (GitHub Actions) : à chaque push, lancer les tests (PHPUnit) et déployer si tout passe.
  4. Gérez les migrations de base au déploiement (framework) et des environnements séparés (dev / staging / production).
Vous menez votre application PHP en production (hébergement, déploiement via Git, config/secrets, HTTPS) et automatisez la livraison (CI/CD) — le cycle complet, de l'idée au service en ligne fiable.

Script prêt à dire — annoncer la mise en ligne

« Notre boutique est prête à sortir de localhost : je la déploie via Git — secrets en variables d'environnement, HTTPS actif, erreurs journalisées. J'ajoute un pipeline simple : PHPUnit à chaque push, déploiement seulement si tout passe. Avant d'exposer des données réelles, je fais valider le choix d'infrastructure et les sauvegardes par la DSI. »

À dire au responsable pour faire valider la mise en ligne et le circuit DSI sur les données sensibles.

Modèle copier-coller — pipeline CI PHP générique

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
      - run: composer install --no-progress
      - run: vendor/bin/phpunit

Solo / petit budget

Riad seul : un mutualisé + un pipeline qui teste à chaque push suffit — pas de serveur à administrer.

TPE / équipe réduite

Environnements dev et prod séparés, secrets hors dépôt : chaque push testé avant mise en ligne.

PME à Constantine

Riad fait valider l'hébergeur, les accès et les sauvegardes par la DSI à Constantine avant d'exposer des données clients réelles.

Équipe qui démarre

Binôme : l'un écrit le pipeline, l'autre vérifie secrets, HTTPS et sauvegardes ; revue avant le premier déploiement auto.

Prudence : Secrets : ne mettez jamais identifiants, mots de passe ni clés dans le code, le Dockerfile, l'image ou le dépôt Git — utilisez les variables d'environnement (.env hors dépôt). Sauvegardes : planifiez et testez la restauration de la base avant la mise en ligne — un déploiement sans sauvegarde vérifiée est une prise de risque. Données sensibles : faites valider le choix d'infrastructure et les accès par la DSI (et un juriste si besoin) avant d'exposer des données réelles.

✓ Bonnes pratiques

  • Débuter avec un hébergement simple (mutualisé/PaaS) : en ligne vite, HTTPS géré.
  • Mettre config et secrets en variables d'environnement (.env hors dépôt, jamais dans Git).
  • Automatiser tests + déploiement avec un pipeline CI/CD (GitHub Actions).

✗ Pièges fréquents

  • Mettre des secrets dans le code ou le dépôt Git.
  • Déployer sans HTTPS ni sauvegardes vérifiées.
  • Déployer manuellement par FTP, à l'aveugle (sans tests automatisés en amont).

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.

Défi 48h — appliquez demain

Déployez 1 app (dépôt Git + HTTPS) avec ses secrets en variables d'environnement : un push déclenche-t-il les tests PHPUnit ?

Checklist sortie de section
  • Je peux expliquer CI vs CD en une phrase.
  • Mon app est en ligne (HTTPS) sans secret dans Git.
  • Je sais quand passer du mutualisé au VPS.
Auto-évaluation 1-5 : mon déploiement est-il reproductible et tracé ?aucun secret ne traîne-t-il dans mon code ou mon historique Git ?

Questions fréquentes

Comment choisir où et comment héberger une application PHP, surtout quand on débute ?

Selon la taille du projet, le besoin de contrôle et votre niveau. L'hébergement mutualisé est le plus simple et économique — l'hébergeur gère tout — idéal pour débuter et les petits sites (PHP y est massivement supporté, un atout). Les plateformes PaaS simplifient le déploiement depuis Git, sans gérer de serveur. Le VPS donne plus de contrôle (versions, config) mais plus de responsabilités (installation, sécurité, HTTPS, sauvegardes) — formateur, plus exigeant. Recommandation : commencez mutualisé ou PaaS pour mettre vos projets en ligne ; passez au VPS pour apprendre l'administration. Comparez les offres au moment de choisir (elles évoluent) et faites valider par la DSI avant d'exposer des données sensibles.

Quels sont les points essentiels à ne pas oublier lors de la mise en production d'une application PHP ?

La check-list : secrets par environnement (.env hors dépôt, jamais dans Git) ; HTTPS obligatoire ; erreurs non affichées (journalisées — les détails techniques divulgués sont exploitables) ; OPcache activé et autoloader Composer optimisé (performance) ; migrations exécutées au déploiement ; environnements séparés (dev/staging/prod) ; sauvegardes planifiées et restauration testée. Chacun de ces points oubliés coûte cher : faille de sécurité, lenteur sans raison, ou perte de données. Le pipeline CI/CD verrouille la porte : rien de non testé ne part en production.

Vérifiez votre compréhension

Que fait un pipeline CI/CD ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 5Questions inédites et durcies pour valider vos acquis