Retourner sur le site

Stack LAMP (Apache, MariaDB, PHP)

Déployez une stack LAMP complète sur VPS HolyCloud : Apache, MariaDB, PHP, virtual host, permissions et test phpinfo sécurisé.

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 que mod_php seul ; 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.log et journalctl -u php*-fpm
  • Base inaccessible : identifiants wp-config.php vs utilisateur MariaDB
  • Support HolyCloud : domaine, sortie apache2ctl -S, df -h, RAM (free -h)