À Nous la ScienceCulture & éducation scientifique Nous écrire

Univers & matière

Espace & astronomiePhysique & quantiqueTerre & géosciencesMathématiques

Le vivant

Biologie & génétiqueSanté & médecineCerveau & psychologie

Planète & tech

Climat & environnementÉnergieIA & numériqueTechnologies & innovation

Sciences & société

Histoire des sciencesSciences & sociétéÀ proposContact Nous écrire
IA & numérique

Tuto installation serveur LAMP sur Debian 13

13 juillet 202616 min de lecture

Tuto installation serveur LAMP sur Debian 13

Un serveur LAMP sur Debian 13 s’installe en préparant le système, puis en configurant Apache, MariaDB et PHP 8.4 avec PHP-FPM. La pile obtenue permet d’héberger des applications PHP reliées à une base de données, à condition de vérifier chaque service avant de passer au suivant et de ne pas exposer de fichiers de test en production.

Ce tutoriel d’installation d’un serveur LAMP cible Debian 13 et utilise les paquets officiels : Apache 2, MariaDB et PHP 8.4-FPM. La procédure suit l’ordre réel des dépendances : système, serveur web, base de données, moteur PHP, VirtualHost, puis validation par des requêtes locales.

Checklist d’installation LAMP sur Debian 13

Cochez chaque étape avant de mettre le serveur en service.

Éléments de la liste :

  • Préparer Debian 13 — Utiliser une installation fraîche ou un environnement de test avec accès sudo.
  • Prévoir un retour arrière — Créer une sauvegarde ou un instantané avant toute modification sur un serveur existant.
  • Vérifier les accès nécessaires — Confirmer l’accès réseau aux dépôts APT et l’accès SSH si la machine est distante.
  • Installer Apache, MariaDB et PHP 8.4-FPM — Utiliser les paquets officiels prévus pour Debian 13.
  • Sécuriser MariaDB immédiatement — Lancer le script de sécurisation afin de retirer les réglages de démonstration.
  • Configurer PHP-FPM avec Apache — Utiliser PHP-FPM plutôt que mod_php pour séparer l’exécution PHP du serveur web.
  • Configurer le VirtualHost — Ajouter la configuration nécessaire avant de publier une application ou un domaine.
  • Valider les trois services — Vérifier qu’Apache répond, que PHP s’exécute et que MariaDB accepte une connexion locale.

Cette checklist guide une installation Debian 13. Vérifiez les configurations de sécurité avant toute exposition sur Internet.


En bref

🧩 LAMP signifie Linux, Apache, MariaDB et PHP. Debian 13 fournit PHP 8.4 dans ses dépôts officiels, selon les informations de version publiées lors de sa disponibilité en 2025.

🔒 MariaDB doit être sécurisée immédiatement après son installation. Le script dédié retire notamment des réglages de démonstration qui ne conviennent pas à un serveur exposé.

⚙️ PHP-FPM sépare l’exécution PHP du processus Apache. Cette méthode évite d’utiliser mod_php et facilite le contrôle du service PHP.

Le test final repose sur trois contrôles distincts : Apache répond, PHP s’exécute et MariaDB accepte une connexion locale.

Quels prérequis faut-il réunir avant d’installer un serveur LAMP ?

Un serveur LAMP est une pile logicielle associant Linux pour le système, Apache pour les requêtes HTTP, MariaDB pour les données relationnelles et PHP pour l’exécution des applications web. Le tutoriel utilise une machine Debian 13 fraîchement installée, avec un accès administrateur via sudo et un accès réseau pour télécharger les paquets.

La procédure ci-dessous vise Debian 13 avec les dépôts APT officiels et PHP 8.4-FPM. Elle ne doit pas être copiée telle quelle sur Ubuntu, Debian 12 ou une distribution dérivée : les noms de paquets, les versions et certains fichiers de configuration peuvent différer.

  • Une installation neuve ou une machine de test sous Debian 13.
  • Un compte membre du groupe sudo.
  • Un nom de domaine seulement si le serveur doit être publié sur Internet.
  • Un accès SSH si la machine est distante, sans connexion administrateur directe exposée inutilement.
  • Une sauvegarde ou un instantané de machine virtuelle avant toute modification sur un environnement existant.

