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.comdont les enregistrements A (et AAAA) pointent versVPS_IP
Les commandes ci-dessous supposent que vous êtes root. Sinon, préfixez-les par sudo.
1. Mettre à jour le système
Bashapt update && apt upgrade -y
2. Installer Apache
Bashapt 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.
Bashapt 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 :
Bashmariadb
SQL1CREATE 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.
Bashapt 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
Bashmkdir -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
Apache1<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 :
Basha2enmod 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.
Bashufw 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
Bashecho '<?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.
Bashrm /var/www/example.com/public_html/info.php
Vérifiez aussi les autres composants :
Bashapache2ctl -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.