À Nous la ScienceCulture & éducation scientifique Nous écrire

Univers & matière

Espace & astronomiePhysique & quantiqueTerre & géosciencesMathématiques

Le vivant

Biologie & génétiqueSanté & médecineCerveau & psychologie

Planète & tech

Climat & environnementÉnergieIA & numériqueTechnologies & innovation

Sciences & société

Histoire des sciencesSciences & sociétéÀ proposContact Nous écrire
IA & numérique

Installer un serveur LAMP sur Ubuntu pour héberger des applications PHP

6 juillet 202619 min de lecture

Installer un serveur LAMP sur Ubuntu pour héberger des applications PHP

Pour installer un serveur LAMP sur Ubuntu 24.04, mettez d’abord le système à jour, puis installez Apache 2, MySQL Server et PHP 8.3 avec ses extensions. Vérifiez chaque service avec systemctl, créez un utilisateur MySQL dédié à l’application et testez PHP dans le navigateur avant toute mise en ligne.

Ce tutoriel cible Ubuntu 24.04 amd64, avec Apache 2.4, PHP 8.3 et MySQL 8.0. L’objectif est d’obtenir une pile LAMP fonctionnelle pour servir une application PHP, sans ouvrir inutilement la base de données ni laisser une page de diagnostic publique.

Checklist de mise en service LAMP

Validez chaque étape avant d’héberger votre application PHP.

Éléments de la liste :

  • Mettre Ubuntu à jour — Actualisez les paquets et installez les mises à jour disponibles.
  • Installer et tester Apache — Vérifiez que le service est actif et que sa page d’accueil s’affiche.
  • Installer et sécuriser MySQL — Supprimez les accès inutiles et désactivez les comptes anonymes proposés.
  • Créer un compte MySQL dédié — Créez une base et un utilisateur avec les seuls privilèges nécessaires.
  • Installer PHP et ses extensions — Vérifiez la version de PHP et son exécution par Apache.
  • Supprimer les fichiers de diagnostic — Retirez info.php et les fichiers de test après validation.
  • Tester la connexion PHP à MySQL — Contrôlez la connexion avec l’utilisateur dédié, puis retirez les identifiants de test.
  • Préparer la mise en ligne — Limitez les ports ouverts, activez HTTPS et testez la restauration des sauvegardes.

Cette checklist ne remplace pas un audit de sécurité. Testez les changements sur votre environnement et évitez d’exposer MySQL inutilement.


En bref

🧩 Une pile LAMP réunit Linux, Apache, MySQL et PHP pour exécuter des sites et applications web PHP.

⚙️ Sur Ubuntu 24.04, la séquence retenue utilise Apache 2.4, PHP 8.3 et MySQL 8.0.

🔒 Le point de sécurité central consiste à créer un compte MySQL dédié, à limiter le pare-feu à HTTP/HTTPS et à supprimer immédiatement info.php après le test.

Qu’est-ce qu’une pile LAMP et à quoi sert-elle ?

Une pile LAMP est un environnement serveur qui associe le système Linux, le serveur web Apache, le moteur de base de données MySQL et le langage PHP. Apache reçoit la requête HTTP, PHP exécute le code de l’application et MySQL conserve les données quand l’application en a besoin.

Le mécanisme important est la séparation des rôles : Apache sert le web, PHP traite la logique et MySQL stocke les données. Cette distinction aide à diagnostiquer une panne : une page inaccessible relève souvent d’Apache ou du réseau, tandis qu’une erreur de connexion concerne plus souvent les identifiants ou le service MySQL.

Composant Rôle dans le serveur LAMP Vérification utile
Linux Système d’exploitation qui héberge les services cat /etc/os-release
Apache 2.4 Serveur web qui répond aux requêtes HTTP et HTTPS sudo systemctl status apache2
MySQL 8.0 Serveur de base de données relationnelle sudo systemctl status mysql
PHP 8.3 Langage exécuté par Apache pour générer les pages dynamiques php -v