Un serveur web fonctionnel ne devient pas automatiquement un serveur prêt pour Internet : l’exposition réseau, les comptes de base de données et les fichiers de test doivent être traités séparément.

Comment installer un serveur LAMP sur Debian 13 : les étapes

La séquence suivante installe Apache, MariaDB et PHP 8.4-FPM, puis configure un site PHP local. Chaque étape produit une ressource vérifiée immédiatement après sa création : cette méthode évite de chercher une erreur PHP alors que le service Apache ou le socket PHP-FPM n’est pas démarré.

Exécutez les commandes dans l’ordre, sans installer MySQL en parallèle de MariaDB sur la même machine. MariaDB est le choix retenu ici ; MySQL reste une alternative réelle, mais son installation et son administration doivent suivre sa propre documentation.

Schéma de fonctionnement d’un serveur LAMP avec Apache, PHP-FPM et MariaDB sur Debian 13
Le navigateur contacte Apache ; Apache transmet les scripts PHP à PHP-FPM, qui peut interroger MariaDB via les extensions PHP adaptées.
  1. Mettre Debian 13 à jour. Cette étape applique les mises à jour disponibles avant l’installation des composants de la pile.

    sudo apt update && sudo apt upgrade -y
    sudo reboot

    Après le redémarrage, reconnectez-vous puis contrôlez la version de la distribution.

    cat /etc/debian_version
    uname -r

    Le premier résultat doit afficher une version Debian 13.x. Le second affiche le noyau actuellement démarré.

  2. Installer Apache et activer son démarrage automatique. Apache écoute habituellement sur le port HTTP 80 ; le service doit être actif avant de configurer un site.

    sudo apt install -y apache2
    sudo systemctl enable --now apache2
    sudo systemctl status apache2 --no-pager

    Le résultat attendu contient active (running). Depuis la machine elle-même, vérifiez aussi la réponse HTTP :

    curl -I http://127.0.0.1

    Une ligne commençant par HTTP/1.1 200 ou HTTP/1.1 403 confirme qu’Apache répond localement. Une réponse 403 peut être normale avant la création d’un contenu dans le répertoire configuré.

  3. Installer MariaDB et lancer sa sécurisation. MariaDB fournit le moteur de base de données de ce tutoriel ; le paquet serveur installe également le service système nécessaire.

    sudo apt install -y mariadb-server
    sudo systemctl enable --now mariadb
    sudo systemctl status mariadb --no-pager

    Le service doit être active (running). Lancez ensuite l’assistant de sécurisation fourni par MariaDB :

    sudo mysql_secure_installation

    Répondez aux questions en lisant précisément le texte affiché. Refusez les comptes anonymes et la base de test lorsque l’assistant les propose. N’inscrivez pas un mot de passe dans l’historique du terminal, dans une commande collée ou dans un fichier de configuration lisible par d’autres utilisateurs.

    sudo mariadb -e "SELECT VERSION();"

    La commande doit retourner une version MariaDB. Cette vérification teste une connexion locale avec les droits administratifs système, sans créer de mot de passe en clair.

  4. Installer PHP 8.4-FPM et les extensions PHP courantes. L’extension php8.4-mysql permet aux scripts PHP de communiquer avec MariaDB, tandis que curl, gd et zip couvrent des besoins fréquents d’applications web.

    sudo apt install -y php8.4-fpm php8.4-mysql php8.4-cli php8.4-curl php8.4-gd php8.4-zip
    sudo systemctl enable --now php8.4-fpm
    php -v
    sudo systemctl status php8.4-fpm --no-pager

    La commande php -v doit identifier PHP 8.4. Le statut de php8.4-fpm doit indiquer active (running).

  5. Relier Apache à PHP-FPM. Apache doit activer les modules nécessaires pour transmettre les scripts PHP au service FPM via sa configuration fournie par Debian.

    sudo a2enmod proxy_fcgi setenvif
    sudo a2enconf php8.4-fpm
    sudo systemctl reload apache2
    sudo apachectl configtest

    Le dernier contrôle doit retourner Syntax OK. Une configuration Apache ne doit jamais être rechargée sans ce test : une erreur de syntaxe peut rendre le service indisponible au prochain redémarrage.

  6. Créer un répertoire web et un VirtualHost dédié. Le site de démonstration sera servi depuis /var/www/lamp-demo/public, avec des fichiers détenus par root et lisibles par le serveur web ainsi que par les utilisateurs locaux autorisés par les permissions du système.

    sudo install -d -o root -g root -m 0755 /var/www/lamp-demo/public
    sudo tee /var/www/lamp-demo/public/index.php > /dev/null <<'PHP'
    <?php
    declare(strict_types=1);
    
    echo '<h1>Serveur LAMP opérationnel</h1>';
    echo '<p>Apache transmet ce script à PHP-FPM.</p>';
    PHP
    sudo chown root:root /var/www/lamp-demo/public/index.php
    sudo chmod 0644 /var/www/lamp-demo/public/index.php

    Créez ensuite le fichier VirtualHost complet. Le nom local lamp-demo.local sera utilisé uniquement pour le test depuis la machine serveur.

    sudo tee /etc/apache2/sites-available/lamp-demo.conf > /dev/null <<'APACHE'
    <VirtualHost *:80>
        ServerName lamp-demo.local
        DocumentRoot /var/www/lamp-demo/public
    
        <Directory /var/www/lamp-demo/public>
            Options -Indexes +FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/lamp-demo-error.log
        CustomLog ${APACHE_LOG_DIR}/lamp-demo-access.log combined
    </VirtualHost>
    APACHE
    sudo a2dissite 000-default.conf
    sudo a2ensite lamp-demo.conf
    sudo apachectl configtest
    sudo systemctl reload apache2

    Le résultat attendu est Syntax OK. Le paramètre Options -Indexes empêche l’affichage automatique du contenu d’un dossier lorsqu’aucun fichier d’index n’est présent.

  7. Déclarer le nom local et tester PHP. Le fichier /etc/hosts associe un nom local à l’adresse de boucle ; cette étape ne remplace pas une configuration DNS publique.

    echo '127.0.0.1 lamp-demo.local' | sudo tee -a /etc/hosts
    curl -i http://lamp-demo.local

    La réponse doit contenir HTTP/1.1 200 OK et le texte « Serveur LAMP opérationnel ». Le fichier de démonstration ne révèle aucune information détaillée sur PHP.

