Installer un serveur web sur Debian 13 : la stack LAMP (Linux Apache MariaDB PHP)
Sommaire
I. Présentation
Le stack LAMP (Linux, Apache, MariaDB, PHP) reste la référence pour héberger des sites web dynamiques et des applications PHP. Ce tutoriel explique comment mettre en place un serveur Web sur Debian 13, afin de pouvoir y héberger l'application de votre choix : WordPress, Joomla, Drupal, Nextcloud, etc.
Pour rappel, un serveur LAMP s'appuie sur 4 composants : L pour Linux, c'est-à-dire le système d'exploitation (Debian, dans notre cas), A pour Apache, c'est-à-dire le serveur Web, M pour MySQL/MariaDB, c'est-à-dire le système de gestion de bases de données, et P pour PHP, c'est-à-dire le moteur de scripts.
Pour suivre ce tutoriel, vous avez besoin d'une machine sous Debian, ou une distribution basée sur Debian (Ubuntu, par exemple). J'utilise une machine sous Debian 13, mais vous pouvez tenter les mêmes manipulations sur Debian 11 et Debian 12, la seule difficulté éventuelle étant pour récupérer la dernière version de PHP.
- Pour installer un serveur LAMP sur WSL (Linux sur Windows), suivez ce tutoriel : Tutoriel - LAMP sur WSL
Version originale de l'article : 18 octobre 2021.
II. Serveur LAMP sous Debian 13
A. Installer Apache sous Debian 13
Nous commençons par mettre à jour le cache des paquets :
sudo apt update
Ensuite, nous installons le paquet apache2 afin d'obtenir la dernière version d'Apache 2.4.
sudo apt install -y apache2
Pour qu'Apache démarre automatiquement au démarrage de la machine, saisissez la commande ci-dessous (même si normalement c'est déjà le cas) :
sudo systemctl enable apache2
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
Suite à l'installation du paquet, le serveur Apache démarre directement. D'ailleurs, nous devrions pouvoir accéder à la page par défaut du serveur Web Apache2. Pour cela, il suffit de récupérer l'adresse IP du serveur :
ip address
Puis, à l'aide d'une machine équipée d'un navigateur, nous pouvons accéder à notre serveur Apache :
http://192.168.100.120

