Installer une pile LAMP sur Debian 13 et Debian 12 : Apache2, PHP 8, MariaDB et phpMyAdmin
Apache2, PHP 8, MariaDB et phpMyAdmin sur Debian 13 ou Debian 12 : toute la mise en place pas à pas, sécurisation et dépannage compris.
Vous souhaitez installer Apache2, PHP 8, une base de données MySQL et phpMyAdmin, autrement dit une pile LAMP complète, sur votre serveur Debian 13 (Trixie) ou Debian 12 (Bookworm) ? Ce guide vous accompagne pas à pas dans toute la mise en place, du serveur web jusqu'à l'accès sécurisé à la base de données.
Important au sujet du serveur de base de données : Debian ne contient aucun paquet mysql-server, et ce dans aucune version actuelle. Sous Debian, vous installez toujours MariaDB. MariaDB est issu de MySQL, parle le même protocole et le même langage de requête, et des outils comme phpMyAdmin ou l'extension PHP php-mysql fonctionnent avec lui sans la moindre adaptation. Quand ce guide parle de bases de données MySQL, c'est donc MariaDB qui tourne en dessous.
Prérequis
Il vous faut un accès SSH avec les droits root (ou un utilisateur disposant de sudo) sur un Debian récent. Nous recommandons Debian 13 « Trixie » et Debian 12 « Bookworm ». Debian 10 a atteint sa fin de support en juin 2024 et ne reçoit plus de mises à jour de sécurité régulières : il ne convient donc plus à un usage en production.
Commencez par actualiser la liste des paquets, puis installez les mises à jour disponibles :
apt update
apt upgrade -y
Installer Apache2 et les paquets de base
Installez le serveur web avec les paquets utilitaires dont vous aurez besoin dans les étapes suivantes :
apt install -y nano curl wget unzip ca-certificates apt-transport-https lsb-release gnupg apache2
Ouvrez ensuite http://<IP-de-votre-serveur>/ dans votre navigateur. Si la page par défaut d'Apache2 s'affiche, le serveur web fonctionne déjà.
Installer PHP 8
La version de PHP que vous obtenez depuis les dépôts dépend de votre distribution. Une commande comportant un numéro de version figé comme apt install php8.4 échoue donc sur Debian 12, qui ne propose que PHP 8.2. Ce tableau récapitule la version livrée par chaque distribution (état en juillet 2026) :
| Distribution | Version de PHP dans les dépôts |
|---|---|
| Debian 13 | PHP 8.4 |
| Debian 12 | PHP 8.2 |
| Debian 11 | PHP 7.4 |
Utilisez donc les métapaquets sans numéro de version. Ils tirent automatiquement la version qui correspond à votre distribution et se comportent de la même façon sur tous les Debian :
apt install -y php php-cli php-common php-curl php-gd php-intl php-mbstring php-mysql php-opcache php-readline php-xml php-zip php-bz2 libapache2-mod-php
Si vous préférez faire tourner PHP via FPM plutôt que par le module Apache, le principe reste le même. Là encore, le métapaquet mène au but de façon fiable, alors que les noms versionnés comme php8.4-fpm n'existent que sur Debian 13 :
apt install -y php-fpm
Pour savoir quelle version a réellement été installée :
php -v
S'il vous faut une version que votre édition de Debian ne fournit pas (par exemple PHP 8.4 sur Debian 12), ajoutez le dépôt PHP d'Ondřej Surý. La clé de signature est alors installée sous la forme d'un paquet keyring dédié, puis rattachée à ce seul dépôt dans la ligne sources grâce à signed-by= :
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
dpkg -i /tmp/debsuryorg-archive-keyring.deb
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update
L'ancienne méthode par apt-key add est dépréciée depuis Debian 11 et ne doit plus être utilisée : une clé enregistrée de cette façon serait valable pour l'ensemble des dépôts du système.
Ce n'est qu'avec ce dépôt que les noms de paquets versionnés deviennent disponibles sur toutes les éditions de Debian. Vous pouvez ensuite installer la version de PHP souhaitée avec les extensions habituelles :
apt install -y php8.4 php8.4-cli php8.4-common php8.4-curl php8.4-gd php8.4-intl php8.4-mbstring php8.4-mysql php8.4-opcache php8.4-readline php8.4-xml php8.4-zip php8.4-bz2 libapache2-mod-php8.4
Si plusieurs versions de PHP cohabitent ensuite, indiquez celle qu'Apache2 doit utiliser :
a2dismod php8.2
a2enmod php8.4
systemctl restart apache2
La commande php -v vous indique quelle version est active en ligne de commande.
Installer et sécuriser MariaDB comme serveur de base de données
Comme indiqué en introduction, il n'existe pas de paquet mysql-server sous Debian. Le serveur de base de données s'appelle ici MariaDB, dans la version suivante selon votre Debian :
| Distribution | Serveur de base de données dans les dépôts |
|---|---|
| Debian 13 | MariaDB 11.8 |
| Debian 12 | MariaDB 10.11 |
| Debian 11 | MariaDB 10.5 |
Installez le serveur, puis lancez immédiatement la procédure de sécurisation :
apt install -y mariadb-server mariadb-client
mysql_secure_installation
Le script pose plusieurs questions. Les versions récentes de MariaDB demandent d'abord si vous voulez passer à l'authentification unix_socket. Cette option est judicieuse, car l'utilisateur de base de données root ne peut alors se connecter qu'en tant qu'utilisateur système root. Répondez y à toutes les autres questions (supprimer les utilisateurs anonymes, interdire la connexion distante pour root, supprimer la base de test, recharger les privilèges). Définissez également un mot de passe de base de données robuste.
Vérifiez ensuite que le service tourne :
systemctl status mariadb
Installer phpMyAdmin
Pour phpMyAdmin, vous avez deux possibilités. Le paquet phpmyadmin figure dans les dépôts de toutes les versions actuelles de Debian et s'installe en une seule étape :
apt install phpmyadmin -y
C'est pratique, mais cette version accuse souvent un retard sur celle publiée par l'éditeur. Si vous voulez toujours la dernière mouture, téléchargez plutôt phpMyAdmin directement. C'est exactement la méthode décrite dans les étapes suivantes :
cd /usr/share && wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip && unzip phpmyadmin.zip && rm phpmyadmin.zip && mv phpMyAdmin-*-all-languages phpmyadmin && chmod -R 0755 phpmyadmin
Créez ensuite le fichier de configuration :
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
phpMyAdmin a besoin d'une valeur aléatoire comme blowfish_secret : elle sert à chiffrer les données de session stockées dans le cookie. Générez cette valeur :
openssl rand -base64 32
Reportez-la ensuite dans le fichier de configuration :
nano /usr/share/phpmyadmin/config.inc.php
La ligne concernée est la suivante :
$cfg['blowfish_secret'] = 'SAISIR_ICI_LA_VALEUR_GENEREE';
Relier phpMyAdmin à Apache2
Créez un fichier de configuration Apache2 dédié à phpMyAdmin :
nano /etc/apache2/conf-available/phpmyadmin.conf
Le contenu de phpmyadmin.conf :
#Configuration Apache2 pour PHPMyAdmin
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
</Directory>
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Activez la configuration, rechargez Apache2 et créez le répertoire temporaire avec les droits qui conviennent :
a2enconf phpmyadmin && systemctl reload apache2 && mkdir -p /usr/share/phpmyadmin/tmp/ && chown -R www-data:www-data /usr/share/phpmyadmin/tmp/
Créer un utilisateur de base de données
Connectez-vous à la base de données en tant qu'utilisateur système root :
mysql -u root
Créez maintenant votre propre utilisateur de base de données. N'utilisez pas « root », « admin », « user » ou « username » comme nom, mais un identifiant qui vous est propre et un mot de passe long et aléatoire :
#IMPORTANT ! REMPLACEZ USER ET PASSWORD PAR VOS PROPRES IDENTIFIANTS.
CREATE USER 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'USER'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Pour chaque application, créez en plus des utilisateurs aux droits restreints, qui n'ont accès qu'à leur propre base de données :
CREATE DATABASE monappli;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON monappli.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
Vous quittez la console de base de données à tout moment avec :
exit
Tester la pile LAMP
Ouvrez phpMyAdmin à l'adresse http://<IP-de-votre-serveur>/phpmyadmin et connectez-vous avec l'utilisateur que vous venez de créer. Si la connexion aboutit, Apache2, PHP et MariaDB travaillent correctement ensemble.
Vous pouvez vérifier en plus l'intégration de PHP avec un court fichier de test :
echo "<?php phpinfo();" > /var/www/html/info.php
Après avoir consulté http://<IP-de-votre-serveur>/info.php, supprimez impérativement ce fichier, car il révèle des détails sur la configuration de votre serveur :
rm /var/www/html/info.php
Conseils de sécurité pour la production
Une pile LAMP fraîchement installée n'est pas encore sécurisée. Complétez-la sur les points suivants :
- phpMyAdmin est une cible d'attaque très prisée. Restreignez l'accès à votre propre adresse IP en utilisant
Require ip 203.0.113.10dans le bloc Directory, au lieu d'une autorisation ouverte à tous. - Mettez en place HTTPS afin que les mots de passe ne transitent pas en clair. Sans chiffrement, vos identifiants sont lisibles sur le trajet vers le serveur.
- Gardez phpMyAdmin à jour. Comme vous l'avez installé manuellement,
apt upgradene s'en occupe pas automatiquement. - Créez régulièrement des sauvegardes de vos bases de données et conservez-les en dehors du serveur.
Erreurs fréquentes et solutions
Le navigateur télécharge le fichier PHP au lieu de l'exécuter : le module PHP n'est pas actif dans Apache2. Activez-le avec a2enmod php8.4, puis redémarrez le serveur web avec systemctl restart apache2.
phpMyAdmin signale « The configuration file now needs a secret passphrase » : la valeur de blowfish_secret manque dans config.inc.php. Générez-la avec openssl rand -base64 32 et reportez-la dans le fichier.
« Access denied for user » lors de la connexion à phpMyAdmin : après mysql_secure_installation, l'utilisateur de base de données root utilise en général l'authentification unix_socket et ne peut donc pas se connecter via l'interface web. Utilisez l'utilisateur que vous avez créé en plus.
Apache2 ne démarre plus après une modification de la configuration : vérifiez celle-ci avec apachectl configtest, la sortie indique le fichier et la ligne où se trouve l'erreur.
Questions fréquentes
Pourquoi Debian installe-t-il MariaDB au lieu de MySQL ?
Quelle version de PHP Debian fournit-il ?
Comment obtenir une version de PHP plus récente que celle de Debian ?
Pourquoi le navigateur télécharge-t-il le fichier PHP au lieu de l'exécuter ?
Pourquoi ne puis-je pas me connecter à phpMyAdmin en tant que root ?
2023-2026 KernelHost GmbH. Tous droits réservés. Ce guide est protégé par le droit d'auteur. Sa republication sur d'autres sites web, même partielle ou sous une forme modifiée, n'est pas autorisée sans notre accord écrit. Les citations accompagnées de la source et d'un lien sont expressément les bienvenues.