Le fichier phpinfo() est utile pour diagnostiquer une machine de test, mais il expose la configuration PHP et ne doit pas rester accessible sur un serveur de production.

Pourquoi utiliser PHP-FPM plutôt que mod_php avec Apache ?

PHP-FPM est un gestionnaire de processus PHP qui exécute les scripts hors des processus Apache. Apache envoie les fichiers PHP au socket de PHP-FPM ; cette séparation permet de contrôler le service PHP indépendamment et correspond à la configuration retenue dans ce tutoriel Debian 13.

PHP-FPM constitue ici une option adaptée pour séparer le traitement PHP du serveur HTTP. Cette architecture ne remplace pas une surveillance des ressources, mais elle rend les responsabilités plus lisibles lors d’un diagnostic : Apache gère HTTP, PHP-FPM traite PHP et MariaDB stocke les données.

Option Fonctionnement Cas d’usage Limite à connaître
PHP-FPM Apache transmet les scripts à un service PHP distinct. Installation Debian 13 de ce tutoriel et hébergement d’applications PHP. La configuration Apache et le service FPM doivent être actifs ensemble.
mod_php PHP est chargé directement dans Apache. Anciennes configurations ou cas simples à maintenir. Ne doit pas être mélangé sans raison avec PHP-FPM sur le même VirtualHost.

Comment vérifier que la pile LAMP fonctionne réellement ?

Un test LAMP fiable distingue les composants au lieu de se limiter à l’affichage d’une page web. Apache peut répondre alors que PHP-FPM est arrêté, et PHP peut fonctionner alors que l’extension MariaDB manque. Chaque commande suivante vérifie une couche précise.