MariaDB peut remplacer MySQL dans une installation LAMP, car MariaDB est un fork libre et compatible avec de nombreux usages MySQL. Ce guide conserve toutefois MySQL 8.0 afin de suivre une seule méthode cohérente sur Ubuntu 24.04, sans mélanger paquets, services et commandes d’administration.

Quels prérequis vérifier avant d’installer serveur LAMP Ubuntu ?

Pour installer serveur LAMP Ubuntu dans de bonnes conditions, utilisez une machine Ubuntu 24.04 propre, un compte non administrateur disposant de sudo et un accès terminal local ou SSH. Prévoyez aussi l’accès au pare-feu du serveur ou du fournisseur d’hébergement, car le navigateur devra joindre les ports 80 et 443.

Schéma des étapes pour installer un serveur LAMP Ubuntu avec Apache, PHP et MySQL.
L’installation suit neuf étapes, de la mise à jour d’Ubuntu au test PHP puis à la suppression de la page phpinfo().

Le compte utilisé pour l’installation ne doit pas être le compte root permanent. Un utilisateur normal avec des droits sudo limite les manipulations irréversibles et laisse une trace plus lisible des actions d’administration.

  • Vérifiez l’élévation de privilèges avec sudo -v.
  • Contrôlez la version du système avec cat /etc/os-release.
  • Repérez l’adresse IP du serveur depuis le tableau de bord de votre hébergeur ou avec ip addr.
  • Préparez un nom de domaine si vous prévoyez d’activer HTTPS avec Let’s Encrypt.

Une distribution mise à jour réduit le risque de dépendances incohérentes. La procédure qui suit suppose Ubuntu 24.04 et ses dépôts standards : elle ne doit pas être copiée telle quelle sur Ubuntu 20.04, Debian ou une distribution différente. Pour mieux comprendre l’organisation générale d’un système GNU/Linux avant cette installation, consultez aussi les bases d’une distribution Linux.

Comment installer Apache, MySQL et PHP sur Ubuntu 24.04 ?

La procédure d’installation LAMP sur Ubuntu 24.04 suit un ordre de dépendance simple : mettre à jour le système, installer Apache, installer MySQL, ajouter PHP et ses extensions, puis vérifier le traitement des fichiers PHP. Chaque étape ci-dessous inclut une commande de contrôle et un résultat attendu avant de passer à la suivante.

Schéma de la séquence pour installer Apache, MySQL et PHP sur un serveur Ubuntu
La pile LAMP s’installe dans l’ordre système, Apache, MySQL, PHP, puis vérification web et base de données.

Étape 1 : mettre Ubuntu à jour

Actualisez la liste des paquets, puis appliquez les mises à jour disponibles avant d’installer les composants web. Cette étape évite d’installer Apache, PHP ou MySQL sur une base système incomplète.

sudo apt update && sudo apt upgrade -y

Vérifiez ensuite les paquets encore proposés à la mise à niveau. Le résultat attendu est l’absence de paquet listé après l’en-tête de la commande.

sudo apt list --upgradable

Étape 2 : installer Apache 2 et contrôler le service web

Installez Apache depuis les dépôts Ubuntu. Apache démarre normalement après l’installation et écoute les requêtes HTTP locales ou réseau lorsque le pare-feu les autorise.

sudo apt install -y apache2

Contrôlez l’état du service. La ligne importante doit indiquer active (running), sans erreur de démarrage.

sudo systemctl status apache2

Ouvrez ensuite http://ADRESSE_IP_DU_SERVEUR dans un navigateur. La page d’accueil Apache confirme que le serveur web répond ; elle ne confirme pas encore le fonctionnement de PHP.

Étape 3 : installer MySQL Server

Installez MySQL Server pour fournir la base de données MySQL Ubuntu à l’application PHP. MySQL reste un service local dans cette procédure : une application web hébergée sur le même serveur n’a pas besoin d’exposer le port de la base de données sur Internet.

