Skip to content

CentOS 离线编译安装 Redis 6

检查是否有 gcc 程序

CentOS 系统下需要有 gcc 的环境才能编译。

shell
[root@localhost ~]# gcc -v
-bash: gcc: command not found

这说明当前系统中没有 gcc 依赖,下载下面列表中的安装包:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/

  • tcl-8.5.13-8.el7.x86_64.rpm
  • mpfr-3.1.1-4.el7.x86_64.rpm
  • libmpc-1.0.1-3.el7.x86_64.rpm
  • kernel-headers-3.10.0-1160.el7.x86_64.rpm
  • glibc-headers-2.17-317.el7.x86_64.rpm
  • glibc-devel-2.17-317.el7.x86_64.rpm
  • gcc-4.8.5-44.el7.x86_64.rpm
  • cpp-4.8.5-44.el7.x86_64.rpm

注:gcc 等需要考虑操作系统内核版本,centos 7 适合 gcc 4.8.5 版本,否则会出问题。

安装 gcc 等依赖

shell
# 注:有网的环境可通过 yum 安装
yum -y install gcc libc make tcl

以下是离线安装:

shell
# 进入gcc 所有相关 rpm 所在目录,这里是 /home/gcc/ 目录
[root@localhost ~]# cd /home/gcc

# rpm -ivh *.rpm --nodeps --force
# 不要像上面这样使用 --force 命令,如果下面的命令执行出错,肯定是有一些问题需要解决的。

# 安装rpm工具包
[root@localhost gcc]# rpm -ivh *.rpm --nodeps
warning: cpp-4.8.5-44.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mpfr-3.1.1-4.el7                 ################################# [ 13%]
   2:libmpc-1.0.1-3.el7               ################################# [ 25%]
   3:cpp-4.8.5-44.el7                 ################################# [ 38%]
   4:kernel-headers-3.10.0-1160.el7   ################################# [ 50%]
   5:glibc-headers-2.17-317.el7       ################################# [ 63%]
   6:glibc-devel-2.17-317.el7         ################################# [ 75%]
   7:gcc-4.8.5-44.el7                 ################################# [ 88%]
   8:tcl-1:8.5.13-8.el7               ################################# [100%]

# 安装成功后,查看 gcc 版本
[root@localhost gcc]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
[root@localhost gcc]#

安装 Redis

Redis 下载地址:https://redis.io/download/#redis-downloads

shell
#进入到压缩包所在目录
cd /home/redis
# 解压
[root@localhost redis]# tar -xvf redis-6.2.14.tar.gz
[root@localhost redis]# cd redis-6.2.14
# make 编译的过程有点长,耐心等待完成。
[root@localhost redis-6.2.14]# make

# 直到出现如下信息,并完成命令
Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory `/home/redis/redis-6.2.14/src'
[root@localhost redis-6.2.14]#

[root@localhost redis-6.2.14]# cd src
# 执行 make install 安装命令,并指定安装路径
[root@localhost src]# make install PREFIX=/usr/local/redis
    CC Makefile.dep

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

    INSTALL redis-server
    INSTALL redis-benchmark
    INSTALL redis-cli
[root@localhost src]#

修改 redis.conf 配置

shell
cd /usr/local/redis/bin
# 从解压的包里面复制配置文件 redis.conf 到 /usr/local/redis/bin/ 目录下
cp /home/redis/redis-6.2.14/redis.conf redis.conf

vi redis.conf

redis.conf 开发环境

shell
# 下面这一行最前面加上 # , 意思是注释掉这一行。解除 redis 只能本机访问的限制。
# 这个指明,只能在本地(运行的节点)访问redis
# 如果改为其他的,比如 bind * -::* 或者 bind *0.0.0.0 这都全网可访问了
# 一般开发环境需要允许外网访问 redis,因此,bind 要开放(注释掉或修改为 *0.0.0.0)
# 并且关闭保护模式,即 protected-mode 设置为 no
# bind 127.0.0.1 -::1

# protected-mode 从 yes 修改为 no。关闭保护模式。
# 保护模式是一个避免你在互联网(外网)访问redis的机制。
# 当启用保护模式,而且没有密码时,服务器只接受来自IPv4地址(127.0.0.1)、IPv6地址(::1)或Unix套接字本地连接。(没密码+保护模式启动=本地访问)
# 默认是 yes 开启的。(如果你要从外部访问它,甚至没有认证(不设置密码,不绑定可访问ip)的去访问, 那就弄成 no 自己负责!)
protected-mode no

# 端口号可以使用默认的 6379,也可以修改。
port 6379

# daemonize 默认为 no
# daemonize 从 no 修改为 yes。意思是否要用守护线程的方式启动。
# daemonize:yes:
# redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。
# 在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
# daemonize:no:
# 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
daemonize yes

# 如果需要密码,则可以设置一个你想要的密码。
# 开发环境开放了外网连接,为了安全起见,凡开放外网连接,就需要设置密码
requirepass 123456

# 设置最大内存
maxmemory 1GB

redis.conf 生产环境

shell
# 默认值,无需修改。现在只能本机访问。
bind 127.0.0.1 -::1

# 默认值,无需修改。现在只能本机访问。
protected-mode yes

# 端口号可以使用默认的 6379,也可以修改。
port 6379

# daemonize 从 no 修改为 yes。意思是否要用守护线程的方式启动。
daemonize yes

# 限制了只能本机访问,可以不需要密码。
# 如果需要密码,则去掉这个前面的 #,并设置一个你想要的密码。
# requirepass 123456

# 设置最大内存
maxmemory 1GB

指定配置文件,启动

shell
[root@localhost bin]# ./redis-server redis.conf
# 查看进程
[root@localhost bin]# ps -ef | grep redis
root      19264      1  0 15:48 ?        00:00:00 ./redis-server *:6379
root      19300   1667  0 15:48 pts/0    00:00:00 grep --color=auto redis
# 本机连接测试
[root@localhost bin]# ./redis-cli -h 127.0.0.1 -p 6379 -n 1
# 这里表示本地连接成功,输入 exit 即可退出 redis 命令界面。
127.0.0.1:6379[1]> exit
# 先停止服务
[root@localhost bin]# ./redis-cli shutdown

# 本机连接 - 带密码
# ./redis-cli -h 127.0.0.1 -a '123456' -p 6379 -n 1

设置开机自动启动

shell
# 创建一个 redis.service 文件
vi /usr/lib/systemd/system/redis.service
# 进入编辑模式后,输入下面一段内容,并保存,退出。
shell
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
# 如果你的安装路径不在 /usr/local/redis 则需要对应修改路径。
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后设置开机自动启动

shell
# 开机自动启动
systemctl enable redis.service

启动、停止、重启服务

shell
systemctl daemon-reload
# 开机自动启动
systemctl enable redis.service
# 启动redis服务
systemctl start redis.service
# 查看服务状态
systemctl status redis.service
# 停止服务
systemctl stop redis.service
# 取消开机自动启动(卸载服务)
systemctl disable redis.service