Stack LAMP (Apache, MariaDB, PHP)
La stack LAMP (Linux, Apache, MariaDB, PHP) héberge la majorité des CMS (WordPress, Drupal, Joomla) sur un VPS Linux HolyCloud. Ce tutoriel enchaîne l'installation des trois services, un virtual host, les modules PHP nécessaires et les bonnes pratiques de permissions.
Prérequis
- VPS HolyCloud Ubuntu 22.04/24.04 ou Debian 12 (2 Go RAM minimum recommandé)
- Accès sudo
- Nom de domaine pointant vers l'IP du VPS (optionnel pour le test, requis pour SSL)
- Ports 80 et 443 ouverts (UFW + pare-feu HolyCloud)
- Tutoriels connexes : « Installer MariaDB », « Installer Apache HTTP Server »
Conseil : pour de fortes charges PHP, préférez PHP-FPM + Apache (
mpm_event) plutôt quemod_phpseul ; ce guide couvre l'association classique puis FPM.
Étape 1 : mise à jour et paquets de base
sudo apt update
sudo apt install -y apache2 mariadb-server libapache2-mod-php php php-cli php-mysql php-curl php-xml php-mbstring php-zip php-gd unzip
Activez Apache :
sudo systemctl enable --now apache2
sudo a2enmod rewrite ssl headers
sudo systemctl reload apache2
Étape 2 : sécuriser MariaDB et créer la base CMS
sudo mariadb-secure-installation
Base pour WordPress (exemple) :
sudo mariadb <<'EOF'
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'MotDePasseFortIci!';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EOF
Étape 3 : répertoire du site et permissions
sudo mkdir -p /var/www/exemple.fr/public_html
sudo chown -R www-data:www-data /var/www/exemple.fr
sudo find /var/www/exemple.fr -type d -exec chmod 755 {} \;
sudo find /var/www/exemple.fr -type f -exec chmod 644 {} \;
Fichier de test (à supprimer après vérification) :
echo '<?php phpinfo();' | sudo tee /var/www/exemple.fr/public_html/info.php
Étape 4 : virtual host Apache
sudo nano /etc/apache2/sites-available/exemple.fr.conf
<VirtualHost *:80>
ServerName exemple.fr
ServerAlias www.exemple.fr
DocumentRoot /var/www/exemple.fr/public_html
<Directory /var/www/exemple.fr/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/exemple.fr-error.log
CustomLog ${APACHE_LOG_DIR}/exemple.fr-access.log combined
</VirtualHost>
Activer le site :
sudo a2ensite exemple.fr.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
Étape 5 : PHP-FPM (recommandé en production)
sudo apt install -y php-fpm
sudo a2dismod php8.2 2>/dev/null || sudo a2dismod php8.3 2>/dev/null || true
sudo a2enconf php8.2-fpm 2>/dev/null || sudo a2enconf php8.3-fpm
sudo a2enmod proxy_fcgi setenvif
sudo systemctl enable --now php8.2-fpm 2>/dev/null || sudo systemctl enable --now php8.3-fpm
Dans le VirtualHost, ajoutez :
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
</FilesMatch>
Adaptez le chemin du socket (ls /run/php/).
Étape 6 : pare-feu et SSL (Let's Encrypt)
sudo ufw allow 'Apache Full'
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d exemple.fr -d www.exemple.fr
Étape 7 : durcissement post-installation
Supprimez info.php :
sudo rm -f /var/www/exemple.fr/public_html/info.php
Limitez l'exécution PHP dans uploads (WordPress) via .htaccess ou configuration Apache dédiée.
Vérification
curl -I http://127.0.0.1
curl -s http://exemple.fr/ | head -20
sudo systemctl is-active apache2 mariadb php8.2-fpm 2>/dev/null || sudo systemctl is-active php8.3-fpm
mariadb -u wp_user -p -h 127.0.0.1 wordpress -e "SHOW TABLES;"
Navigateur : page d'accueil du site ou écran d'installation CMS ; HTTPS valide après Certbot.
Besoin d'aide HolyCloud
- 403 Forbidden : propriétaire
www-data,DocumentRoot,Require all granted - 500 + PHP : logs
sudo tail -50 /var/log/apache2/exemple.fr-error.logetjournalctl -u php*-fpm - Base inaccessible : identifiants
wp-config.phpvs utilisateur MariaDB - Support HolyCloud : domaine, sortie
apache2ctl -S,df -h, RAM (free -h)