详解CentOS7下编译安装Redis5.x设置开机启动及修改端口(含redis需编译安装包和redis免编译安装包)

浪尽此生 提交于 2019-12-23 18:27:50

“前人栽树,后人乘凉”。对于初次接触redis的小白来说,网上有很多操作的教程可以进行参考,H哥在操作时,也查找过很多相关的讲解和说明,在实际操作中也对大牛的文章也赞不绝口。但对理解不深的小白来说,详细的讲解能帮助其更好的学习。

言归正传,接下来为大家讲解redis的安装及相关操作。

主要解决问题:

联网下载安装redis

离线安装redis

联网或离线安装免编译版redis

 

一,前置环境

Centos7

二,联网下载安装redis

对于有网络条件下,可以直接进行网上下载,解压并安装。

获取最新redis版本:https://redis.io/download ,下载Stable版本,当前最新版本5.0.7

1,下载安装包

[root@localhost ~]# cd /usr/local/ 
[root@localhost local]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz

如果出现-bash: wget: 未找到命令。说明命令没安装。执行yum安装。

[root@localhost ~]# yum install wget

2,解压安装包

[root@localhost local]# tar -xzf redis-5.0.7.tar.gz

3、进入解压的redis目录,通过make命令进行编译

[root@localhost local]# cd redis-5.0.7/ 
[root@localhost redis-5.0.7]# make

4,出现如下信息:

[root@localhost redis-5.0.7]# make
cd src && make all
make[1]: 进入目录“/usr/local/redis-5.0.7/src”
    CC Makefile.dep
make[1]: 离开目录“/usr/local/redis-5.0.7/src”
make[1]: 进入目录“/usr/local/redis-5.0.7/src”
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps && make distclean)
make[2]: 进入目录“/usr/local/redis-5.0.7/deps”
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
make[2]: 离开目录“/usr/local/redis-5.0.7/deps”
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W -Wno-missing-field-initializers >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua jemalloc)
make[2]: 进入目录“/usr/local/redis-5.0.7/deps”
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
(echo "" > .make-cflags)
(echo "" > .make-ldflags)
MAKE hiredis
cd hiredis && make static
make[3]: 进入目录“/usr/local/redis-5.0.7/deps/hiredis”
gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
make[3]: gcc:命令未找到
make[3]: *** [net.o] 错误 127
make[3]: 离开目录“/usr/local/redis-5.0.7/deps/hiredis”
make[2]: *** [hiredis] 错误 2
make[2]: 离开目录“/usr/local/redis-5.0.7/deps”
make[1]: [persist-settings] 错误 2 (忽略)
    CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127
make[1]: 离开目录“/usr/local/redis-5.0.7/src”
make: *** [all] 错误 2

出现错误了!怎么办?发现需要gcc环境,也就是说redis是需要gcc环境进行编译的。

所以安装gcc环境:

[root@localhost ~]# yum install gcc gcc-c++

提示信息如下:

已安装:
  gcc.x86_64 0:4.8.5-39.el7                                                                                           gcc-c++.x86_64 0:4.8.5-39.el7                                                                                          
作为依赖被安装:
  cpp.x86_64 0:4.8.5-39.el7 glibc-devel.x86_64 0:2.17-292.el7 glibc-headers.x86_64 0:2.17-292.el7 kernel-headers.x86_64 0:3.10.0-1062.9.1.el7 libmpc.x86_64 0:1.0.1-3.el7 libstdc++-devel.x86_64 0:4.8.5-39.el7 mpfr.x86_64 0:3.1.1-4.el7
完毕!

这时需要重新安装安装redis

删除原目录文件,并进入目录重新编译。

[root@localhost local]# rm -rf redis-5.0.7/
[root@localhost local]# tar -xzf redis-5.0.7.tar.gz
[root@localhost local]# cd redis-5.0.7/ 
[root@localhost redis-5.0.7]# make

当出现时,证明安装完成:

Hint: It's a good idea to run 'make test' ;)
make[1]: 离开目录“/usr/local/redis-5.0.7/src

5,执行make test ,验证是否编译成功,又报错了,错误提示是tcl的问题,需要安装tcl。

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

安装tcl

[root@localhost redis-5.0.7]# yum install -y tcl

6,当make test显示以下结果时,如果不幸的是结果出现了这个

