Installer un stack LAMP sur Ubuntu 24.04 et 22.04 : Apache2, PHP 8, MySQL et phpMyAdmin
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) :
| Distribution | Version de PHP fournie par les dépôts |
|---|---|
| Ubuntu 24.04 LTS | PHP 8.3 |
| Ubuntu 22.04 LTS | PHP 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 :
| Paquet | Ubuntu 24.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| mysql-server | MySQL 8.0.46 | MySQL 8.0.46 |
| mariadb-server | disponible | disponible |
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.10dans 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 upgradene 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 ?
Quelle version de PHP Ubuntu fournit-il ?
Comment obtenir une version de PHP plus récente que celle d'Ubuntu ?
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 ?
2022-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.

