JusteGeek

Installer Redis et activer le cache objet WordPress

Aujourd'hui, on va parler un peu de performance et de cache. Bon nombre d'entre vous ont, sans doute, déjà entendu parler de mise en cache de site web ?! Pour les autres, il s'agit d'une technique permettant d'améliorer les performances d'un site en accélérant le chargement de ses pages. JusteGeek.fr, par exemple, utilise cela pour que les pages vous soient servies le plus vite possible. Mais savez-vous qu'il existe un autre cache que celui des pages web : le cache d'objet. C'est ce dont nous allons parler aujourd'hui, en installant Redis et PHPRedis sur son serveur Web, puis en activant le cache objet WordPress.

Redis

Qu'est ce que Redis ?

Redis (pour Remote Dictionary Server) est une solution open-source de gestion de base de données clé-valeur en mémoire. Participant à la mouvance NoSQL, cette solution contribue à l'amélioration des performances via un stockage des données en RAM. Cela évite ainsi les requêtes SQL et les accès disques disques pour récupérer les données. Les temps d'accès sont alors réduits considérablement et tombent à quelques microsecondes. Dès lors, vous comprenez l'intérêt que peut avoir ce système.

Bon, installer un serveur Redis ne sera pas suffisant pour mettre en place un cache objet. Il faudra en effet que le serveur web soit capable de discuter avec le serveur Redis. Il faudra, par exemple, utiliser PHP pour parler avec ce serveur Redis, et donc un module PHP sera nécessaire : PHPRedis.

Contexte du tutoriel

Le tutoriel qui suit a été réalisé sous Debian 10 "Buster", avec le serveur web Apache 2 (v 2.4) et le moteur PHP 7.3-fpm. Si vous utilisez un système d'exploitation différent, un serveur web différent ou une solution alternative à PHP, il conviendra d'adapter ce tuto pour que cela fonctionne dans votre environnement. Mais sur le principe, cela sera relativement identique.

Allez, commençons tout de suite avec la première étape : l'installation d'un serveur Redis.

Installer un serveur Redis

La première étape consiste donc à installer un Redis sur son serveur. Nous allons donc installer ce composant sur notre Debian via la commande suivante :

apt-get install redis-server

Une fois le paquet installé, on va éditer son fichier de configuration (utilisez nano ou vi si vous préférez) :

vim /etc/redis/redis.conf

Localisez la ligne supervised no et remplacez no par systemd

supervised systemd

Redémarrez ensuite Redis :

systemctl restart redis

On vérifie ensuite que notre serveur Redis est lancé et fonctionne correctement :

systemctl status redis

Et si vous obtenez un retour semblable à celui-ci dessus [active(running)] c'est que c'est bon.

Vérification du statut du serveur Redis

Enfin, on va tester la connectivité du serveur Redis, en rentrant la commande ci-dessous, et si tout se passe bien, Redis devrait répondre PONG :

redis-cli ping
Test de connectivité Redis

Sécuriser un minimum Redis

Cool, c'est fonctionnel ! Mais ce n'est pas terminé. Il y a encore quelques opérations à effectuer pour que les choses soient faites dans les règles de l'art. En effet, l'installation bien que fonctionnelle, peut être quelque peu sécurisée en suivant les étapes suivantes : ajouter une authentification et gérer les commandes dangereuses.

Ajouter une authentification

La première chose que l'on va réaliser, c'est définir une authentification pour Redis, car de base c'est open-bar... et ça, c'est clairement NON ! Pour configurer un mot de passe, il faut, de nouveau, éditer le fichier de configuration de Redis :

vim /etc/redis/redis.conf

