2014年3月14日金曜日

Redisにパスワードを設定したときの起動スクリプトのサンプル


child is a rebel.

Redisにパスワードを設定したときは、デフォルトの起動スクリプトではシャットダウンができません。

Redisのパスワードを設定します。
# vim /etc/redis/6379.conf
requirepass password

Redisをリスタート。
# /etc/init.d/redis_6379 stop
# /etc/init.d/redis_6379 start

パスワードが設定された状態で、Redisをストップ。
# /etc/init.d/redis_6379 stop
Stopping ...
(error) ERR operation not permitted
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...

シャットダウンできない。。。
これは、シャットダウンするときにパスワードが必要な為ですね。
起動スクリプトを下記のように編集すると良いでしょう。
PASS="password"でパスワードを設定。
シャットダウン時に-a $PASSオプションを追加します。

# vim /etc/init.d/redis_6379

#/bin/sh
# chkconfig: 345 44 56
# description: redis_6379
#Configurations injected by install_server below....

EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis/6379.conf"
REDISPORT="6379"
PASS="password"
###############

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 -a $PASS 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



以上、簡単なメモでした。