!!! WARNING The following tests failed:

*** [err]: Active defrag big keys in tests/unit/memefficiency.tcl
Expected condition '$max_latency <= 120' to be true (165 <= 120)
Cleanup: may take some time... OK
make[1]: *** [test] 错误 1
make[1]: 离开目录“/usr/local/redis-5.0.7/src”
make: *** [test] 错误 2

又双叕出错了,这是什么错误呢?(这TM还让不让人安装了),别急

我们找到了这篇文章,redis make test时出现Active defrag big keys in tests/unit/memefficiency.tcl

链接:https://blog.csdn.net/qq_36711420/article/details/83416155

大概意思就是,你的服务器配置低,给你做了个警告。但只是警告而已。所以可以不用理会。

但如果正常运行会出现字样,说明make test成功。

7,运行make install命令,将命令安装到/usr/local/bin目录

[root@localhost redis-5.0.7]# make install
cd src && make install
make[1]: 进入目录“/usr/local/redis-5.0.7/src”

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: 离开目录“/usr/local/redis-5.0.7/src

8,启动服务

[root@localhost redis-5.0.7]# redis-server

出现如下界面,说明启动成功。

9,测试通过redis-cli命令连接redis,输入ping,redis会为我们返回PONG,同ip另开一个命令窗口。如下,说明成功。

[root@localhost ~]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 

10,停止服务,退出redis-cli,直接在系统命令行下输入redis-cli shutdown,前面启动服务的窗口会输出如下图信息:

[root@localhost ~]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
[root@localhost ~]# redis-cli shutdown
[root@localhost ~]#

而此时第一个命令窗口下会显示:

说明没问题。

三,设置redis配置文件

1,复制redis配置文件,将redis目录的redis.conf复制到/etc/redis目录下,以备使用

[root@localhost redis-5.0.7]# cd /etc/
[root@localhost etc]# mkdir redis
[root@localhost etc]# cd redis/
[root@localhost redis]# cp /usr/local/redis-5.0.7/redis.conf /etc/redis/redis.conf

2,编辑/etc/redis/redis.conf配置文件,设置可以远程登录,找到这行注释掉bind 127.0.0.1,如下图:

[root@localhost redis]# vi /etc/redis/redis.conf

编辑文本注释掉bind 127.0.0.1,大概第69行

# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# bind 127.0.0.1

3,修改默认端口6379,编辑/etc/redis/redis.conf配置文件,找到port 6379这一行,大概第92行。修改端口为6380或注释掉添加一行port 6380,如下图:

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
# port 6379
port 6380

4,同时修改pidfile大概第159行。将其改为pidfile /var/run/redis_6380.pid,修改目的是为了文件名上的端口和实际端口保持一致,方便通过服务方式启动、停止,如后面设置开机启动

# Creating a pid file is best effort: if Redis is not able to create it
# nothing bad happens, the server will start and run normally.
# pidfile /var/run/redis_6379.pid
pidfile /var/run/redis_6380.pid

5,设置redis服务后台运行,编辑/etc/redis/redis.conf配置文件,将daemonize设置为yes,大概第137行。如下图

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
# daemonize no
daemonize yes

6,设置访问密码,编辑/etc/redis/redis.conf配置文件,去掉requirepass行的注释或添加一行,大概第507行。如下图

# Require clients to issue AUTH <PASSWORD> before processing any other
# commands.  This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared
requirepass hrlee520.

注意:由于redis性能非常好,为防止暴力破解,密码需要配置的一大长串足够复杂的字符串,不考虑人是否能记住。

6,启动redis并指定配置文件为我们刚才修改的/etc/redis/redis.conf配置文件,服务启动后就不像前面那样输出redis图形信息的内容了。

[root@localhost redis]# redis-server /etc/redis/redis.conf
# oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
# Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=26, just started
# Configuration loaded
[root@localhost redis]#

7,测试

[root@localhost redis]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@localhost redis]# redis-cli -p 6380
127.0.0.1:6380>
127.0.0.1:6380> ping
(error) NOAUTH Authentication required.
127.0.0.1:6380> auth hrlee520.
OK
127.0.0.1:6380> ping
PONG
127.0.0.1:6380>

由于开启了远程访问,所以在其他电脑上也可以访问,通过-h指定ip,-p指定端口,如我redis服务器id为192.168.23.131:

[root@localhost src] ./redis-cli -p 6380 -h 192.168.23.131
192.168.23.131:6380> ping
(error) NOAUTH Authentication required.
192.168.23.131:6380> auth hrlee520.
OK
192.168.16.125:6380> ping
PONG
192.168.16.125:6380>

7、停止服务

四,设置redis开机启动

1,复制开机启动脚本,在redis目录的utils包下,有一个redis_init_script文件,我们复制到/etc/init.d/目录下,并将文件名改为redis。

[root@localhost redis]# cp /usr/local/redis-5.0.7/utils/redis_init_script /etc/init.d/redis

2,(非必须)修改/etc/redis/redis.conf文件名为/etc/redis/6380.conf,此修改非必须,不修改的话可以在步骤3指定配置文件路径

[root@localhost ~]# mv /etc/redis/redis.conf /etc/redis/6380.conf

3,编辑/etc/init.d/redis启动脚本,脚本说明如下:


#!/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=6380
# redis-server路径,由于我们是make install默认的路径,无需修改
EXEC=/usr/local/bin/redis-server
# redis-cli路径
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
# redis配置文件路径,默认/etc/redis/端口号.conf,所以我们步骤2修改了配置文件的名字,不要步骤2可以直接修改这里路径
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 ..."
                # 因为设置了密码,所以此处增加 -a 密码
                $CLIEXEC -p $REDISPORT -a 123456 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

详细解释如下:

4,测试启动脚本,启动服务systemctl start redis,停止服务systemctl stop redis

[root@localhost ~]# systemctl start redis
[root@localhost ~]# systemctl stop redis

5,设置开机启动

[root@localhost ~]# chkconfig --add redis

6,重启系统,redis服务即随系统启动。

[root@localhost init.d]# reboot

到此,第一部分redis联网安装及配置,开启启动都完成。

如果你的机器没有网络时,如何安装redis呢?

五,免编译版redis免编译安装

其实很简单,相对于联网版。由于免编译版不需要编译环境,所以满足于无gcc环境。也就不用使用gcc编译环境了。

1,将文件解压到如root下/,即可

2,跳过了安装环节,直接继续联网状态下配置文件部分即可。

六,离线版安装redis

离线版安装相对免编译版较复杂。如果没有免编译文件,只有redis的安装文件,需要额外配置运行环境,对于一个干净的服务器来说,需要先把环境搭建好,才能安装redis。

1,离线包准备

大家可以自己去搜索下载这些包。也可通过稍后我提供链接下载。

redis离线包

redis-5.0.7.tar.gz

gcc环境包

其他操作工具包

将所有rpm格式文件,放入一个文件夹package下。

创建package

[root@localhost]# cd home/
[root@localhost home]# mkdir package

执行安装命令

将这些包上传到待安装的系统中,执行安装命令:
rpm  -ivh  *.rpm --nodeps --force
或rpm -ivh *.rpm 

如不嫌麻烦,也可以按如下顺序执行安装命令:
rpm -ivh mpfr-3.1.1-4.el7.x86_64.rpm
rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm
rpm -ivh kernel-headers-3.10.0-862.el7.x86_64.rpm
rpm -ivh glibc-headers-2.17-222.el7.x86_64.rpm
rpm -ivh glibc-devel-2.17-222.el7.x86_64.rpm
rpm -ivh cpp-4.8.5-28.el7.x86_64.rpm
rpm -ivh gcc-4.8.5-28.el7.x86_64.rpm
.....

执行完后,就可以继续安装redis了。

3,安装redis完成后,可以直接继续联网状态下配置文件部分即可。

七,我将提供下载redis,大家可以下载下来,后续使用。

CSDN下载地址:https://download.csdn.net/download/hrlee520/12047500

当然对于无积分下载的小伙伴,提供了如下地址,也希望给与一点点支持。

原创不易,资源有价,知识无价!

免费下载地址

百度云:https://pan.baidu.com/s/1Az2gyMM3Rq2OW9n0-xU90A

微信搜索 “智数智媒”  关注公众号,查看文章,输入“redismake”,获取百度云提取码!更多免费资源,就在“智数智媒”!

遇到什么问题请及时联系我们!

https://img-blog.csdnimg.cn/20181211200148734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hybGVlNTIw,size_16,color_FFFFFF,t_70

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!