La validation complète exige une réponse HTTP, une exécution PHP et une connexion locale à MariaDB. Un seul test positif ne prouve pas que toutes les briques de la pile sont disponibles.

  • Apache : curl -I http://lamp-demo.local doit renvoyer un statut HTTP 200.
  • PHP : curl http://lamp-demo.local doit afficher le titre généré par index.php.
  • PHP-FPM : sudo systemctl is-active php8.4-fpm doit retourner active.
  • MariaDB : sudo mariadb -e "SELECT 1 AS test;" doit afficher une colonne test contenant la valeur 1.
  • Configuration Apache : sudo apachectl -S doit lister le VirtualHost lamp-demo.local.

Pour connaître les modules PHP actifs sans publier d’informations dans une page web, utilisez la commande suivante :

php -m | grep -E 'mysqli|pdo_mysql'

Le résultat doit afficher mysqli et/ou pdo_mysql. Ces modules sont fournis par le paquet php8.4-mysql installé plus haut.

Quelles protections ajouter après l’installation du serveur LAMP ?

Une pile LAMP fraîchement installée constitue une base technique, pas une configuration de production complète. Les décisions de sécurité dépendent notamment de l’exposition publique, du nom de domaine, des applications hébergées et de la politique de sauvegarde, mais plusieurs contrôles restent nécessaires dans tous les cas.

Le premier objectif est de réduire les services accessibles et de supprimer les outils de test avant la publication du site. N’ouvrez pas MariaDB vers Internet pour une application installée sur le même serveur : l’application PHP doit en principe joindre la base localement.

  • Contrôlez les ports réellement ouverts avec sudo ss -ltnp.
  • Conservez MariaDB en écoute locale tant qu’un besoin documenté ne justifie pas un accès distant.
  • Utilisez HTTPS lorsqu’un nom de domaine pointe vers le serveur ; Let’s Encrypt fournit des certificats TLS gratuits, sous réserve de satisfaire sa procédure de validation.
  • Créez un compte MariaDB distinct pour chaque application, avec seulement les privilèges nécessaires à sa base.
  • Planifiez des sauvegardes chiffrées et testez la restauration, pas seulement la création des archives.

UFW peut servir d’interface simplifiée pour un pare-feu sur les systèmes où il est installé et administré par votre politique d’exploitation. Avant toute règle, vérifiez les règles existantes et évitez de vous couper l’accès SSH sur un serveur distant.

sudo ufw status verbose

Une configuration de pare-feu doit être validée depuis une seconde session SSH ouverte, afin de conserver une possibilité de retour arrière si une règle bloque l’accès administratif.

Serveur LAMP, LEMP ou Docker Compose : quelle approche choisir ?

LAMP, LEMP et Docker Compose répondent à des usages différents. LAMP désigne ici une installation directe sur Debian avec Apache, MariaDB et PHP ; LEMP remplace Apache par Nginx ; Docker Compose lance les composants dans des conteneurs définis par un fichier de configuration.

Pour apprendre l’administration d’un serveur PHP classique sur Debian 13, LAMP installé par APT reste le choix le plus direct. Pour reproduire exactement une pile entre plusieurs postes, Docker Compose peut être pertinent ; pour une architecture Nginx déjà maîtrisée, LEMP évite d’ajouter Apache sans raison.

Approche Serveur HTTP À privilégier si… Point de vigilance
LAMP Apache Vous voulez une pile PHP classique directement administrée sur Debian. Les mises à jour et réglages sont gérés sur l’hôte.
LEMP Nginx Votre infrastructure utilise déjà Nginx et PHP-FPM. Les fichiers de configuration Nginx ne sont pas interchangeables avec ceux d’Apache.
Docker Compose Variable selon l’image Vous devez reproduire une même pile entre développement et test. Les volumes, réseaux et mises à jour d’images ajoutent une couche d’administration.

Erreurs fréquentes lors d’une installation LAMP

