前段时间,旧的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服务器