XStack

Deep into details

0%

Redis安装与服务配置

快速跑起来#

  1. 官网下载源码包
  2. 解压安装: tar zxvf redis-3.2.8.tar.gz
  3. 进入目录: cd redis-3.2.8/
  4. 编译: make
    编译完成后, 最重要的两个文件是: src目录里面的redis-server redis-cli两个文件, 把这个文件拷贝到PATH中即可运行.
  5. 简陋地运行一下: src/redis-server redis.conf 命令后指定配置文件即可跑起来

更好的封装#

参照Nginx的形式, 做了如下的处理:

  1. 创建主目录: sudo mkdir /usr/local/redis
  2. 主目录内的目录结构:
  3. bin - 主要存放redis-server redis-cli两个可执行文件, 把这个目录放到PATH中即可(我是图方便直接修改了/etc/profile文件) 按照标准, 应该区分sbin和bin目录, 就不再找麻烦了吧
  4. conf - 主要存放配置文件(复制、修改自源码目录下的redis.conf这个文件)
    按照需要修改端口号,监听地址(0.0.0.0),logfile路径,pidfile路径, daemonize yes, dir /usr/local/redis/, dbfilename dump.rdb
  5. logs - 把日志输出到这里(logs/redis.log)
  6. redis.pid(文件 - 保存redis的pid)
  7. dump.rdb(文件 - 保存redis数据)
  8. 作为服务启动:
    复制如下内容到/etc/init.d/redis, 里面的前两行注释是给chkconfig使用的, 之后的启动命令就是以www用户启动服务(sudo -u www $EXEC $CONF)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    # chkconfig:   2345 90 10
    # description: Redis is a persistent key-value database
    PATH=/usr/local/bin:/sbin:/usr/bin:/bin

    REDISPORT=6378
    EXEC=/usr/local/redis/bin/redis-server
    REDIS_CLI=/usr/local/redis/bin/redis-cli

    PIDFILE=/usr/local/redis/redis.pid
    CONF="/usr/local/redis/conf/redis.conf"

    case "$1" in
    start)
    if [ -f $PIDFILE ]
    then
    echo "$PIDFILE exists, process is already running or crashed"
    else
    echo "Starting Redis server..."
    sudo -u www $EXEC $CONF
    fi
    if [ "$?"="0" ]
    then
    echo "Redis is running..."
    fi
    ;;
    stop)
    if [ ! -f $PIDFILE ]
    then
    echo "$PIDFILE does not exist, process is not running"
    else
    PID=$(cat $PIDFILE)
    echo "Stopping ..."
    $REDIS_CLI -p $REDISPORT -a 123wujiecao SHUTDOWN
    while [ -x ${PIDFILE} ]
    do
    echo "Waiting for Redis to shutdown ..."
    sleep 1
    done
    echo "Redis stopped"
    fi
    ;;
    restart|force-reload)
    ${0} stop
    ${0} start
    ;;
    *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
    exit 1
    esac
  9. 启停命令service redis startservice redis stop
  10. 注册为启动命令: sudo chkconfig --add redis
    检查是否成功: chkconfig --list redis, 如果返回类似redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off的结果就说明成功了

PS: 强制关闭进程#

遇到一个颇尴尬的问题: 启动后, 由于配置文件中没有指定dir /usr/local/redis/, 导致redis关闭的时候写文件时没有权限, 就不能完成关闭, 就怎么都不能关闭服务, 只能强制杀死进程:sudo kill -9 <pid>