Redis est un système de stockage et de cache en mémoire open-source, également appelé serveur de structures de données. Il offre un support avancé pour plusieurs types de données, tels que les hachages, les listes, les ensembles, les bitmaps et bien d'autres encore. En raison de ses excellentes performances, Redis est très populaire dans les industries de pointe et les grandes multinationales.
Avantages de Redis
En matière de vitesse, les serveurs Redis sont inégalés. En tant que NoSQL serveur de base de données, il offre une vitesse fantastique de stockage et de récupération des données. De plus, Redis possède des fonctionnalités exceptionnelles qui permettent de travailler de manière transparente avec différentes données, y compris les plus complexes. La facilité d'utilisation et les fonctionnalités sophistiquées de Redis lui ont non seulement permis de se démarquer, mais ont également favorisé sa standardisation croissante en tant que base de données grand public pour les entreprises et les particuliers.
Ci-dessous, nous détaillerons les étapes pour vous aider à installer Redis sur le logiciel Ubuntu 20.04. Dans ce tutoriel, vous obtiendrez toutes les informations dont vous avez besoin, de l'installation à la configuration d'un serveur Redis externe à utiliser comme gestionnaire de session pour une application PHP s'exécutant sur Ubuntu 20.04.
Prise en main
Pour suivre les étapes, vous aurez besoin de deux serveurs de base de données différents (droplets) situés dans le même centre de données avec le réseau privé activé. Ceux-ci comprennent :
-
Un serveur web PHP exécutant LAMP et LEMP sur Ubuntu 20.04 – nous ferons référence à ce serveur sous le nom de web.
-
Un second serveur Ubuntu 20.04 propre où Redis sera installé – nous ferons référence à ce serveur sous le nom de redis.
Étape 1 — Installation du serveur Redis
Notre première étape consiste à installer le serveur Redis sur Ubuntu 20.04. Une fois cela fait, assurez-vous que le serveur est opérationnel sur notre redis Droplet.
Dans ce tutoriel, nous utiliserons les archives de paquets personnels (PPA). Nous vous conseillons vivement d'opter pour les PPA pour des raisons de sécurité. Par rapport à d'autres dépôts tiers, les PPA sont stables, faciles à installer et, surtout, le dépôt est conçu pour les utilisateurs d'Ubuntu. Le PPA vous permet d'obtenir la dernière version disponible d'un logiciel, même pour les logiciels que vous ne trouvez pas dans les dépôts officiels d'Ubuntu.
L'utilisation de PPA provenant d'une source non autorisée est à proscrire absolument. Assurez-vous d'obtenir les PPA uniquement auprès de sources authentiques et vérifiées. Vous pouvez ajouter le dépôt PPA à l'aide de la commande :
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Appuyez sur la touche Entrée pour confirmer. Après confirmation, nous mettrons à jour le cache du gestionnaire de paquets à l'aide de la commande suivante :
|
1 |
sudo apt-get update |
Ensuite, nous installerons Redis à l'aide de la commande :
|
1 |
sudo apt-get install redis-server |
Une fois la commande exécutée, Redis sera installé sur votre serveur. Testons l'installation à l'aide de la commande :
|
1 |
redis-cli ping |
Une fois que vous aurez lancé la commande, vous verrez une instance Redis s'exécuter sur le localhost sur le port 6379. De plus, il y aura une réponse nommée PONG. Si vous voyez cela, cela signifie que vous avez terminé avec succès la première étape. Pour un guide détaillé sur l'installation et la sécurisation de Redis, vous pouvez consulter notre tutoriel Comment installer et sécuriser Redis on Ubuntu 18.04.
Passons maintenant à l'étape suivante : la configuration de Redis.
Étape 2 — Configuration de Redis pour accepter les connexions externes
L'objectif principal de la configuration de Redis est d'accepter les connexions provenant de l'extérieur. Pourquoi ? Parce que Redis – par défaut, n'autorise les connexions que vers localhost, et il y a une restriction pour se connecter depuis n'importe où ailleurs. En termes plus simples, vous aurez accès depuis l'intérieur du serveur sur lequel vous avez installé Redis.
Tout d'abord, obtenez un aperçu détaillé de vos interfaces réseau à l'aide de la ifconfig commande :
|
1 |
sudo ifconfig |
Vous obtiendrez le résultat ci-dessous :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
eth0 Lien encap:Ethernet HWaddr 04:01:63:7e:a4:01 inet adr:188.166.77.33 Bcast:188.166.127.255 Masque:255.255.192.0 inet6 adr: fe80::601:63ff:fe7e:a401/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Métrique:1 RX paquets:3497 erreurs:0 rejetés:0 overruns:0 frame:0 TX paquets:3554 erreurs:0 rejetés:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX octets:4895060 (4.8 Mo) TX octets:619070 (619.0 Ko) eth1 Lien encap:Ethernet HWaddr 04:01:63:7e:a4:02 inet adr:10.133.14.9 Bcast:10.133.255.255 Masque:255.255.0.0 inet6 adr: fe80::601:63ff:fe7e:a402/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Métrique:1 RX paquets:8 erreurs:0 rejetés:0 overruns:0 frame:0 TX paquets:7 erreurs:0 rejetés:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX octets:648 (648.0 o) TX octets:578 (578.0 o) |
Au niveau de l'interface eth1, vous trouverez l' inet_addr. Ici, nous avons 10.133.14.9. Nous utiliserons cette adresse IP dans les étapes suivantes pour connecter le serveur redis depuis le serveur web.
Étape 3 — Liaison Localhost
Vous êtes libre d'utiliser l'éditeur de code de votre choix (Atom et Visual Studio Code sont les plus populaires).
Now, open the file /etc/redis/redis.conf et recherchez la ligne qui contient la définition bind. Vous devez ajouter votre adresse IP de réseau privé à la ligne :
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Il se peut que vous voyiez localhost, au lieu de 127.0.0.1. Pas d'inquiétude, il vous suffit d'ajouter votre adresse IP privée. Ensuite, redémarrez le service Redis pour appliquer les modifications. Utilisez la commande ci-dessous pour redémarrer le serveur redis :
|
1 |
sudo service redis-server restart |
Pour les utilisateurs qui ont installé Redis à l'aide de l'application en un clic, suivez la commande mentionnée ci-dessous pour redémarrer votre serveur :
|
1 |
sudo service redis restart |
Une fois que vous aurez redémarré le serveur redis, tout serveur présent sur le même réseau privé se connectera automatiquement à cette instance Redis, sans qu'il soit nécessaire de le faire individuellement.
Étape 4 — Configuration du mot de passe du serveur Redis
Vous pouvez ignorer cette étape si vous utilisez l'installation de Redis à des fins d'entraînement ou de formation. Cependant, la configuration du mot de passe pour le serveur redis est fortement recommandée si vous souhaitez ajouter une couche de sécurité supplémentaire à votre installation Redis. Modifions le même fichier de configuration que lors de l'étape précédente. Utilisez la commande suivante pour l'éditer :
|
1 |
sudo vim /etc/redis/redis.conf |
Décommentez la ligne qui contient requirepass, et définissez un mot de passe fort :
|
1 |
requirepass StrongPassword |
Redémarrez le service Redis pour appliquer les modifications que vous avez apportées. Utilisez la commande pour redémarrer :
|
1 |
sudo service redis-server restart |
Étape 5 — Test de connexion et d'authentification Redis
Dans cette étape, nous allons nous connecter au service Redis depuis l'intérieur de la machine redis afin de nous assurer que toutes les modifications apportées fonctionnent de manière transparente comme prévu. Pour vous connecter, utilisez la commande ci-dessous :
|
1 |
redis-cli -h 10.133.14.9 |
Ici, même si vous omettez de mentionner le nom d'hôte, cela fonctionnera toujours. Notre objectif principal est de nous assurer que le service Redis accepte les connexions de manière transparente :
|
1 |
10.133.14.9:6379> |
Il est possible que vous obteniez une erreur AUTH lors de la tentative d'accès aux données à partir du mot de passe défini :
|
1 |
10.133.14.9:6379> keys * |
Votre sortie ressemblera à ceci :
|
1 2 |
OUTPUT: (error) NOAUTH Authentication required. |
Pour vous authentifier, exécutez la commande AUTH avec le même mot de passe que vous avez défini dans le fichier /etc/redis/redis.conf :
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Ensuite, exécutez à nouveau la commande :
|
1 |
10.133.14.9:6379> keys * |
Cette fois, vous obtiendrez un OK en réponse au lieu d'une erreur. Vous obtiendrez la sortie ci-dessous :
|
1 2 |
OUTPUT: (empty list ou set) |
La sortie empty list ou set signifie que le serveur Redis est vide. C'est parce que nous n'avons pas encore configuré le serveur web comme gestionnaire de session.
Note : Avant de continuer, assurez-vous que la session SSH est ouverte et connectée à redis-cli. Dans les étapes suivantes, nous reviendrons à l'invite redis-cli pour vérifier si les données de session ont été correctement stockées après avoir apporté les modifications nécessaires au serveur web.
Étape 6 — Installation de l'extension Redis sur le serveur Web
Les étapes suivantes doivent être exécutées sur le serveur web. Nous devons installer l'extension PHP Redis pour que PHP puisse se connecter au serveur Redis.
Tout d'abord, mettez à jour le cache de votre gestionnaire de paquets en exécutant la commande :
|
1 |
sudo apt-get update |
Ensuite, installez le paquet php5-redis :
|
1 |
sudo apt-get install php5-redis |
Vous êtes prêt à vous connecter à Redis.
Étape 7 — Configuration de Redis comme gestionnaire de session par défaut sur le serveur Web
PHP dispose d'un gestionnaire de session par défaut. Dans cette étape, nous allons éditer le fichier php.ini sur le serveur web pour modifier les paramètres par défaut. L'emplacement du fichier php.ini dépend de la pile actuelle :
-
Pour une pile LAMP sur Ubuntu 20.04, utilisez : /etc/php5/apache2/php.ini.
-
Pour une pile LEMP sur Ubuntu 20.04, le chemin est généralement /etc/php5/fpm/php.ini.
Si vous n'êtes pas sûr de l'emplacement de votre fichier principal php.ini, aidez-vous de la fonction phpinfo(). Placez le code suivant dans un fichier nommé info.php à l'intérieur de votre répertoire racine web :
|
1 2 |
<?php phpinfo(); |
Lorsque vous essayez d'accéder au script depuis votre navigateur, recherchez la ligne contenant « Loaded Configuration File ». Vous trouverez l'emplacement exact du fichier principal php.ini chargé. Assurez-vous de supprimer le fichier info.php car il contient tout le contenu sensible de votre environnement.
Après cela, ouvrez le fichier php.ini et recherchez la ligne contenant session.save_handler. La valeur par défaut sera files, assurez-vous de la remplacer par redis.
Sur les environnements LAMP :
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
Sur les environnements LEMP :
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Ensuite, décommentez la ligne session.save_path et modifiez la valeur pour qu'elle contienne la chaîne de connexion Redis. Le contenu doit respecter le format suivant :
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Utilisez le mot de passe que nous avons configuré à l' Étape 4.. Si vous n'utilisez pas le mot de passe défini, fournissez le paramètre auth lors de la configuration de Redis. Maintenant, sauvegardez le fichier et redémarrez le service php le service sur les deux environnements.
Sur les LAMP environnements :
|
1 |
sudo service apache2 restart |
Sur les LEMP environnements :
|
1 |
sudo service php5-fpm restart |
Étape 8 — Tester la gestion des sessions Redis
Dans la dernière étape, nous avons besoin d'un script ou d'une application PHP pour nous assurer que vos sessions sont désormais gérées par Redis. Nous utiliserons un script simple qui implémente un compteur – chaque fois que vous rechargez la page, le nombre affiché est incrémenté.
Créez un fichier nommé demo.php sur le web serveur et conservez-le dans le dossier racine de vos documents :
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Ensuite, modifiez le /usr/share/nginx/html pour refléter le chemin racine de vos documents :
|
1 2 3 4 5 6 7 |
<?php //compteur simple pour tester les sessions. devrait s'incrémenter à chaque rechargement de page. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
Ensuite, vous devez pointer votre navigateur vers http://web/demo.php pour accéder au script. Le programme incrémentera le nombre à chaque fois que vous rechargerez la page.
Maintenant, vous aurez des informations de session stockées sur le serveur Redis. Pour vérifier, vous devez retourner à votre session SSH sur la redis machine en utilisant le redis-cli. Récupérez à nouveau le contenu avec keys *:
|
1 |
10.133.14.9:6379> keys * |
Vous verrez la sortie ci-dessous :
|
1 2 |
SORTIE: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
La sortie vérifie que toutes les informations sont stockées de manière sécurisée sur le redis serveur. Si vous souhaitez connecter des serveurs web supplémentaires, vous pouvez procéder de la même manière.
Conclusion
Redis est une base de données NoSQL qui permet de stocker de nombreuses données non structurées. Très peu de bases de données peuvent se comparer aux fonctionnalités et à la simplicité du redis serveur. Sa popularité croissante en fait continuellement un incontournable avec peu de substituts par rapport à ses larges fonctionnalités.
Pour approfondir vos connaissances sur les applications PHP et leur utilisation, vous pouvez consulter les tutoriels suivants sur notre blog :
- Déployer une application PHP sur un cluster Kubernetes avec Ubuntu 18.04
- Installer phpBB sur Ubuntu 20.04
- Installer et sécuriser phpMyAdmin sur Ubuntu 18.04
Bon développement !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.