Installer un stack LAMP sur Ubuntu 24.04 et 22.04 : Apache2, PHP 8, MySQL et phpMyAdmin

Publié le Mis à jour le 8 min de lecture

Apache2, PHP 8, MySQL ou MariaDB et phpMyAdmin sur Ubuntu 24.04 LTS ou 22.04 LTS : toute l'installation pas à pas, sécurisation comprise.

Vous souhaitez installer Apache2, PHP 8, MySQL et phpMyAdmin, autrement dit un stack LAMP complet, sur votre serveur Ubuntu 24.04 LTS ou Ubuntu 22.04 LTS ? Ce guide vous accompagne pas à pas dans toute la mise en place, du serveur web jusqu'à un accès sécurisé à la base de données.

Un avantage par rapport à Debian : Ubuntu propose les deux serveurs de bases de données dans ses dépôts, aussi bien mysql-server que mariadb-server. Vous avez donc le choix. Debian, lui, ne livre que MariaDB. Ce guide présente les deux variantes, toutes les autres étapes sont identiques.

Prérequis

Il vous faut un accès SSH avec les droits root (ou un utilisateur disposant des droits sudo) sur un Ubuntu récent. Nous recommandons Ubuntu 24.04 LTS « Noble Numbat » et Ubuntu 22.04 LTS « Jammy Jellyfish ». Ubuntu 20.04 LTS a atteint la fin du support standard en mai 2025 et ne devrait plus être utilisé en production.

Commencez par actualiser la liste des paquets et par installer les mises à jour disponibles :

apt update && apt upgrade -y

Installer Apache2 et les paquets de base

Installez le serveur web en même temps que 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 software-properties-common 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à.

Si un pare-feu est actif sur le serveur, ouvrez les ports du serveur web :

ufw allow "Apache Full"

Installer PHP 8

La version de PHP que vous obtenez depuis les dépôts dépend de votre distribution. Une commande avec un numéro de version figé comme apt install php8.3 échoue donc sur Ubuntu 22.04 LTS. Ce tableau indique la version fournie par chaque édition (état en juillet 2026) :

DistributionVersion de PHP fournie par les dépôts
Ubuntu 24.04 LTSPHP 8.3
Ubuntu 22.04 LTSPHP 8.1

Utilisez donc les métapaquets sans numéro de version. Ils installent automatiquement la version adaptée à votre distribution et fonctionnent de la même façon sur toutes les éditions d'Ubuntu :

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 qu'un nom comportant un numéro de version comme php8.3-fpm n'existe que sous Ubuntu 24.04 LTS :

apt install -y php-fpm

Pour savoir quelle version a réellement été installée :

php -v

Si vous avez besoin d'une version que votre édition d'Ubuntu ne fournit pas (PHP 8.4 par exemple), ajoutez le dépôt PHP bien connu d'Ondřej Surý :

add-apt-repository ppa:ondrej/php

apt update

add-apt-repository enregistre automatiquement la clé de signature dans un fichier keyring dédié et l'associe précisément à ce dépôt. La commande apt-key, autrefois très répandue, est obsolète et ne devrait plus être utilisée, car une clé installée de cette manière 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 comportant un numéro de version deviennent disponibles pour toutes les éditions d'Ubuntu. Installez ensuite la version de PHP souhaitée ainsi que 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 sur le serveur, indiquez celle qu'Apache2 doit utiliser :

a2dismod php8.3

a2enmod php8.4

systemctl restart apache2

La commande php -v vous indique quelle version est active en ligne de commande.

Installer et sécuriser le serveur de bases de données

Ubuntu vous propose les deux serveurs de bases de données courants, dans ces versions :

PaquetUbuntu 24.04 LTSUbuntu 22.04 LTS
mysql-serverMySQL 8.0.46MySQL 8.0.46
mariadb-serverdisponibledisponible

Pour MySQL, c'est-à-dire l'original signé Oracle :

