前段时间,旧的Redis服务器到期了,于是重新买了个新的服务器,配置Redis。
重装Redis,参考《Redis入门指南》,各种注意事项都有,比较完整。关键点在 初始化脚本redis_init_script

总体分为:
下载安装 ==》 复制修改脚本、复制修改配置文件 ==》 启动

1.1 下载安装Redis

1.1.1

首先创建一个目录,用于存放Redis安装包,可以放在 /usr/local/redis_package/ 目录下,因此可以在 /usr/local/redis_package/ 目录下执行以下命令

wget http://download.redis.io/redis-stable.tar.gz
tar xzf redis-stable.tar.gz
cd redis-stable
make

接下来输入:

make install

自动生成新的目录 /usr/local/bin/
自动把Redis的许多可执行程序,复制/usr/local/bin/ 中。

1.1.2

可能遇到报错

cd hiredis && make static
make[3]: Entering directory '/usr/local/redis-4.0.10/deps/hiredis'
gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
make[3]: gcc: Command not found
make[3]: *** [Makefile:156: net.o] Error 127
make[3]: Leaving directory '/usr/local/redis-4.0.10/deps/hiredis'
make[2]: *** [Makefile:46: hiredis] Error 2
make[2]: Leaving directory '/usr/local/redis-4.0.10/deps'
make[1]: [Makefile:180: persist-settings] Error 2 (ignored)
    CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [Makefile:228: adlist.o] Error 127
make[1]: Leaving directory '/usr/local/redis-4.0.10/src'
make: *** [Makefile:6: all] Error 2

是因为不包含GCC(GNU Compiler Collection),

Linux最小安装默认是不安装C++编译环境的,所以需要安装C++编译环境

执行代码:

yum install -y gcc

接着报错:

LINK redis-server
cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
make[1]: *** [Makefile:199: redis-server] Error 1
make[1]: Leaving directory '/usr/local/redis-4.0.10/src'
make: *** [Makefile:6: all] Error 2

如果GCC已经安装完毕,输入以下命令:

make distclean

之后重新make编译就可以了。

1.2 启动和停止Redis

1.2.1 启动Redis

1. 直接启动
直接输入:

redis-server

即可启动Redis。

Redis服务器默认会使用6379端口,通过–port 参数可自定义端口号:

redis-server --port 1234

2. 通过初始化脚本启动Redis
在Redis源代码目录(本文中是 /usr/local/redis_package/redis_stable/)的utils文件夹中,有一个名为redis_init_script的初始化脚本文件 redis_init_script 的初始化脚本文件。

注:初始化脚本中提到了 6379.conf 配置文件 的路径。

内容如下:

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO

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

我们需要配置Redis的运行方式和持久化文件、日志文件的存储位置等。
(1)配置初始化脚本
将初始化脚本复制到 /etc/init.d/ (CentOS每次开机,都会执行该目录下的文件);文件名为 redis_端口号 ,端口号表示要让Redis监听的端口号,然后修改脚本第6行的REDISPORT变量的值为同样的端口号。

(2)创建新目录

目录名

说明

/etc/redis

存放Redis的配置文件

/var/redis/端口号

存放Redis的持久化文件

输入:

mkdir /etc/redis/


mkdir /var/redis/
mkdir /var/redis/端口号/

(3)修改配置文件
将配置文件模板(本文中,是在 /usr/local/redis_package/redis-stable/ 目录下的 redis.conf 文件),
复制到 /etc/redis/ 目录中,以端口命名(如6379.conf),然后按照下表的参数进行编辑:

参数


说明

daemonize

yes

使Redis以守护进程模式运行

pidfile

/var/run/redis_端口号.pid

设置Redis的PID文件位置

port

端口号

设置Redis监听的端口号

dir

var/redis/端口号

设置持久化文件存放位置

现在可以使用

/etc/init.d/redis_端口号 start

来启动Redis了,可以使用以下命令使Redis随系统自动启动:

chkconfig --add redis_6379     #CentOS系统下的命令

sudo update-rc.d redis_6379    #Ubuntu系统下的命令

1.2.2 停止Redis

输入:

redis-cli SHUTDOWN

如果提示没权限,则需要执行:

redis-cli -a Redis登录密码      #先登录Redis服务器获取权限

SHUTDOWN                        #关闭Redis服务器