Les échecs les plus courants viennent rarement d’une commande Apache isolée. Ils résultent plutôt d’un service non démarré, d’un VirtualHost non activé, d’une extension PHP oubliée ou d’une configuration mélangée entre plusieurs méthodes d’exécution PHP.

Le bon diagnostic part du composant qui échoue, puis remonte vers sa configuration et ses journaux. Les journaux Apache et l’état systemd donnent généralement une information plus exploitable qu’un redémarrage répété sans contrôle.

Symptôme Cause probable Contrôle Correction prudente
Erreur 502 ou 503 sur un script PHP PHP-FPM est arrêté ou Apache ne charge pas sa configuration. systemctl status php8.4-fpm Activez PHP-FPM, vérifiez a2enconf php8.4-fpm, puis testez Apache.
Le navigateur affiche le code PHP Apache ne transmet pas le fichier à PHP-FPM. apachectl -M | grep proxy_fcgi Activez les modules et la configuration PHP-FPM indiqués dans l’étape 5.
Erreur « Class mysqli not found » L’extension PHP MariaDB/MySQL manque. php -m | grep mysqli Installez php8.4-mysql, puis redémarrez PHP-FPM.
Apache ne redémarre plus Une erreur existe dans un VirtualHost ou un module. sudo apachectl configtest Corrigez l’erreur signalée avant tout rechargement du service.
Le nom lamp-demo.local ne répond pas L’entrée locale ou le VirtualHost manque. getent hosts lamp-demo.local Vérifiez /etc/hosts, le fichier du site et sudo apachectl -S.

À retenir

  • 🧱 Installez Apache, MariaDB et PHP-FPM dans cet ordre pour simplifier les vérifications.
  • 🔍 Contrôlez chaque service avec systemd avant de configurer le composant suivant.
  • 🔒 Sécurisez MariaDB et ne stockez jamais un mot de passe dans une commande copiée.
  • ⚙️ Utilisez PHP 8.4-FPM avec Apache plutôt que de mélanger plusieurs méthodes PHP.
  • 🧪 Supprimez les fichiers de diagnostic avant toute mise en production publique.

Questions fréquentes sur un serveur LAMP

MariaDB est-elle obligatoire pour un serveur LAMP ?

MariaDB n’est pas la seule base possible. MySQL constitue une alternative connue, mais ce tutoriel choisit MariaDB afin de conserver une méthode unique, cohérente avec les paquets et les commandes Debian utilisés ici.

Pourquoi PHP ne fonctionne-t-il pas alors qu’Apache affiche la page HTML ?

Apache peut servir un fichier HTML sans que PHP-FPM soit actif. Vérifiez le statut de php8.4-fpm, l’activation de proxy_fcgi et la configuration php8.4-fpm dans Apache.

Faut-il créer un fichier phpinfo() pour tester PHP ?

Un fichier phpinfo() peut aider à diagnostiquer une installation de test, mais il révèle de nombreux détails de configuration. Le fichier index.php minimal proposé dans ce tutoriel vérifie déjà l’exécution PHP sans exposer ces informations.

Peut-on rendre ce serveur accessible avec un nom de domaine ?

Un nom de domaine nécessite une zone DNS pointant vers l’adresse publique du serveur et une configuration Apache avec ce nom dans ServerName. L’activation de HTTPS doit ensuite être réalisée avec un certificat valide, par exemple via Let’s Encrypt.

Cette procédure convient-elle à une mise en production ?

Cette procédure fournit une base contrôlable, mais une mise en production demande aussi des sauvegardes testées, des mises à jour planifiées, une politique de comptes, des journaux surveillés et une configuration TLS. Rejouez l’installation sur une machine vierge avant de l’appliquer à un serveur exposé.

Avertissement : ce tutoriel cible exclusivement Debian 13, Apache 2, MariaDB issue des dépôts Debian et PHP 8.4-FPM. Rejouez l’intégralité de la procédure sur une machine vierge ou une machine virtuelle de test avant toute mise en production, puis adaptez les accès réseau, le DNS, TLS et les sauvegardes à votre environnement réel.

Version PDF à téléchargerEmportez l'essentiel de cet article au format PDF.

Télécharger le PDF

Laisser un commentaire