WordPress Multisite avec LAMP (Ubuntu)

Procédure pour installer plusieurs sites Worpdress avec le stack LAMP sur un serveur Ubuntu.

apachectl -v
  • Arrêt / redémarrage Apache
    • apache2ctl

Fichiers et répertoires de configuration Apache 2

  • Fichiers de configuration Apache 2
    • /etc/apache2/
  • Répertoire contenant les sites
    • /var/www/html/

Création d’hôtes virtuels

Les hôtes virtuels permettent d’héberger plusieurs sites W sur une même machine. Les sites disponibles sont configurés dans le répertoire /etc/apache2/sites-available/

Il y aura un fichier de configuration (.conf) par hôte virtuel.

Configuration d’un hôte virtuel nommé servr01

  • /etc/apache2/sites-available/srvr01.conf

Indique à Apache de prendre en compte les fichiers .htaccess

<Directory /var/www/html/srvr01>
AllowOverride All
</Directory

Activer un hôte virtuel

a2ensite etc/apache2/sites-available/srvr01.conf
systemctl restart apache2

Les sites activés sont listés dans le répertoire /etc/apache2/sites-enabled/

Pour en désactiver un :

sudo a2dissite srvr01.conf

Activation de Mod Rewrite

Mod Rewrite permet d’activer les fonctionnalité de ré-écritures d’URL (www, versions https…)

a2enmod rewrite
systemctl restart apache2

Base de données MySQL

Sécurisation de la BDD, notamment pour éviter d’avoir le USER root comme user par défaut, avec son MDP dans les fichiers de configuration wp-config.php

mysqladmin --user=root --password=MDP_Actuel password "new pass"

Changer le mode d’authentification :

USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User ='root';
FLUSH PRIVILEGES;

Attention, ce n’est pas un moyen sécurisé de procéder, c’est juste rapide…

Changement du jeu de caractères

Connexion à votre BDD et changement

mysql -u root -p
CREATE DATABASE srvr01 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

Dans le fichier config.php de votre serveur virtuel, mettre à jour le nom de votre BDD, user, password.

Installation de WordPress sur LAMP

Téléchargement des modules php nécessaires

apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip libapache2-mod-fcgid

Dans un répertoire temporaire (/tmp), télécharger et extraire la dernière version de WP

curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

Créer un .htaccess vierge

touch /tmp/wordpress/.htaccess

Copier le fichier de configuration de démo

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

Créer un fichier update pour récupérer les mises à jour sans problème de droits

mkdir /tmp/wordpress/wp-content/upgrade

Copie de la nouvelle version vers l’hôte virtuel

cp -a /tmp/wordpress/. /var/www/html/srvr01

Changer le propriétaire et le groupe par celui de www-data (groupe Apache)

chown -R www-data:www-data /var/www/html/srvr01

Vérifications

Ouvrir un navigateur : IP

Si tout se passe bien la page d’accueil s’affiche :

Vérification PHP

IP/info.php

PHP ne fonctionne pas

Vérifier la version. Ici la 8.x

php --version

Liste des services installés

service --status-all

Installer le module

apt install libapache2-mod-fcgid

Vérifier qu’il tourne

systemctl status php8.1-fpm

Mettre à jour la configuration 000-default.conf

Editer la ligne :

SetHandler "proxy:unix:/var/run/php/php8.1fpm.sock|fcgi:/>

Le cas échéant, modifier la configuration des fichiers de configuration des virtual hosts.

Installation PHPMyAdmin

Configuration PHPMyAdmin :

apt install phpmyadmin

Réglage des options pour phpmyadmin

/etc/apache2/sites-available/phpmyadmin.conf

<Directory /var/www/html/phpmyadmin/>
AllowOverride All
</Directory>

Activation PHPMyAdmin

cd /etc/apache2/sites-available/
a2ensite phpmyadmin.conf
systemctl restart apache2
ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

⚠️ Votre phpmyadmin est accessible publiquement !