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,
daemonize yespour exécuter Redis en tant que Deamon.stop-writes-on-bgsave-error no, Redis s'arrête en cas d'échec et nécessite un redémarrage manuel. En utilisant ce paramètre, Redis ne s'arrêtera pas en cas d'échec.maxmemory 70M, la RAM est limitée sur un RaspberryPi, donc 70 Mo suffisent pour la plupart des besoins. Si on a besoin de plus de mémoire, ajuster ce paramètre ultérieurement.
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.
