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