Installer une pile LAMP sur un VPS Linux Ubuntu 24.04

2 min
Hébergement VPS/VDS

Une pile LAMP (Linux, Apache, MariaDB, PHP) est la base classique de WordPress, Laravel et de la plupart des applications PHP. Dans ce guide, vous la montez pas à pas sur un VPS Linux Infrawire tout neuf sous Ubuntu 24.04, avec un virtual host dédié et un pare-feu qui n'expose que le strict nécessaire.

📋 Prérequis

  • Un VPS KVM sous Ubuntu 24.04 (l'IP et le mot de passe root se trouvent dans votre espace client)
  • Un accès SSH en root, ou avec un utilisateur disposant de sudo
  • Un domaine example.com dont les enregistrements A (et AAAA) pointent vers VPS_IP

Les commandes ci-dessous supposent que vous êtes root. Sinon, préfixez-les par sudo.

1. Mettre à jour le système

Bash
apt update && apt upgrade -y

2. Installer Apache

Bash
apt install -y apache2 systemctl enable --now apache2 apache2 -v

Le service démarre immédiatement et sera lancé à chaque démarrage.

3. Installer MariaDB

MariaDB est disponible dans les dépôts Ubuntu et remplace MySQL sans changement. Si vous préférez MySQL d'Oracle, installez mysql-server à la place, mais jamais les deux sur la même machine.

Bash
apt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation

Dans l'assistant, conservez l'authentification unix_socket pour root, définissez un mot de passe fort si on vous le demande, supprimez les utilisateurs anonymes, interdisez la connexion root à distance et supprimez la base de test. Créez ensuite une base et un utilisateur dédiés à votre application :

Bash
mariadb
SQL
1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;

4. Installer PHP 8.3

Ubuntu 24.04 fournit PHP 8.3 dans ses dépôts par défaut, aucun PPA supplémentaire n'est nécessaire.

Bash
apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v

Le paquet libapache2-mod-php bascule automatiquement Apache sur le MPM prefork et charge le module PHP.

5. Créer un virtual host et activer mod_rewrite

Bash
mkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>

AllowOverride All active les fichiers .htaccess, dont dépendent les URL propres de WordPress ou de Laravel. Activez maintenant le module et le site, puis désactivez la page par défaut :

Bash
a2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2

configtest doit répondre Syntax OK avant le rechargement.

6. Configurer le pare-feu

Autorisez d'abord SSH, sinon vous vous enfermerez dehors dès l'activation du pare-feu.

Bash
ufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status

Le profil Apache Full ouvre les ports 80 et 443. N'ouvrez pas le port 3306 : MariaDB n'a besoin d'écouter qu'en local.

7. Tester PHP puis supprimer le fichier de test

Bash
echo '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1

Vous devez obtenir HTTP/1.1 200 OK. Ouvrez http://example.com/info.php dans un navigateur pour voir la page de configuration de PHP. Une page phpinfo() révèle versions, chemins et modules : supprimez-la immédiatement.

Bash
rm /var/www/example.com/public_html/info.php

Vérifiez aussi les autres composants :

Bash
apache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb

🛠️ Dépannage

La page par défaut d'Apache s'affiche toujours. Le site par défaut est encore activé ou le DNS n'a pas fini de se propager. Lancez a2dissite 000-default.conf, rechargez Apache et testez avec curl -I -H 'Host: example.com' http://VPS_IP/.

403 Forbidden. Vérifiez que le répertoire contient Require all granted, que www-data peut lire les fichiers (ls -ld /var/www/example.com/public_html) et consultez le journal /var/log/apache2/example.com-error.log.

Le navigateur télécharge le fichier PHP au lieu de l'exécuter. Le module PHP n'est pas chargé. Lancez apache2ctl -M | grep php, puis systemctl restart apache2. Si rien n'apparaît, réinstallez libapache2-mod-php.

Les règles de réécriture sont ignorées (404 sur les URL propres). Vérifiez que a2enmod rewrite a bien été exécuté et que votre bloc <Directory> contient AllowOverride All.


🎉 Votre pile LAMP est en place : Apache, MariaDB et PHP 8.3 sont prêts à héberger votre premier site.

Restez à jour avec les dernières offres, réductions et promotions spéciales.

Voir les promotions

Nous utilisons des cookies

Nous utilisons des cookies analytiques pour améliorer votre expérience sur notre site. Aucune donnée n'est revendue à des tiers. En savoir plus dans notre politique de confidentialité.