Установка Redis на Raspbian
Установка и настройка Redis
Качаем и распаковываем исходники:
wget http://download.redis.io/releases/redis-2.8.9.tar.gz
tar xzf redis-2.8.9.tar.gz
cd redis-2.8.9
make
Более свежие исходники можно взять с оф.сайта
Затем переносим файлы сервера из папки src в папку /usr/local/bin/
cd src
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/
Теперь создадим папки для конфигов
mkdir /etc/redis
mkdir /var/redis
mkdir /var/redis/6379
Папку 6379 так назвали потому что сервер Redis использует порт 6379
Далее, копируем скрипты инициализации и конфига
cp ../utils/redis_init_script /etc/init.d/redis_6379
cp ../redis.conf /etc/redis/6379.conf
Правим файл конфига
nano /etc/redis/6379.conf
Нужно найти следующие настройки:
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis_6379.log
dir /var/redis/6379
# maxmemory 128M
# maxmemory-policy volatile-lru
Автоматический запуск Redis
Для того чтобы сервис Redis запускался автоматически при перезагрузке сервера необходимо сделать его подсистемой (Subsystem) и добавить в список сервисов chkconfig. Посмотрим для начала на скрипт инициализации Redis. Тот самый, который при установке мы скопировали в папку /etc/init.d/. В нашем случае это будет /etc/init.d/redis_6379.
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
Первое что нужно сделать, это добавить в этот скрипт несколько строк в виде комментариев.
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
#
# chkconfig: 345 85 15
# description: Redis is a persistent key-value database
#
# processname: redis_6379
# config: /etc/redis/6379.conf
# pidfile: /var/run/redis_6379.pid
Надеюсь строки processname, config и pidfile пояснений не требуют. А вот параметры chkconfig могут быть интересны.
Итак, что же значит chkconfig: 345 85 15?
Первая группа цифр (345) означает уровни запуска (runlevels) данного сервиса. В принципе, для вебсервера достаточно лишь третьего уровня.
Цифра 85 означает приоритет запуска. Чем выше число тем ниже приоритет. Т.е. 85 - это значит что данный сервис будет запущен одним из последних. Цифра 15 означает приоритет деактивации. По той же логике, чем ниже цифра, тем выше приоритет. Т.е. в нашем случае Redis будет остановлен одним из первых.
И теперь остается последний шаг, добавить сам сервис Redis в список сервисов и установить ему уровень запуска.
chkconfig --add redis_6379
chkconfig --level 3 redis_6379 on
Если chkconfig ещё не стоит - устанавливаем
apt-get install chkconfig
Теперь для запуска или остановки сервиса Redis в Linux Raspbian можно использовать следующую команду
service redis_6379 stop
service redis_6379 start
Устанавливаем модуль в Python
pip3 install redis