sudo apt install -y mysql-server

Vérifiez l’exécution du service après l’installation. Un service MySQL actif ne prouve pas qu’une application peut se connecter : les comptes et privilèges seront créés plus loin.

sudo systemctl status mysql

Étape 4 : installer PHP 8.3 et les extensions PHP utiles

Installez PHP 8.3, son module Apache et les extensions fréquemment attendues par les CMS et applications PHP. Le paquet php8.3-mysql permet notamment à PHP de dialoguer avec MySQL.

sudo apt install -y php8.3 libapache2-mod-php8.3 php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath

Contrôlez la version réellement installée. Le résultat attendu commence par PHP 8.3..

php -v

Étape 5 : activer PHP dans Apache et redémarrer le serveur web

Activez le module PHP correspondant à PHP 8.3, puis redémarrez Apache afin qu’il charge la nouvelle configuration. Un redémarrage sans erreur est nécessaire avant le test d’une page .php.

sudo a2enmod php8.3 && sudo systemctl restart apache2

Vérifiez à nouveau Apache. Le résultat attendu est toujours active (running).

sudo systemctl status apache2

Étape 6 : lancer la sécurisation initiale de MySQL

Exécutez l’assistant de sécurisation MySQL et lisez chaque question avant de confirmer. L’assistant sert notamment à supprimer les accès anonymes et à réduire les réglages par défaut inutiles sur un serveur destiné à héberger une application.

sudo mysql_secure_installation

La méthode d’authentification du compte MySQL root peut varier selon l’installation. N’essayez pas de contourner une authentification locale avec un mot de passe faible : utilisez plutôt un compte distinct pour chaque application.

Un serveur LAMP n’a pas besoin d’un compte MySQL root utilisé par l’application : un utilisateur limité à une seule base réduit la portée d’une erreur ou d’une fuite d’identifiants.

Étape 7 : créer une base MySQL et un utilisateur dédié

Ouvrez le client MySQL avec les privilèges d’administration locaux. Les noms ci-dessous sont des exemples : remplacez application_db et application_user par des noms propres à votre projet.

sudo mysql

Dans l’invite MySQL, créez la base et l’utilisateur, puis attribuez les droits uniquement sur cette base. Remplacez MOT_DE_PASSE_LONG_ET_UNIQUE localement par un secret généré et ne le placez jamais dans un répertoire publiquement accessible.

CREATE DATABASE application_db;
CREATE USER 'application_user'@'localhost' IDENTIFIED BY 'MOT_DE_PASSE_LONG_ET_UNIQUE';
GRANT ALL PRIVILEGES ON application_db.* TO 'application_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Testez le compte créé avec une connexion locale. La commande demande le mot de passe sans l’afficher dans l’historique du terminal.

mysql -u application_user -p application_db

Étape 8 : configurer UFW pour HTTP et HTTPS

Installez UFW si nécessaire et autorisez d’abord SSH afin de ne pas interrompre votre accès distant au serveur. Ajoutez ensuite le profil Apache qui couvre HTTP et HTTPS, puis activez le pare-feu.

sudo apt install -y ufw
sudo ufw allow 'SSH'
sudo ufw allow 'WWW Full'
sudo ufw enable

Vérifiez les règles actives. La sortie doit afficher le pare-feu comme actif et la règle WWW Full comme autorisée.

sudo ufw status

Étape 9 : effectuer un test PHP Apache et supprimer le diagnostic

Créez temporairement une page qui appelle phpinfo(). Cette page permet de vérifier que le navigateur, Apache et PHP fonctionnent ensemble, ainsi que la présence de l’extension MySQL dans la configuration PHP.

echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php

Ouvrez http://ADRESSE_IP_DU_SERVEUR/info.php. La page doit afficher les informations PHP ; recherchez la section relative à MySQL pour confirmer que php8.3-mysql est chargé.

