developer's diary

最近はc#のエントリが多いです

redis 2.2.12のインストールメモ(amazon Linux)


【これがWebメーラーと驚くほどのUIを持ったWebアプリケーション「ukijs mail」】を動かすまでのメモ(あくまでデモが動くまで) - developer's diaryでインストールしたっきり。

インストールに必要な最低限のソフトウェアを導入

[ec2-user@ip-10-156-17-167 ~]$ sudo su -
[root@ip-10-156-17-167 ~]# yum -y install gcc make

インストールはDownload – Redisにある通り

[root@ip-10-156-17-167 ~]# wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz
[root@ip-10-156-17-167 ~]# tar xzvf redis-2.2.12.tar.gz
[root@ip-10-156-17-167 ~]# cd redis-2.2.12
[root@ip-10-156-17-167 redis-2.2.12]# make
[root@ip-10-156-17-167 redis-2.2.12]# make install

設定の変更

[root@ip-10-156-17-167 redis-2.2.12]# cp -p redis.conf  redis.conf.org
[root@ip-10-156-17-167 redis-2.2.12]# vi redis.conf
~以下の変更
#daemonize no
#↓
daemonize yes

#logfile stdout
#↓
logfile /var/log/redis.log

#loglevel verbose
#↓
loglevel notice

起動〜実行〜終了確認

[root@ip-10-156-17-167 redis-2.2.12]# redis-server redis.conf >サーバプログラムの起動
[root@ip-10-156-17-167 redis-2.2.12]# src/redis-cli >クライアントの起動
redis 127.0.0.1:6379> set test aaa > testに対してaaaを設定
OK
redis 127.0.0.1:6379> get test > testの内容を取得
"aaa"
redis 127.0.0.1:6379> exit > クライアントの終了
[root@ip-10-156-17-167 redis-2.2.12]# kill `cat /var/run/redis.pid ` > サーバのプログラム終了

init.dに起動スクリプト作成

nginxの起動スクリプトを元に作成してみた。

[root@ip-10-156-17-167 redis-2.2.12]# mkdir /etc/redis
[root@ip-10-156-17-167 redis-2.2.12]# mv redis.conf /etc/redis/
[root@ip-10-156-17-167 redis-2.2.12]# vi /etc/init.d/redis-server
/etc/init.d/redis-server
#!/bin/sh
#
# redis-server - this script starts and stops the redis-server daemon
#
# chkconfig:   - 85 15
# description:  redis-server
# processname: redis-server
# config:      cat /etc/redis/redis.conf
# config:      /etc/sysconfig/redis
# pidfile:     /var/run/redis.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

redis="/usr/local/bin/redis-server"
prog=$(basename $redis)

REDIS_CONF_FILE="/etc/redis/redis.conf"

[ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis

lockfile=/var/lock/subsys/redis

start() {
    [ -x $redis ] || exit 5
    [ -f $REDIS_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $redis $REDIS_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    stop
    start
}

reload() {
    echo -n $"Reloading $prog: "
    killproc $redis -HUP
    echo
}


rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}


case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    status|status_q)
        rh_$1
        ;;
    condrestart|try-restart)
        rh_status_q || exit 7
        restart
            ;;
    *)
        echo $"Usage: $0 {start|stop|reload|status|restart}"
        exit 2
esac
起動スクリプトに実行権限を付与
[root@ip-10-156-17-167 redis-2.2.12]# chmod +x /etc/init.d/redis-server

sysconfigも作成

起動スクリプトにnginxと同様
[ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis
を付けたので、ファイルを作成しておく

vi /etc/sysconfig/redis
/etc/sysconfig/redis
# redis-server sysconfig
REDIS_CONF_FILE="/etc/redis/redis.conf"

chkconfig の登録

[root@ip-10-156-17-167 redis-2.2.12]# /sbin/chkconfig --add redis-server
[root@ip-10-156-17-167 redis-2.2.12]# /sbin/chkconfig --level 345 redis-server on

rebootして起動するか確認

[root@ip-10-156-17-167 redis-2.2.12]# reboot
起動後接続してredisが動いてるか確認する
[ec2-user@ip-10-156-17-167 ~]$ sudo su -
[root@ip-10-156-17-167 ~]# cd redis-2.2.12
[root@ip-10-156-17-167 redis-2.2.12]# src/redis-cli