CentOS 7 下安装Redis-6.0.6 & 常见错误解决
本文主要介绍在CentOS 7下安装Redis-6.0.6的详细安装步骤,以及一些常见安装遇到的问题原因及解决过程,起初本人参照官方文档在纯净Centos7下进行安装,遇到各种问题,查阅资料按步骤解决并总结过程。
一.整理后完整安装步骤
shell > yum -y install gcc tcl
shell > yum -y install centos-release-scl
shell > yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
shell > echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
shell > source /etc/profile
shell > mkdir /usr/common
shell > wget http://download.redis.io/releases/redis-6.0.6.tar.gz
shell > tar xzf redis-6.0.6.tar.gz
shell > mv redis-6.0.6 /usr/local/redis-6.0.6
shell > cd /usr/local/redis-6.0.6/deps/jemalloc/
shell > ./configure
shell > cd /usr/local/redis-6.0.6
shell > make
shell > make test
shell > src/redis-server &
shell > src/redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379>
二.过程步骤
先上完整安装步骤shell ,可直接参照完成Redis安装,启动
shell > mkdir /usr/common
shell > wget http://download.redis.io/releases/redis-6.0.6.tar.gz
shell > tar xzf redis-6.0.6.tar.gz
shell > mv redis-6.0.6 /usr/local/redis-6.0.6
shell > cd /usr/local/redis-6.0.6
shell > yum -y install gcc
shell > cd /usr/local/redis-6.0.6/deps/jemalloc/
shell > ./configure
shell > cd /usr/local/redis-6.0.6
shell > yum -y install centos-release-scl
shell > yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
shell > echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
shell > source /etc/profile
shell > cd /usr/local/redis-6.0.6
shell > make
shell > yum -y install tcl
shell > make test
shell > src/redis-server &
shell > src/redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379>
三.步骤拆解 & 解释
1.软件安装包下载
shell > mkdir /usr/common
shell > wget http://download.redis.io/releases/redis-6.0.6.tar.gz
shell > tar xzf redis-6.0.6.tar.gz
shell > mv redis-6.0.6 /usr/local/redis-6.0.6
shell > cd /usr/local/redis-6.0.6
2.前置依赖安装 & 环境配置
(1)安装 gcc
shell > yum -y install gcc
执行make操作需要依赖 gcc ,否则提示如下错误
make[3]: cc: Command not found
make[3]: *** [net.o] Error 127
make[3]: Leaving directory `/usr/local/redis-6.0.6/deps/hiredis'
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/usr/local/redis-6.0.6/deps'
make[1]: [persist-settings] Error 2 (ignored)
CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/local/redis-6.0.6/src'
make: *** [all] Error 2
(2)配置jemalloc
shell > cd /usr/local/redis-6.0.6/deps/jemalloc/
shell > ./configure
否则make提示如下错误:
[root@iZ2zedll6n6czo68sfh0mjZ redis-6.0.6]# make
cd src && make all
make[1]: Entering directory `/usr/local/redis-6.0.6/src'
CC Makefile.dep
make[1]: Leaving directory `/usr/local/redis-6.0.6/src'
make[1]: Entering directory `/usr/local/redis-6.0.6/src'
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
#include <jemalloc/jemalloc.h>
^
compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/local/redis-6.0.6/src'
make: *** [all] Error 2
(3)升级gcc 版本
shell > yum -y install centos-release-scl
shell > yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
否则make提示如下错误:
server.c:5191:24: error: ‘struct redisServer’ has no member named ‘masterhost’
if (!server.masterhost) {
^
server.c:5201:19: error: ‘struct redisServer’ has no member named ‘supervised_mode’
if (server.supervised_mode == SUPERVISED_SYSTEMD) {
^
server.c:5208:15: error: ‘struct redisServer’ has no member named ‘maxmemory’
if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {
^
server.c:5208:39: error: ‘struct redisServer’ has no member named ‘maxmemory’
if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {
^
server.c:5209:176: error: ‘struct redisServer’ has no member named ‘maxmemory’
serverLog(LL_WARNING,"WARNING: You specified a maxmemory value that is less than 1MB (current value is %llu bytes). Are you sure this is what you really want?", server.maxmemory);
^
server.c:5212:31: error: ‘struct redisServer’ has no member named ‘server_cpulist’
redisSetCpuAffinity(server.server_cpulist);
(4)配置gcc环境信息
shell > echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
shell > source /etc/profile
(5)编译安装make
shell > make
(6) 安装tcl
shell > yum -y install tcl
否则执行make test 提示如下错误
[root@iZ2zedll6n6czo68sfh0mjZ redis-6.0.6]# make test
cd src && make test
make[1]: Entering directory `/usr/local/redis-6.0.6/src'
CC Makefile.dep
make[1]: Leaving directory `/usr/local/redis-6.0.6/src'
make[1]: Entering directory `/usr/local/redis-6.0.6/src'
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory `/usr/local/redis-6.0.6/src'
make: *** [test] Error 2
(7)后台启动redis 并进行测试
shell > src/redis-server &
shell > src/redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379>