Localisez la section SECURITY, décommentez la ligne requirepass (en supprimant le signe # au début de la ligne), et remplacez foobared par un mot de passe fort. Enregistrez ensuite vos modifications

Définition d'une authentification pour Redis

Enregistrez ensuite les modifications, et redémarrez le serveur Redis :

systemctl restart redis

Vous pouvez ensuite vérifier le bon fonctionnement de l'authentification en retentant une commande redis-cli ping. Vous devriez alors obtenir une erreur d'authentification :

Commande redis-cli en échec sans authentification

Si vous en avez déjà marre, vous pouvez vous arrêtez ici. Mais avouer que ce serait dommage d'arrêter en si bon chemin, non ? Alors voyons maintenant le cas des commandes dangereuses.

La gestion des commandes dangereuses

Certaines commandes de Redis sont extrêmement puissantes, au point qu'on peut parfois les considérer comme dangereuses. C'est par exemple le cas des commandes FLUSHALL, FLUSHDB, KEYS, DEL, CONFIG, BGREWRITEAOF, BGSAVE, SHUTDOWN et j'en passe... Alors il peut être judicieux de se protéger un minimum de ces commandes. Et pour cela, on a deux solutions : désactiver les commandes en cause, ou bien les renommer (utile si on sait qu'on va en avoir besoin...). Et c'est là que cela va sans doute être plus compliqué pour vous, car il va falloir agir au cas pas cas, en fonction de vos besoins, pour choisir la bonne méthode pour chaque commande.

Pour renommer une commande, il convient d'éditer le fichier de configuration de Redis :

vim /etc/redis/redis.conf

Et d'ajouter des lignes en utilisant la syntaxe suivante :

rename-command COMMANDNAME NEWCOMMANDNAME

Ce qui donnerai, par exemple, pour renommer FLUSHALL en FL_A_CMD

rename-command FLUSHALL FL_A_CMD

Répétez ainsi l'opération pour toutes les commandes que vous souhaitez renommer. Et pour désactiver une commande ? Et bien il suffit de la renommer avec une chaîne vide, comme par exemple :

rename-command FLUSHDB ""

Une fois que vous avez ajouté toutes les lignes que vous souhaitiez, enregistrez les changements du fichier et redémarrez redis :

systemctl restart redis

Bon, notre serveur Redis nous a assez occupé, on va maintenant passer à l'interface entre Redis et PHP, le module PHPredis.

Installer PhpRedis

Pour faire discuter PHP avec le serveur Redis, on peut utiliser plusieurs méthodes : PHPRedis, Predis, Credis... J'ai choisi pour ma part d'utiliser le mode PHP PHPRedis. Vous allez voir, c'est assez simple et rapide à mettre en place. Ouvrez un terminal et exécutez la commande suivante pour installer le module, l'activer et redémarrer PHP7.3-fpm :

apt install php-redis && phpenmod redis && systemctl restart php7.3-fpm

Une fois que c'est fait, vous pouvez créer un fichier phpinfo pour vérifier votre installation. Vous devriez y voir une section Redis, comme ci-dessous.

PHP info : le module Redis est actif

PHPRedis est donc installé et fonctionnel. Voyons maintenant comme l'utiliser sur un blog WordPress pour activer le cache objet.

Activer le cache objet WordPress

Vous vous en doutez sûrement, si je fais un paragraphe sur l'activation du cache objet sur WordPress, c'est que le simple installation de Redis et PHPRedis n'est pas suffisant. Mais pas de panique va va être assez simple et rapide, une fois encore. L'opération consiste simplement a installer un plugin WordPress et effectuer un petit peu de paramétrage. Ouvrez donc votre interface d'administration WordPress et rendez vous dans la page d'ajout d'extensions. La encore, on a plusieurs possibilités, pour la part, j'utilise l'extension Redis Object Cache. Recherchez donc l'extension et installez la.

Redis Object Cache : extension WordPress

Une fois l'installation du plugin terminée, si vous l'activez, celle ne fonctionnera pas... Ah zut ! On a fait ça pour rien alors ? Que faire ? Don't panic, c'est normal. Nous avons précédemment défini une authentification pour notre serveur Redis, et ça, notre petit plugin WordPress l'ignore. On va donc devoir fournir la clé d'authentification et pour cela, on va éditer le fichier wp-config.php de notre WordPress et ajouter ceci (à adapter avec votre clé d'authentification, bien sûr) :

define( 'WP_REDIS_PASSWORD', 'CLE_AUTHENTIFICATION' );
Ajout de la clé dans le fichier wp-config.php

Ensuite, il ne nous reste plus qu'à terminer ce tutoriel en redémarrant Apache et PHP :

systemctl restart apache2 && systemctl restart php7.3-fpm

On peut maintenant activer notre plugin, et l'on constate que notre cache objet WordPress est opérationnel !

Le cache objet WordPress est désormais activé

Et bien voilà, tuto terminé ! J'espère que cela sera utile à certain d'entre vous ! 🙂

Quitter la version mobile