Comment installer et configurer Redis sur Ubuntu 16.04

introduction

Redis est un magasin clé-valeur en mémoire, reconnu pour sa flexibilité, ses performances et sa prise en charge linguistique étendue. Dans ce guide, nous montrerons comment installer et configurer Redis sur un serveur Ubuntu 16.04.

Conditions préalables

Pour compléter ce guide, vous devez avoir accès à un serveur Ubuntu 16.04. Vous aurez besoin d'un utilisateur non root avec les privilègessudo pour exécuter les fonctions administratives requises pour ce processus. Vous pouvez apprendre comment créer un compte avec ces privilèges en suivant nosUbuntu 16.04 initial server setup guide.

Lorsque vous êtes prêt à commencer, connectez-vous à votre serveur Ubuntu 16.04 avec votre utilisateursudo et continuez ci-dessous.

Installer les dépendances de construction et de test

Pour obtenir la dernière version de Redis, nous compilerons et installerons le logiciel à partir des sources. Avant de télécharger le code, nous devons satisfaire les dépendances de construction afin de pouvoir compiler le logiciel.

Pour ce faire, nous pouvons installer le méta-paquetbuild-essential à partir des référentiels Ubuntu. Nous téléchargerons également le packagetcl, que nous pouvons utiliser pour tester nos binaires.

Nous pouvons mettre à jour notre cache de paquetage localaptet installer les dépendances en tapant:

sudo apt-get update
sudo apt-get install build-essential tcl

Télécharger, compiler et installer Redis

Ensuite, nous pouvons commencer à construire Redis.

Télécharger et extraire le code source

Comme nous n’aurons pas besoin de conserver le code source que nous compilerons à long terme (nous pouvons toujours le télécharger à nouveau), nous allons construire dans le répertoire/tmp. Passons là maintenant:

cd /tmp

Maintenant, téléchargez la dernière version stable de Redis. Ceci est toujours disponible àa stable download URL:

curl -O http://download.redis.io/redis-stable.tar.gz

Décompressez l'archive en tapant:

tar xzvf redis-stable.tar.gz

Déplacez-vous dans la structure de répertoire source Redis qui vient d'être extraite:

cd redis-stable

Construire et installer Redis

Maintenant, nous pouvons compiler les binaires Redis en tapant:

make

Une fois les fichiers binaires compilés, exécutez la suite de tests pour vous assurer que tout a été construit correctement. Vous pouvez le faire en tapant:

make test

Cela prend généralement quelques minutes à exécuter. Une fois terminé, vous pouvez installer les fichiers binaires sur le système en tapant:

sudo make install

Configurez Redis

Maintenant que Redis est installé, nous pouvons commencer à le configurer.

Pour commencer, nous devons créer un répertoire de configuration. Nous utiliserons le répertoire classique/etc/redis, qui peut être créé en tapant:

sudo mkdir /etc/redis

Maintenant, copiez le fichier de configuration exemple Redis inclus dans l’archive source Redis:

sudo cp /tmp/redis-stable/redis.conf /etc/redis

Ensuite, nous pouvons ouvrir le fichier pour ajuster quelques éléments de la configuration:

sudo nano /etc/redis/redis.conf

Dans le fichier, recherchez la directivesupervised. Actuellement, il est défini surno. Puisque nous exécutons un système d'exploitation qui utilise le système d'initialisation de systemd, nous pouvons le changer ensystemd:

/etc/redis/redis.conf

. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

Ensuite, recherchez le répertoiredir. Cette option spécifie le répertoire que Redis utilisera pour vider les données persistantes. Nous devons choisir un emplacement sur lequel Redis aura l’autorisation d’écrire, ce qui n’est pas visible par les utilisateurs normaux.

Nous utiliserons pour cela le répertoire/var/lib/redis, que nous créerons dans un instant:

/etc/redis/redis.conf

. . .

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

. . .

Enregistrez et fermez le fichier lorsque vous avez terminé.

Créer un fichier unité Redis systemd

Ensuite, nous pouvons créer un fichier unité systemd afin que le système init puisse gérer le processus Redis.

Créez et ouvrez le fichier/etc/systemd/system/redis.service pour commencer:

sudo nano /etc/systemd/system/redis.service

À l'intérieur, nous pouvons commencer la section[Unit] en ajoutant une description et en définissant une exigence que la mise en réseau soit disponible avant de démarrer ce service:

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

Dans la section[Service], nous devons spécifier le comportement du service. Pour des raisons de sécurité, nous ne devons pas exécuter notre service en tant queroot. Nous devrions utiliser un utilisateur et un groupe dédiés, que nous appelleronsredis pour plus de simplicité. Nous allons créer ces momentanément.

Pour démarrer le service, il suffit d'appeler le binaireredis-server, pointé sur notre configuration. Pour l'arrêter, nous pouvons utiliser la commande Redisshutdown, qui peut être exécutée avec le binaireredis-cli. De plus, puisque nous voulons que Redis récupère des échecs lorsque cela est possible, nous définirons la directiveRestart sur «toujours»:

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

Enfin, dans la section[Install], nous pouvons définir la cible systemd à laquelle le service doit se connecter s'il est activé (configuré pour démarrer au démarrage):

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier lorsque vous avez terminé.

Créer l'utilisateur, le groupe et les répertoires Redis

Nous devons maintenant créer l’utilisateur, le groupe et le répertoire référencés dans les deux fichiers précédents.

Commencez par créer l'utilisateur et le grouperedis. Cela peut être fait en une seule commande en tapant:

sudo adduser --system --group --no-create-home redis

Maintenant, nous pouvons créer le répertoire/var/lib/redis en tapant:

sudo mkdir /var/lib/redis

Nous devrions donner à l'utilisateur et au grouperedis la propriété de ce répertoire:

sudo chown redis:redis /var/lib/redis

Ajustez les autorisations pour que les utilisateurs normaux ne puissent pas accéder à cet emplacement:

sudo chmod 770 /var/lib/redis

Démarrer et tester Redis

Nous sommes maintenant prêts à démarrer le serveur Redis.

Démarrer le service Redis

Démarrez le service systemd en tapant:

sudo systemctl start redis

Vérifiez que le service n'a pas d'erreur en exécutant:

sudo systemctl status redis

Vous devriez voir quelque chose qui ressemble à ceci:

Output● redis.service - Redis Server
   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago
  Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)
 Main PID: 3124 (redis-server)
    Tasks: 3 (limit: 512)
   Memory: 864.0K
      CPU: 179ms
   CGroup: /system.slice/redis.service
           └─3124 /usr/local/bin/redis-server 127.0.0.1:6379

. . .

Tester la fonctionnalité de l'instance Redis

Pour vérifier que votre service fonctionne correctement, connectez-vous au serveur Redis à l'aide du client de ligne de commande:

redis-cli

Dans l'invite suivante, testez la connectivité en tapant:

ping

Tu devrais voir:

OutputPONG

Vérifiez que vous pouvez définir les clés en tapant:

set test "It's working!"
OutputOK

Maintenant, récupérez la valeur en tapant:

get test

Vous devriez pouvoir récupérer la valeur que nous avons stockée:

Output"It's working!"

Quittez l'invite Redis pour revenir au shell:

exit

Enfin, relançons l’instance Redis:

sudo systemctl restart redis

Maintenant, connectez-vous à nouveau avec le client et confirmez que votre valeur de test est toujours disponible:

redis-cli
get test

La valeur de votre clé doit toujours être accessible:

Output"It's working!"

Retournez dans la coque une fois que vous avez terminé:

exit

Activer Redis pour démarrer au démarrage

Si tous vos tests ont fonctionné et que vous souhaitez démarrer Redis automatiquement au démarrage de votre serveur, vous pouvez activer le service systemd.

Pour ce faire, tapez:

sudo systemctl enable redis
OutputCreated symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.

Conclusion

Vous devriez maintenant avoir une instance Redis installée et configurée sur votre serveur Ubuntu 16.04. Pour en savoir plus sur la sécurisation de votre installation Redis, jetez un œil à nosHow To Secure Your Redis Installation on Ubuntu 14.04 (à partir de l'étape 3). Bien qu’il ait été conçu pour Ubuntu 14.04, il devrait également fonctionner pour 16.04 également.