Table of Contents

Construction de Redis sur Raspbian

Redis est un magasin clé-valeur utilisé par ntopng pour mettre en cache les données et les préférences. Redis s'exécute en tant que service externe. ntopng se connecte à Redis à l'aide de sockets. Ne pas se connecter à Redis entraînerait un dysfonctionnement de ntopng. Redis doit toujours être opérationnel et accessible pour garantir l'intégralité des fonctionnalités.

Construire les binaires à partir des sources

Télécharger les sources Redis.

wget http://download.redis.io/redis-stable.tar.gz

Désarchiver le package téléchargé.

tar xzf redis*

Aller dans le dossier redis/:

cd redis*

Construire maintenant Redis à partir de sources sur le Raspberry Pi avec les commandes suivantes.

sudo make
make test
sudo make install PREFIX=/usr

À ce stade, on a compilé Redis maintenant, il faut le rendre accessible à tous les utilisateurs:

sudo mkdir /etc/redis

Copier le fichier redis.conf là dedans

sudo cp redis.conf /etc/redis/

Il est temps de nettoyer

cd ..

Supprimer l'archive et le dossier avec cette commande.

sudo rm -Rf redis*

Installation et configuration

Créer un utilisateur sans répertoire personnel et sans possibilité de se connecter au système pour exécuter Redis en tant qu'utilisateur normal.

sudo adduser --system --group --disabled-login redis --no-create-home --shell /bin/nologin --quiet

Vérifier le fichier shadow pour voir si l'utilisateur Redis a été créé.

cat /etc/passwd | grep redis

Modifier le fichier de configuration Redis pour configurer la mise en cache.

sudo nano /etc/redis/redis.conf

Rechercher les entrées suivantes. certains sont déjà définis. Mais, il y a encore peu de valeurs à définir. Par exemple,

bind 127.0.0.1
port 6379
daemonize yes
stop-writes-on-bgsave-error no
rdbcompression yes
maxmemory 50M
maxmemory-policy allkeys-lru

À ce stade, on peut créer un script pour exécuter le serveur Redis.

Créer un répertoire à partir duquel ce script sera exécuté.

sudo mkdir -p /var/run/redis

Faire de l'utilisateur redis le propriétaire de ce répertoire.

sudo chown -R redis /var/run/redis

Daemonisation

Créer le scénario.

sudo nano /etc/init.d/redis-server

Coller ce qui suit.

#! /bin/sh
### BEGIN INIT INFO
# Provides: redis-server
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: redis-server - Persistent key-value db
# Description: redis-server - Persistent key-value db
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/redis-server
DAEMON_ARGS=/etc/redis/redis.conf
NAME=redis-server
DESC=redis-server

RUNDIR=/var/run/redis
PIDFILE=$RUNDIR/redis-server.pid

test -x $DAEMON || exit 0

if [ -r /etc/default/$NAME ]
then
. /etc/default/$NAME
fi

. /lib/lsb/init-functions

set -e

case "$1" in
  start)
echo -n "Starting $DESC: "
mkdir -p $RUNDIR
touch $PIDFILE
chown redis:redis $RUNDIR $PIDFILE
chmod 755 $RUNDIR

if [ -n "$ULIMIT" ]
then
ulimit -n $ULIMIT
fi

if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
then
echo "$NAME."
else
echo "failed"
fi
;;
  stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --retry forever/TERM/1 --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
then
echo "$NAME."
else
echo "failed"
fi
rm -f $PIDFILE
sleep 1
;;

  restart|force-reload)
${0} stop
${0} start
;;

  status)
status_of_proc -p ${PIDFILE} ${DAEMON} ${NAME}
;;

  *)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac

exit 0

Rendre ce script exécutable.

sudo chmod +x /etc/init.d/redis-server

Ajouter ce script à exécuter en tant que commande

sudo update-rc.d par défaut du serveur redis

Si tout est correctement configuré, le serveur Redis peut désormais être manipulé via cette commande

sudo service redis-server restart

Maintenant, vérifier l'état du serveur

redis-server -v

S'assurer qu'il écoute sur 127.0.0.1

netstat -antp

S'assurer que le processus Redis s'exécute en tant qu'utilisateur redis.

ps aux | grep redis

On peut maintenant profiter de l'installation du serveur de mise en cache Redis sur le Raspberry Pi.