Supprimez le fichier de diagnostic dès la vérification terminée, car phpinfo() expose des informations techniques utiles à un attaquant.

sudo rm /var/www/html/info.php

Vérifiez que l’URL renvoie désormais une erreur 404, puis gardez cette page supprimée.

Étape 10 : vérifier le démarrage automatique des services

Apache et MySQL doivent être démarrés et activés pour redémarrer avec Ubuntu. Ces commandes ne remplacent pas une sauvegarde ou une supervision, mais elles confirment le comportement attendu après un redémarrage normal du système.

sudo systemctl enable apache2
sudo systemctl enable mysql
sudo systemctl status apache2
sudo systemctl status mysql

Le résultat attendu indique des services actifs et activés. Une application PHP peut maintenant être déployée, à condition de créer son répertoire et sa configuration Apache de manière contrôlée.

Comment vérifier que PHP communique bien avec MySQL ?

Le test PHP via phpinfo() confirme que PHP est interprété, mais il ne teste pas les identifiants de votre application. Une vérification complète consiste à confirmer séparément l’extension PHP MySQL, le service MySQL et la connexion du compte dédié à la base créée à l’étape 7.

Commencez par contrôler que PHP charge bien l’extension prévue. La commande ci-dessous doit retourner au moins une ligne liée à mysqli, mysqlnd ou pdo_mysql, selon les modules actifs.

php -m | grep -E 'mysqli|mysqlnd|pdo_mysql'

Le test de connexion MySQL réalisé avec mysql -u application_user -p application_db est le contrôle le plus direct pour la base. Un échec d’authentification signale un problème de nom d’utilisateur, de mot de passe, d’hôte autorisé ou de privilèges, non un problème Apache.

  • Apache répond, PHP ne s’exécute pas : contrôlez le module PHP et l’état d’Apache.
  • PHP s’exécute, MySQL refuse le compte : revoyez la création de l’utilisateur et les privilèges de la base.
  • Le navigateur ne joint pas le serveur : contrôlez UFW, l’adresse IP et les règles réseau de l’hébergeur.

Comment héberger une application PHP avec un hôte virtuel Apache ?

Un hôte virtuel Apache associe un nom de domaine à un répertoire de site et à des directives Apache distinctes. Cette séparation évite de déposer tous les projets dans /var/www/html, qui correspond au site par défaut et devient difficile à administrer dès qu’un second site est ajouté.

La création d’un hôte virtuel implique un fichier dans /etc/apache2/sites-available/, son activation avec a2ensite, puis un contrôle de syntaxe avant le redémarrage d’Apache. La documentation Ubuntu et Apache doit être consultée pour adapter précisément les directives ServerName, DocumentRoot et <Directory> à votre domaine et au framework utilisé.

⚠️ À valider avant exécution : la séquence technique fournie pour Ubuntu 24.04 confirme le principe des hôtes virtuels, mais ne fournit pas un fichier complet adapté à votre nom de domaine ni au répertoire public de votre application. Ne copiez pas un VirtualHost générique avec un domaine fictif dans un environnement de production.

Après toute modification Apache, contrôlez la syntaxe avant un redémarrage. Cette vérification évite de rendre l’ensemble des sites indisponibles à cause d’une directive invalide.

sudo apache2ctl configtest

Le résultat attendu est Syntax OK. Activez ensuite uniquement le site dont vous avez vérifié le fichier, puis redémarrez Apache selon la configuration validée.

Un hôte virtuel propre vaut mieux qu’un répertoire ajouté à la hâte : le nom de domaine, le répertoire public et les journaux restent alors identifiables site par site.

Les fichiers .htaccess nécessitent une configuration Apache qui autorise leur lecture, souvent via AllowOverride. Cette option est utile à certains CMS, mais elle ajoute une lecture de configuration par répertoire ; activez-la seulement lorsque l’application la demande réellement.

