Présentation
Dans ce tutoriel, je vais vous expliquer comment installer WordPress sur un serveur Web Nginx.
Avant de commencer, vous allez avoir besoin d’un serveur Web avec Nginx / PHP / MariaDB d’installés. Si vous avez besoin tout est expliqué dans ce tutoriel : Ubuntu : installer un serveur Web – NGINX / PHP / MariaDB – RDR-IT
Le moteur Web Nginx ne lit pas les fichiers .htaccess.
Préparation de l’environnement
Avant d’attaquer l’installation de WordPress sur le serveur, nous allons préparer l’environnement :
- Créer le virtual host (vhost)
- Créer une base de données et un utilisateur
- Télécharger WordPress
- Configurer un enregistrement DNS qui va pointer sur le serveur Web.
Configuration du virtual host
Avant de s’occuper de la configuration, on va créer les dossiers du virtuel host.
Depuis une connexion SSH ou dans la console entrer les commandes suivantes :
sudo mkdir /home/www-data/wordpress
sudo mkdir /home/www-data/wordpress/log
sudo mkdir /home/www-data/wordpress/public_html
sudo chown www-data /home/www-data/wordpress -R
Les 3 premières lignes vont créer les dossiers pour les fichiers de WordPress et la dernière ligne change le propriétaire.
On va utiliser le fichier default.conf pour créer la configuration du virtual host WordPress. Copier le fichier à l’aide de la commande ci-après :
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/wordpress.conf
Ouvrir le fichier pour modifier la configuration :
sudo nano /etc/nginx/sites-available/wordpress.conf
Voici mon fichier de configuration :
server {
listen 80;
# Site URL
server_name wordpress.lab.priv;
# Folder Access LOG
access_log /home/www-data/wordpress/log/access.log main;
location / {
# Folder files WordPress
root /home/www-data/wordpress/public_html;
# Add index.php
index index.php index.html index.htm;
# Rewrite URL for WordPress
try_files $uri $uri/ /index.php?$args;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
# Folder files WordPress
root /home/www-data/wordpress/public_html;
#try_files $uri =404;
fastcgi_index index.php;
# Call PHP
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Param PHP for WordPress
fastcgi_param PHP_VALUE "memory_limit=\"256M\"
post_max_size=\"128M\"
upload_max_filesize=\"32M\"";
include fastcgi_params;
}
}
J’ai ajouté des commentaires pour vous aidez à adapter le fichier de configuration. Vous pourrez aussi trouver de l’aide sur le forum.
Activer le virtual host de WordPress :
sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
Vérifier la configuration Nginx :
sudo nginx -t
Recharger la configuration pour activer le virtual host :
sudo systemctl reload nginx
Configuration de la base de données
Pour fonctionner, WordPress a besoin d’une base de données MariaDB ou MySQL. Dans cette partie, nous allons créer un utilisateur et une base de données dédiés à l’installaton de WordPress.
Depuis phpMyAdmin, cliquer sur Comptes utilisateurs 1.
Cliquer sur Ajouter un compte d’utilisateur 1.
Entrer le nom de l’utilisateur 1 (wordpress), saisir un mot de passe (x2) 2, cocher la case Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base 3 et cliquer sur Exécuter 4.
La base de données 1 est créée ainsi que l’utilisateur.
Téléchargement de WordPress
On va maintenant télécharger l’archive de WordPress et copier les fichiers dans le répertoire /home/wordpress/public_html
.
Aller dans le dossier tmp à l’aide commande ci-après :
cd /tmp
Télécharger la dernière version de WordPress à l’aide de la commande wget :
sudo wget https://wordpress.org/latest.tar.gz
Une fois l’archive téléchargée, décompresser la :
sudo tar -zxvf latest.tar.gz
Déplacer le cotenu (les fichiers WordPress) dans le dossier du virtual host :
sudo mv wordpress/* /home/www-data/wordpress/public_html
Modifier le propriétaire des dossiers et fichiers :
sudo chown www-data /home/www-data/wordpress -R
Installation de WordPress
Nous sommes maintenant prêts à installer WordPress.
Lancer un navigateur Internet et entrer l’url du site WordPress. A la première étape, sélectionner la langue 1 et cliquer sur Continuer 2.
Une page s’affiche, indiquant de quoi vous avez besoin pour installer WordPress, cliquer sur C’est partie 1.
Il faut entrer les informations de connexion à la base de données, celle-ci seront ensuite écrite dans le fichier wp-config.php qui se trouve à la racine du site Internet. Entrer le nom de la base de données 1, l’identifiant 2 et le mot de passe 3 puis l’adresse du serveur 4 et cliquer sur bouton Envoyer 5.
Il est possible de modifier le préfixe des tables (wp_ par défaut), ceci est surtout utile si vous faites plusieurs installer de WordPress sur la même base de données. Dans un environnement dédié comme ici, si vous souhaitez installer plusieurs sites WordPress, je vous conseille de faire une base de données par installation.
Une fois le test de connexion à la base de données réussi, cliquer sur Lancer l’installation 1.
Configurer le titre du site 1, l’identifiant 2 et le mot de passe 3 du compte admin et une adresse e-mail 4. Cliquer sur Installer WordPress 5.
WordPress est installé, cliquer sur Se connecter 1.
Entrer les identifiants 1 du compte créé lors de l’installation et cliquer sur Se connecter 2.
Votre site WordPress est prêt, il ne vous reste plus qu’à le personnaliser et ajouter du contenu.
Optimiser WordPress avec Memcached / Redis
Afin de compléter ce tutoriel, je vais vous expliquer comment optimiser ou plutôt accélérer votre site WordPress en utilisant Memcached ou Redis.
Memcached et Redis sont deux services de « base de données » qui utilisent la mémoire RAM pour stocker des informations que votre site WordPress utilisent souvent.
Ces deux services sont utilisés en parallèle de la base de données MariaDB/MySQL pour avoir un système de cache haute-performance.
Il est possible d’utiliser la partie qui suit du tutoriel pour un serveur Apache.
Installer le plugin Query Monitor
Avant de mettre en place les services de cache, nous allons installer un plugin WordPress qui va nous permettre d’évaluer l’efficacité.
Depuis l’interface d’administration, passer le curseur de la souris sur Extensions 1 et cliquer sur Ajouter 2.
Placer votre curseur dans la zone de recherche 1.
Dans la zone de recherche entrer query monitor 1, une fois la recherche effectuée, cliquer sur le bouton Installer maintenant 2 du plugin.
Une fois l’extension installée, cliquer sur le bouton Activer 1.
L’extension est activée 1, on peut voir aussi dans la barre d’administration, les informations de génération 2 de la PHP et notamment le nombre de requêtes.
En valeur de référence, je vais prendre le nombre de requêtes sur la page d’accueil, comme on peut le voir sur la capture ci-dessous, je suis à 39 requêtes.
Memcached
On va commencer avec Memcached, dans un premier temps, il faut installer le service sur le serveur, puis installer l’extension PHP et pour finir une extension sur WordPress pour la prise en charge sur le CMS.
Installation de Memcached
Depuis un terminal enter la commande suivante pour l’installation sur Ubuntu / Debian :
sudo apt install memcached -y
Une fois l’installation terminée, pour la valider le bon fonctionnement entrer la commande suivante pour se connecter au service Memcached :
telnet 127.0.0.1 11211
Pour sortir entrer la commande quit.
quit
Installer l’extension Memcached pour PHP
Toujours en SHELL, entrer la commande suivante pour installer l’extension php-memcached :
sudo apt install php-memcached -y
Redémarrer le service PHP utilisé par WordPress :
sudo systemctl restart php7.3-fpm
Afin de vérifier que l’extension est active, le plus simple est de passer par un fichier avec la fonction phpinfo() et vérifier que la section memcached est présente.
Utiliser Memcached avec WordPress
La partie qui va suivre est pour démontrer l’utilisation de Memcached avec WordPress dans ce tutoriel, pour une utilisation en production, je vous conseille l’utilisation d’un plugin de cache gérant le cache Objet comme LsCache ou W3 Total Cache.
Le plugin utilisé ci-après ne permet pas de purger le cache.
Depuis l’administration WordPress, aller à la page d’ajout d’extensions, rechercher memcached 1 et cliquer sur Installer maintenant 2 sur le plugin Object Cache 4 everyone.
Une fois l’installation terminée, cliquer sur Activer 1.
Une fois l’activation terminée, vérifier dans les extensions Avancées 1, d’avoir object-cache.php 2.
Retourner sur la page d’accueil du site et actualiser la (2 fois pour construire le cache) et on peut voir que pour générer la page seulement 8 requêtes ont été effectuées contre 39 requêtes sans Memcached.
Le résultat est assez impressionnant, le gain de performance sur un site WordPress sans plugins et sans contenu à peu d’influence sur le temps de génération. Le cache d’objets permet d’améliorer grandement ce temps de génération sur un site avec plusieurs dizaines de plugins et des articles en limitant le nombre de requêtes. Et cela se sent pour les visiteurs.
Redis
Comme Memcached, il faut installer les paquets sur le serveur, l’extensions PHP et l’extensionw WordPress.
Installation de REDIS
Entrer la commande suivante pour installation REDIS sur le serveur :
apt install redis-server -y
Pour tester le service REDIS, il y a plusieurs solutions.
Avec TELNET entrer la commande suivante :
telnet 127.0.0.1 6379
Pour sortie de telnet entrer quit.
Avec redis-cli
Entrer les commandes suivantes :
redis-cli ping
Si tout fonctionne la réponse est PONG.
Pour sortie du client Redis enter : quit
Installer l’extension Redis pour PHP
Pour installer l’extension Redis pour PHP entrer la commande ci-dessous en remplaçant X par la version de PHP qui est utilisé.
apt install php7.X-redis -y
Pour vérifier que le module Redis est bien installé, vérifier depuis la fonction phpinfo() que la section est redis est présente.
Utiliser Redis avec WordPress
Si vous avez installé une extension Memcached, celle-ci doit être désactivé avant d’installer l’extension Redis.
La partie qui va suivre est pour démontrer l’utilisation de Memcached avec WordPress dans ce tutoriel, pour une utilisation en production, je vous conseille l’utilisation d’un plugin de cache gérant le cache Objet comme LsCache ou W3 Total Cache.
Depuis l’administration WordPress, aller à la page d’ajout d’extensions, rechercher redis 1 et cliquer sur Installer maintenant 2 sur le plugin Redis Object Cache.
Une fois l’installation terminée, cliquer sur le bouton Activer 1.
Une fois le plugin installé et redirigé vers la page des extensions, au niveau du plugin Redis Object Cache, cliquer sur Settings 1.
Cliquer sur Enable Object Cache 1.
Une fois le cache objet d’activé, on peut voir que la connexion au serveur Redis est effectué. Avec cette extension, il est possible de purger le cache en cliquant sur Flush Cache.
Retourner sur la page d’accueil du site et actualiser la (2 fois pour construire le cache) et on peut voir que pour générer la page seulement 6 requêtes ont été effectuées contre 39 requêtes sans Redis.
Memcached ou Redis ?
Maintenant que vous avez vu les deux solutions, vous vous posez certainement la question du choix … les deux solutions sont équivalentes, le mieux est de tester les deux et de faire vous-même le choix.
Il n’est pas possible d’utiliser les deux en même pour la cache Objet, par contre si vous utilisez le plugin W3 Total Cache, il est possible d’utiliser les deux services simultanément pour des fonctions différentes, par exemple le cache des pages HTML sur Memcached et le cache Objet sur Redis.
Conclusion
J’espère que ce tutoriel va vous aidez à installer WordPress sur un environnement Nginx.
Si vous avez besoin d’aide ou des questions le forum est à votre disposition.