AddThis Smart Layers

вторник, 10 июня 2014 г.

Как автоматически запускать Redis при запуске сервера

После того как мы установили и настроили сервис кеширования 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

Вот, собственно и вся наука.
Теперь для запуска или остановки сервиса Redis в Linux CentOS можно использовать следующую команду
service redis_6379 stop
service redis_6379 start

Комментариев нет :

Отправить комментарий