Centos 7 安装 Redis 6

Centos 7 安装 Redis 6

别null了 2,447 2020-09-03

1. Redis安装和错误出现

1.1 下载redis

这里使用最新稳定版 https://redis.io/download

redis001.png]

1.2 正常安装步骤

yum install gcc
cd /usr/local
wget http://download.redis.io/releases/redis-6.0.7.tar.gz
tar -xvf redis-6.0.7.tar.gz
cd /usr/local/redis-6.0.7/
make && make install PREFIX=/usr/local/redis

1.3 错误信息:没有名为 ‘xxx’ 的成员

make[1]: *** [server.o] 错误 1
make[1]: 离开目录“/usr/redis-6.0.7/src”
make: *** [all] 错误 2

server.c:2402:11: 错误:‘struct redisServer’没有名为‘assert_file’的成员
     server.assert_file = "<no file>";
           ^
server.c:2403:11: 错误:‘struct redisServer’没有名为‘assert_line’的成员
     server.assert_line = 0;
           ^
server.c:2404:11: 错误:‘struct redisServer’没有名为‘bug_report_start’的成员
     server.bug_report_start = 0;
           ^
server.c:2405:11: 错误:‘struct redisServer’没有名为‘watchdog_period’的成员
     server.watchdog_period = 0;
           ^
server.c:2411:11: 错误:‘struct redisServer’没有名为‘lua_always_replicate_commands’的成员
     server.lua_always_replicate_commands = 1;
           ^
server.c: 在函数‘restartServer’中:
server.c:2464:32: 错误:‘struct redisServer’没有名为‘maxclients’的成员
     for (j = 3; j < (int)server.maxclients + 1024; j++) {
                                ^
server.c: 在函数‘adjustOpenFilesLimit’中:
server.c:2491:29: 错误:‘struct redisServer’没有名为‘maxclients’的成员
     rlim_t maxfiles = server.maxclients+CONFIG_MIN_RESERVED_FDS;
                             ^
server.c:2497:15: 错误:‘struct redisServer’没有名为‘maxclients’的成员
         server.maxclients = 1024-CONFIG_MIN_RESERVED_FDS;
               ^
server.c:2529:53: 错误:‘struct redisServer’没有名为‘maxclients’的成员
                 unsigned int old_maxclients = server.maxclients;
                                                     ^
server.c:2530:23: 错误:‘struct redisServer’没有名为‘maxclients’的成员
                 server.maxclients = bestlimit-CONFIG_MIN_RESERVED_FDS;
                       ^
server.c:2554:59: 错误:‘struct redisServer’没有名为‘maxclients’的成员
                     (unsigned long long) bestlimit, server.maxclients);
                                                           ^
server.c: 在函数‘checkTcpBacklogSettings’中:
server.c:2574:48: 错误:‘struct redisServer’没有名为‘tcp_backlog’的成员
         if (somaxconn > 0 && somaxconn < server.tcp_backlog) {
                                                ^
server.c:2575:171: 错误:‘struct redisServer’没有名为‘tcp_backlog’的成员
             serverLog(LL_WARNING,"WARNING: The TCP backlog setting of %d cannot be enforced because /proc/sys/net  

2. 解决办法

2.1 升级 gcc 版本

gcc -v                             # 查看gcc版本
yum -y install centos-release-scl  # 升级到9.1版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

# 以上为临时启用,如果要长期使用gcc 9.1的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

2.2 安装

再次执行编译

make && make install PREFIX=/usr/local/redis 
# 安装成功会出现:Hint: It's a good idea to run 'make test' ;)

2.3 make test 错误及解决

使用make test 测试一下

[root@localhost redis-6.0.7]# make test
# 测试成功时会显示: All tests passed without errors!

错误信息

cd src && make test
make[1]: 进入目录“/usr/redis-6.0.7/src”
    CC Makefile.dep
make[1]: 离开目录“/usr/redis-6.0.7/src”
make[1]: 进入目录“/usr/redis-6.0.7/src”
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: 离开目录“/usr/redis-6.0.7/src”
make: *** [test] 错误 2

解决办法

yum install tcl
make test

2.4 运行

[root@localhost redis-6.0.7]# /usr/local/redis-6.0.7/src/redis-server /usr/local/redis-6.0.7/redis.conf
32101:C 13 May 2020 17:01:48.248 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32101:C 13 May 2020 17:01:48.248 # Redis version=6.0.7, bits=64, commit=00000000, modified=0, pid=32101, just started
32101:C 13 May 2020 17:01:48.248 # Configuration loaded
32101:M 13 May 2020 17:01:48.249 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 6.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 32101
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

3.收尾工作

把源码包下的redis.conf文件复制到redis安装目录

cp /usr/local/redis-6.0.7/redis.conf /usr/local/redis/

3.1 后台启动

vim /usr/local/redis/redis.conf
# 将 daemonize no 改成 daemonize yes

3.2开机自启

# 1.创建 service 服务
vim /lib/systemd/system/redis.service

# 2.写入如下信息
[Unit]
Description=redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid # 对应 redis.conf 里面的 PIDFile
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis.conf # redis启动的具体命令
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

# 3.加入开机启动
systemctl enable redis.service
# 4.查看是否为自启动
systemctl is-enabled redis.service
# 5.启动
systemctl start redis
# 6.查看redis运行状态
systemctl status redis

3.3 设置密码、开启远程连接

# 修改 redis.conf
vim /usr/local/redis.conf

# 1. 设置密码
# 1.1 永久密码
# 		修改 redis.conf,找到注释掉的 requirepass foobared, 去除注释并将 foobared 修改为自己的密码
# 1.2 临时密码(不需要重启,重启后临时密码无效),进入redis-cli
127.0.0.1:6379> config set requirepass test123
# 1.2.1 查询密码:
redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted
# 1.2.2 密码验证:
redis 127.0.0.1:6379> auth test123
OK
# 1.2.3 再次查询:
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
 
# 2. 开启远程连接
# 修改 redis.conf,检查redis配置文件bind参数设置的ip,默是监听127.0.0.1,会导致外网无法访问,可以设置ip,也可以直接改成0.0.0.0,开放所有ip访问

# 重启 redis 以使配置生效
systemctl restart redis

# 3.开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent  # 开启 6379 端口
firewall-cmd --reload  # 重启防火墙

# Redis # Centos