Comment sécuriser un serveur Ubuntu avant la mise en ligne ?

La sécurisation minimale d’un serveur LAMP Ubuntu consiste à limiter les services exposés, à protéger les identifiants, à chiffrer le trafic HTTPS et à conserver des sauvegardes restaurables. MySQL doit rester accessible localement pour l’application, tandis qu’Apache expose uniquement les services web nécessaires au public.

Le pare-feu UFW couvre le filtrage local, mais un hébergeur peut aussi appliquer ses propres règles réseau. Ouvrir HTTP et HTTPS ne rend pas une application sûre : le code PHP, les dépendances et les comptes d’accès doivent aussi être maintenus.

  1. Conservez la règle SSH avant d’activer UFW lorsque le serveur est administré à distance.
  2. Gardez MySQL sur son accès local par défaut plutôt que d’ouvrir son port au public.
  3. Stockez le mot de passe de base de données hors du répertoire web public et avec des permissions adaptées au compte de l’application.
  4. Installez HTTPS uniquement lorsque le domaine pointe vers le serveur et que l’accès HTTP est fonctionnel.
  5. Testez une restauration de sauvegarde sur une machine distincte avant de considérer une sauvegarde comme exploitable.

Pour demander un certificat HTTPS avec Certbot et son module Apache, installez les paquets correspondants, puis lancez l’outil interactif. Certbot doit être exécuté seulement après la résolution DNS du domaine vers le serveur.

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache

Le résultat attendu est un accès HTTPS avec un certificat valide pour le domaine configuré. Vérifiez ensuite le renouvellement automatique dans la documentation officielle de Certbot et surveillez l’expiration du certificat.

MySQL, MariaDB ou PHP-FPM : quelles alternatives à cette installation LAMP ?

MySQL 8.0, MariaDB et PHP-FPM répondent à des besoins différents autour d’un serveur PHP. MySQL est la solution suivie dans ce guide Ubuntu 24.04 ; MariaDB est une alternative compatible dans de nombreux projets ; PHP-FPM est une autre méthode d’exécution PHP avec Apache, plus distincte du module mod_php.

Option Cas d’usage Limite à anticiper
MySQL 8.0 Suivre la procédure Ubuntu 24.04 décrite ici Ne pas le confondre avec les commandes d’administration MariaDB
MariaDB Projet qui le demande explicitement ou environnement déjà standardisé dessus Éviter de mélanger paquets MySQL et MariaDB sur la même installation
PHP avec mod_php Configuration simple avec Apache pour un premier serveur Moins de séparation entre Apache et l’exécution PHP
PHP-FPM avec Apache Architecture PHP distincte via FastCGI Configuration supplémentaire à valider selon l’application

Le choix doit rester cohérent du début à la fin. Installer MySQL puis suivre une documentation MariaDB, ou activer PHP-FPM tout en conservant une configuration prévue pour mod_php, produit des erreurs difficiles à interpréter. Pour ce premier déploiement, gardez la pile définie au départ et documentez toute variante.

Erreurs fréquentes lors de l’installation d’un serveur LAMP

Les erreurs LAMP les plus courantes ne viennent pas d’une commande isolée, mais d’un contrôle oublié entre deux phases. Le symptôme doit guider le diagnostic : Apache, PHP, MySQL, le pare-feu et les permissions ne se vérifient pas avec le même outil.

  • Apache refuse de démarrer après une modification : lancez sudo apache2ctl configtest, corrigez la directive signalée, puis redémarrez Apache. Un redémarrage répété sans test masque l’erreur au lieu de la résoudre.
  • Le navigateur affiche le code PHP : vérifiez l’installation de libapache2-mod-php8.3, activez php8.3 avec a2enmod, puis contrôlez le statut d’Apache.
  • L’application ne se connecte pas à MySQL : testez d’abord le compte avec le client mysql. Vérifiez ensuite le nom de base, l’utilisateur, le mot de passe et l’hôte localhost utilisés par l’application.
  • Le site reste inaccessible depuis Internet : vérifiez la règle WWW Full dans UFW, puis les règles de pare-feu ou groupes de sécurité du fournisseur.
  • Une erreur 403 apparaît sur le répertoire du site : vérifiez la configuration Apache, le répertoire réellement défini comme racine web et les droits du système de fichiers ; ne corrigez jamais ce problème avec chmod 777.