apt install -y mysql-server mysql-client

mysql_secure_installation

Pour MariaDB, le serveur issu de MySQL, qui parle le même protocole et le même langage de requête :

apt install -y mariadb-server mariadb-client

mysql_secure_installation

N'installez qu'une seule des deux variantes, car toutes deux occupent le même port. Pour la suite de ce guide, votre choix ne change rien.

Le script mysql_secure_installation pose plusieurs questions. Les versions récentes de MariaDB demandent d'abord s'il faut basculer sur 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 en outre un mot de passe de base de données solide.

Vérifiez ensuite que le service tourne. Le nom de l'unité systemd dépend du serveur que vous avez choisi :

systemctl status mysql

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 récentes d'Ubuntu 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 voie que décrivent 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, qui sert à chiffrer les données de session dans le cookie. Générez une telle 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 appropriés :

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 nom d'utilisateur personnel 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 le stack 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 votre serveur de bases de données travaillent correctement ensemble.

Vous pouvez vérifier 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

Recommandations de sécurité pour la production

Un stack LAMP fraîchement installé n'est pas encore sécurisé. Vous devriez compléter les points suivants :

  • phpMyAdmin est une cible d'attaque prisée. Limitez l'accès à votre propre adresse IP en plaçant Require ip 203.0.113.10 dans le bloc Directory, à la place d'une autorisation ouverte.
  • Mettez en place HTTPS pour 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 upgrade ne s'en charge pas automatiquement.
  • Créez des sauvegardes régulières de vos bases de données et stockez-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 et redémarrez le serveur web avec systemctl restart apache2.

phpMyAdmin affiche « 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 saisissez-la.

« Access denied for user » lors de la connexion à phpMyAdmin : après mysql_secure_installation, l'utilisateur de base de données root utilise en règle générale l'authentification unix_socket et ne peut donc pas se connecter via l'interface web. Utilisez l'utilisateur que vous avez créé en complément.

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 de l'erreur.

Questions fréquentes

Faut-il installer MySQL ou MariaDB sous Ubuntu ?
Ubuntu propose les deux : mysql-server fournit MySQL 8.0.46, mariadb-server le serveur MariaDB qui en est issu. Pour ce guide, le choix ne change rien. N'installez qu'une seule des deux variantes, car elles occupent le même port. Debian, lui, n'a pas de paquet mysql-server, il ne reste que MariaDB.
Quelle version de PHP Ubuntu fournit-il ?
Ubuntu 24.04 LTS livre PHP 8.3, Ubuntu 22.04 LTS livre PHP 8.1. Utilisez donc les métapaquets sans numéro de version, c'est-à-dire php ou php-fpm. Une commande avec un numéro figé comme apt install php8.3 échoue sur Ubuntu 22.04 LTS.
Comment obtenir une version de PHP plus récente que celle d'Ubuntu ?
Ajoutez le dépôt PHP bien connu avec add-apt-repository ppa:ondrej/php. La commande enregistre automatiquement la clé de signature dans un fichier keyring dédié et l'associe précisément à ce dépôt. Ce n'est qu'ensuite que des noms de paquets comme php8.4-fpm deviennent disponibles.
Pourquoi le navigateur télécharge-t-il le fichier PHP au lieu de l'exécuter ?
Dans ce cas, le module PHP n'est pas actif dans Apache2. Activez-le avec a2enmod suivi du nom de votre version de PHP, par exemple a2enmod php8.4, puis redémarrez Apache2 avec systemctl restart apache2.
Pourquoi ne puis-je pas me connecter à phpMyAdmin en tant que root ?
Après l'exécution de mysql_secure_installation, l'utilisateur de base de données root utilise en règle générale l'authentification unix_socket et ne peut donc pas se connecter via l'interface web. Créez pour cela un utilisateur de base de données dédié.

LAMP Apache2 PHP MariaDB MySQL phpMyAdmin Ubuntu 24.04 Ubuntu