Pour visualiser la version d'Apache que vous venez d'installer, c'est tout simple, exécutez la commande suivante :
sudo apache2ctl -v
Server version: Apache/2.4.65 (Debian)
Server built: 2025-07-29T17:52:31
Avant d'aller plus loin, je vous recommande d'activer quelques modules d'Apache qui sont indispensables, notamment pour faire tourner un site Internet. Commençons par le module utilisé pour la réécriture d'URL :
sudo a2enmod rewrite
L'occasion de découvrir la commande a2enmod qui sert à activer un module. À l'inverse, la commande a2dismod sert à désactiver un module.
Activons quatre autres modules :
deflatepour la gestion de la compression, notamment en gzip, pour utiliser la mise en cache des pages sur votre siteheadersafin de pouvoir agir sur les en-têtes HTTPsslpour gérer les certificats SSL et donc l'utilisation du protocole HTTPShttp2pour gérer les connexions HTTP/2
sudo a2enmod deflate headers ssl http2
Après avoir activé ou désactivé un module, ou modifié la configuration d'Apache, il faut redémarrer le service apache2 :
sudo systemctl restart apache2
B. L'emplacement de la configuration Apache2
Où se situent la configuration d'Apache et des sites dans tout ça ?
Le fichier de configuration d'Apache 2 est le suivant :
/etc/apache2/apache2.conf
Dans un premier temps, il peut servir à configurer Apache pour ne pas afficher le numéro de version sur les pages d'erreurs. Même si cette option est gérable aussi dans le fichier /etc/apache2/conf-enabled/security.conf, c'est au choix. Le fichier de configuration de PHP, quant à lui, sera dans un répertoire différent.
Tandis que pour déclarer les hôtes virtuels, en anglais "Virtual hosts", ce qui correspond aux différents sites hébergés par Apache (oui, un serveur Apache peut gérer plusieurs sites indépendamment), il faudra s'intéresser à ces deux dossiers :
- Dossier qui contient les fichiers de configuration des sites disponibles :
/etc/apache2/sites-available/ - Dossier qui contient les fichiers de configuration (via un lien symbolique), des sites actifs :
/etc/apache2/sites-enabled
Par défaut, nous accédons à la page d'accueil d'Apache grâce à l'hôte virtuel déclaré dans le fichier /etc/apache2/sites-enabled/000-default.conf, qui écoute sur le port 80 (HTTP) et dont la racine est le dossier /var/www/html.
Je vous invite à lire mon tutoriel dédié à la configuration d'un Virtual Host pour en savoir plus :
Enfin, si vous souhaitez mettre en place l'authentification basique sur votre site, vous avez besoin de l'outil htpasswd inclus dans le paquet apache2-utils (comme d'autres outils). Vous pouvez l'installer à tout moment d'une simple commande :
sudo apt-get install -y apache2-utils
C. Installer PHP sous Debian 13
Pour utiliser PHP avec Apache2, il y a deux méthodes : utiliser PHP-FPM (PHP FastCGI Process Manager) ou le module mod_php pour Apache. Pour optimiser l'utilisation des ressources du serveur, il est recommandé d'utiliser PHP-FPM plutôt que le module pour Apache connu sous le nom de libapache2-mod-php. Avec PHP-FPM, vous pourrez gérer plus de connexions simultanées tout en utilisant moins de ressources.
Dans tous les cas, PHP va agir sur le serveur pour traiter les scripts intégrés aux pages .php.
Si vous souhaitez utiliser le module PHP pour Apache2 (sans PHP-FPM), installez ces deux paquets :
sudo apt install -y php libapache2-mod-php
Sinon, si vous souhaitez utiliser PHP-FPM (recommandé), suivez les étapes ci-dessous. Ici, nous partons sur l'installation de PHP 8.4.
Commencez par installer ce paquet et ses dépendances :
sudo apt install php8.4-fpm
Puis, activez les modules nécessaires à son fonctionnement, ainsi que son fichier de configuration :
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.4-fpm
sudo systemctl restart apache2
Actuellement, PHP 8.4 est la version de PHP la plus récente. Vous pouvez vérifier le support des versions de PHP sur cette page du site officiel. Au-delà du support, veillez à tenir compte de la compatibilité de l'application que vous souhaitez installer.
Suite à cette installation, je vous invite à vérifier quelle version de PHP vous venez d'installer. Exécutez la commande suivante :
php -v
PHP 8.4.11 (cli) (built: Aug 3 2025 07:32:21) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.4.11, Copyright (c) Zend Technologies
with Zend OPcache v8.4.11, Copyright (c), by Zend Technologies
Pour que PHP-FPM traite les scripts PHP au niveau d'Apache, une instruction spécifique doit être intégrée à la configuration de chaque VirtualHost. À titre d'exemple, éditez le fichier correspondant au site par défaut :
sudo nano /etc/apache2/sites-enabled/000-default.conf
Puis, ajoutez ce bout de code dans le bloc <VirtualHost> (avant la fermeture, à la fin, par exemple).
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>

Relancez Apache2 :
sudo systemctl restart apache2
Avant d'aller plus loin, nous allons installer quelques paquets supplémentaires liés à PHP sur notre serveur. Ceci est bien souvent indispensable et les modules à installer peuvent varier d'une application à une autre. Par exemple, le paquet php8.4-mysql permet la connexion à une base de données MySQL depuis un script PHP. Voici comment effectuer l'installation de php8.4-curl, php8.4-gd, php8.4-mcrypt, php8.4-mysql et php8.4-zip :
sudo apt install php8.4-{mysql,curl,gd,zip,mcrypt}
Maintenant, pour nous assurer que notre moteur de script PHP est bien actif, nous allons créer un fichier phpinfo.php (ou un autre nom) à la racine de notre site Web :
sudo nano /var/www/html/phpinfo.php
Dans ce fichier, indiquez le code suivant :
<?php phpinfo(); ?>
Elle sera accessible à partir de cette adresse :
http://<ip-du-serveur>/phpinfo.php

Cette page donne énormément d'informations sur toute la configuration de PHP et de notre serveur Apache. Il est fortement recommandé de la mettre en place seulement quand c'est nécessaire. Autrement dit, vous ne devez pas laisser cette page accessible par n'importe qui.
- En savoir plus sur la configuration de PHP-FPM
D. Installer MySQL/MariaDB sous Debian 13
MariaDB est un fork communautaire de MySQL et il présente l'avantage d'être open source et sous licence GPL, à la différence de MySQL qui est un logiciel propriétaire de chez Oracle, mais qui reste gratuit malgré tout. Il y a un excellent suivi pour MariaDB et c'est réellement un système très performant, vous pouvez miser sur ce composant sans aucun problème !
Pour installer MariaDB sous Debian 13, voici la commande à exécuter :
sudo apt-get install -y mariadb-server
Activez le démarrage automatique de votre instance (ce qui va aussi la démarrer dès maintenant) :
sudo systemctl enable --now mariadb
Synchronizing state of mariadb.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable mariadb
Suite à l'installation, je vous invite à exécuter le script mariadb-secure-installation afin de sécuriser un minimum votre installation de MariaDB.
sudo mariadb-secure-installation
En résumé, vous allez pouvoir définir un mot de passe pour le compte root de MariaDB, empêcher les connexions distantes sur votre instance à l'aide du compte root, empêcher les connexions anonymes et supprimer la base de test.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n ... skipping. You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] Y New password: ************** Re-enter new password: ************** Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
Voilà, l'interrogatoire est terminé.
Pour obtenir le numéro de version de MariaDB, on peut utiliser cette commande :
mariadb -V
mariadb from 11.8.3-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper
Ou celle-ci en consultant le gestionnaire de paquets Aptitude (apt) :
apt policy mariadb-server
mariadb-server:
Installé : 1:11.8.3-0+deb13u1
Candidat : 1:11.8.3-0+deb13u1
Table de version :
*** 1:11.8.3-0+deb13u1 500
500 http://ftp.fr.debian.org/debian trixie/main amd64 Packages
100 /var/lib/dpkg/status
Il est à noter que même si l'on a installé MariaDB, on peut utiliser la commande mysql, notamment pour afficher le numéro de version avec mysql -V ou ouvrir une console MySQL/MariaDB.
Avant de passer à la suite, vérifiez que vous parvenez à vous connecter à votre instance MariaDB :
sudo mariadb -u root -p
Saisissez le mot de passe root de MariaDB. Ensuite, vous avez accès à la console MariaDB / MySQL. Vous pouvez saisir vos requêtes SQL ici. Par exemple, pour lister les bases de données de votre instance :
show databases;

Pour sortir de la console, saisissez la commande suivante :
exit
Il faudra revenir dans cette console lorsque vous allez déployer votre application sur votre serveur LAMP, par exemple WordPress, NextCloud, etc.... Afin de créer une base de données dédiée et un utilisateur dédié à cette application. Une alternative consiste à déployer PhpMyAdmin sur son serveur dans le but d'administrer MariaDB à partir d'une interface Web.
Après un changement de configuration de MariaDB, vous devez redémarrer le service :
systemctl restart mariadb
III. Conclusion
Voilà, votre serveur LAMP sous Debian 13 est installé ! Pour la suite de la configuration, cela dépend de l'application que vous souhaitez déployer, ou peut-être même qu'il s'agit d'un projet que vous avez vous-même développé.
Généralement, on commence par créer un nouvel hôte virtuel sur Apache pour accueillir les sources d'installation de l'application. Ensuite, on crée une base de données dédiée à cette application, avec son propre utilisateur (qui aura les droits seulement sur cette base), et on lance l'installation.
Si vous désirez installer WordPress sur votre serveur, vous pouvez suivre ce tutoriel (Installation de WordPress pas à pas) et cette vidéo :
Je vous recommande aussi de sécuriser votre serveur Web en activant et en configurant le pare-feu Linux. Par exemple, vous pouvez utiliser UFW en suivant ce tutoriel :
Quelle version de PHP est utilisée sous Debian 13 ?
Debian 13 inclut PHP 8.4 dans ses dépôts officiels. En novembre 2025, il s'agit de la version majeure la plus récente.
Peut-on installer une version antérieure de PHP ?
Oui, mais cela nécessite l’ajout d’un dépôt supplémentaire sur la machine afin de pouvoir installer la version de votre choix (ce dépôt fonctionne bien). De cette façon, vous pouvez utiliser Debian 13 afin d'y installer PHP 5.6, PHP 7.4 ou une autre version PHP 7.X.
Dois-je configurer PHP-FPM avec Apache sous Debian 13 ?
Il est recommandé de prioriser l'utilisation de PHP-FPM en comparaison du module Apache2. Néanmoins, ce n’est pas obligatoire et le module libapache2-mod-php8.4 peut suffire, notamment sur un site web où il y a peu de trafic.
Peut-on utiliser MySQL à la place de MariaDB ?
Oui, un serveur LAMP repose sur l'utilisation de MariaDB Server ou MySQL Server pour la gestion des bases de données. L'installation de MySQL est légèrement différente, notamment parce que les paquets ne sont pas nommés de la même façon. MariaDB présente l'intérêt d'être disponible facilement dans les dépôts de Debian 13 et cette solution utilise une licence plus permissive.
Comment configurer un VirtualHost Apache2 ?
Pour chaque nouveau site web que vous souhaitez héberger sur votre serveur Web Apache2, créez un nouveau fichier de configuration sous /etc/apache2/sites-available/. Quand la configuration est prête, vous pouvez activer le site avec la commande a2ensite suivie du nom du fichier, puis redémarrer Apache2. Mais, attention, car s'il y a une erreur de syntaxe, le serveur Apache2 refusera de démarrer, ce qui peut avoir un impact sur les autres sites.


Bonsoir,
Merci beaucoup pour vos tutos qui sont complets et très bien expliqués.
Bonne soirée à vous,
Bonjour,
Merci pour le tuto..
dans le même cas de figure (claire et net), je rechercher un tuto pour installer et configurer un serveur FTP sur Dedian..
Merci d’avance..
Epoc
Bonjour,
Juste un grand merci pour le tuto, très clair et l’essentiel est présent.
Gilou974
Merci beaucoup 🙂
merci beaucoup a vous ce tuto m’a vraiment aidé
Il y a un erreur ici:
mariadb-secure-installation
->
mysql_secure_installation
Hello, merci pour ton retour. En fait, « mariadb-secure-installation » fonctionne mais parfois c’est « mysql_secure_installation ». J’ai déjà rencontré les deux cas…
Bonjour,
Merci pour ton tuto 🙂
Je l’ai suivi a la lettre mais je rencontre une erreur lors de l’installation wordpress
La voici :
Votre installation PHP semble manquer l’extension MySQL requise par WordPress.
Veuillez vérifier que l’ mysqliextension PHP est installée et activée.
Si vous n’êtes pas sûr de la signification de ces termes, vous devriez probablement contacter votre hébergeur. Si vous avez encore besoin d’aide, vous pouvez toujours visiter les forums de support de WordPress .
Peux-tu me dire si tu penses savoir d’ou cela peut venir
Super intéressant le cours. Merci pour le partage.
Je suis intéressé pour le prochain cours en ce qui concerne le passage en https du site sur wordpress.
Ne fonctionne pas pour apache
IP adress NOK