Les journaux Apache apportent souvent la preuve utile lorsqu’une page retourne une erreur 500 ou un refus d’accès. Consultez les journaux au moment précis où vous reproduisez le problème, afin de relier un message à une action identifiable.

sudo journalctl -u apache2 --since "10 minutes ago"
sudo journalctl -u mysql --since "10 minutes ago"

Sources utiles à consulter

La documentation Ubuntu sur les applications LAMP sert de repère principal pour vérifier la procédure sur votre version du système. Consultez-la avant d’adapter la pile à une version d’Ubuntu différente.

La documentation communautaire Ubuntu-fr consacrée à LAMP apporte des compléments de contexte en français. Pour les erreurs de configuration Apache, la référence est la commande apache2ctl et son contrôle de syntaxe.

Un serveur web peut aussi servir des interfaces d’administration ou de messagerie. Si votre environnement utilise Roundcube, retrouvez les points de connexion et de configuration dans ce guide consacré au webmail Roundcube.

Avertissement : cette procédure cible exclusivement Ubuntu 24.04 amd64 avec Apache 2.4, PHP 8.3 et MySQL 8.0. Rejouez toutes les étapes sur une machine vierge ou un environnement de test avant une mise en production, puis adaptez les hôtes virtuels, secrets, sauvegardes et règles réseau à votre application réelle.

À retenir

  • 🧩 Installez Apache, MySQL et PHP dans cet ordre pour isoler les vérifications.
  • 🔒 Créez un utilisateur MySQL limité à la base de chaque application.
  • 🧪 Supprimez immédiatement la page info.php après le test PHP.
  • 🛡️ Autorisez SSH avant d’activer UFW sur un serveur administré à distance.
  • 📌 Testez Apache avec apache2ctl configtest avant chaque redémarrage après configuration.

Questions fréquentes

Peut-on remplacer MySQL par MariaDB dans une pile LAMP ?

Oui, MariaDB peut remplacer MySQL dans de nombreux projets PHP. Il faut toutefois choisir l’un des deux serveurs de base de données dès le départ et suivre une documentation cohérente avec les paquets et commandes installés.

Où placer les fichiers d’une application PHP sur Ubuntu ?

Le répertoire par défaut Apache est /var/www/html, mais un projet distinct gagne à disposer de son propre répertoire et de son hôte virtuel Apache. Le répertoire réellement exposé dépend ensuite du DocumentRoot validé dans la configuration du site.

Pourquoi PHP affiche-t-il son code au lieu d’exécuter la page ?

Ce symptôme indique généralement que le module PHP Apache n’est pas installé ou n’est pas activé. Vérifiez libapache2-mod-php8.3, exécutez sudo a2enmod php8.3, puis redémarrez Apache après un contrôle de configuration.

Faut-il ouvrir le port MySQL dans UFW ?

Non pour une application PHP et MySQL installés sur le même serveur. L’application peut joindre MySQL via localhost, sans exposer le service de base de données au réseau public.

Le serveur LAMP convient-il à un site en production ?

Une pile LAMP peut servir une application en production, mais l’installation de base ne suffit pas. Ajoutez au minimum HTTPS, des sauvegardes testées, des mises à jour régulières, une configuration Apache validée et une gestion prudente des secrets.

Version PDF à téléchargerEmportez l'essentiel de cet article au format PDF.

Télécharger le PDF

Laisser un commentaire