05/12/2025

Services

Installer un serveur web sur Debian 13 : la stack LAMP (Linux Apache MariaDB PHP)

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.

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
Apache en ligne, sous Debian 11
Apache en ligne, sous Debian 13

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 :

  • deflate pour la gestion de la compression, notamment en gzip, pour utiliser la mise en cache des pages sur votre site
  • headers afin de pouvoir agir sur les en-têtes HTTP
  • ssl pour gérer les certificats SSL et donc l'utilisation du protocole HTTPS
  • http2 pour 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.

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;
Première connexion à MariaDB en ligne de commande
Première connexion à MariaDB en ligne de commande

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.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

10 commentaires sur “Installer un serveur web sur Debian 13 : la stack LAMP (Linux Apache MariaDB PHP)

  • Bonsoir,

    Merci beaucoup pour vos tutos qui sont complets et très bien expliqués.

    Bonne soirée à vous,

    Répondre
  • 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

    Répondre
  • Bonjour,

    Juste un grand merci pour le tuto, très clair et l’essentiel est présent.

    Gilou974

    Répondre
  • merci beaucoup a vous ce tuto m’a vraiment aidé

    Répondre
  • Il y a un erreur ici:
    mariadb-secure-installation
    ->
    mysql_secure_installation

    Répondre
    • 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…

      Répondre
  • 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

    Répondre
  • 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.

    Répondre
  • Ne fonctionne pas pour apache

    IP adress NOK

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.