CentOS 8 安装 Redis 并设置允许远程连接
环境确认
gcc环境
由于Redis是用C语言开发的,所有要安装C语言的编译环境(gcc),首先确认系统中是否有gcc环境
gcc -v
如下提示代表没有安装gcc环境,它会提示你是否安装,输入y回车,会自动安装
也可以输入N,手动安装
yum install -y gcc
安装make工具,编译工具
yum install -y make
tcl 版本确认
因为后面make test 的时候要求 tcl最低8.5 所以先更新tcl的版本
yum install tcl
下载安装
下载reids
从官方下载redis到指定目录(先将安装包下载到临时目录)
wget -P /tmp http://download.redis.io/releases/redis-5.0.5.tar.gz
此时进入 tmp 文件夹下,会发现 有redis的压缩文件
进入 tmp 文件夹之后解压
tar -zxvf redis-5.0.5.tar.gz
进入解压出来的 redis 文件夹
cd redis-5.0.5
编译
make
之后会提示你用 make test 测试一下,执行之后最下面出现 [\o/ All tests passed without errors!] 代表编译成功
make test
安装
指定目录安装,我一般安装在opt下, opt 相当于windows 的program files文件夹,一般是安装第三方软件的地方
make install PREFIX=/opt/redis
启动
到redis安装目录下可以看到有redis-server,执行这个命令就可以在前台启动redis了
./redis-server
显然前台启动这种方式不是我们想要的,执行此命令就是测试一下redis是否启动正常。
此时可以使用 ctrl+c 组合键停止redis了,下面我们来设置后台启动。
redis.conf 这个是redis自带的配置文件,
这给文件存放在刚才解压的 /tmp/redis-5.0.5 文件夹内,将它复制到安装目录下
cp /tmp/redis-5.0.5/redis.conf /opt/redis/bin/
然后用vi 修改 redis.conf 文件,把 daemonize no 改为 daemonize yes
(小技巧,命令行下 /str 可以搜索内容, 然后按 n 搜搜下一项)
vi redis.conf
后台启动redis
./redis-server redis.conf
停止redis
./redis-cli shutdown
开启远程连接,设置密码
修改配置文件
接下来要修改 2-3 个节点,视情况而定。同样也是 redis.conf文件
节点1:
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
翻译:如果你确定你想要你的实例去监听所有连接
# JUST COMMENT THE FOLLOWING LINE.
翻译:仅仅只需要将下面一行注释即可
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
所以我们注释掉这一行就好了
# bind 127.0.0.1
注意:这样做能使所有的host都能去访问redis,在没有通过配置文件设置密码的情况下这种操作是十分危险的。 所以我的建议是:要么设置密码,要么指定能够访问的ip.指定能够访问的主机,只需增加一行 bind 主机ip 就OK了。
节点2:
设置密码:
#requirepass foobared
节点注释去掉,再将foobared换成你的密码。
requirepass password
注意:低版本的Redis只需要修改上面一个节点就好,但是高版本的Redis新增了protected-mode节点,如果你忽略我的建 议,既没有设置密码,也没有bind指定的ip。
换句话说:你在不设置密码的情况下,希望所有ip都能连接到Redis。那么你就要进行修改节点3关闭掉保护模式,否则修改节点1,节点2 就能实现远程访问了,没必要再进行节点3的修改了。
节点3:
# By default protected mode is enabled. You should disable it only if
保护模式是默认开启的,你应该关闭他仅仅在
# you are sure you want clients from other hosts to connect to Redis
你确信你想要其他主机的客户端去连接Redis
# even if no authentication is configured, nor a specific set of interfaces
即使没有authentication(相当于密码)被设置,也没有一组特定的连接
# are explicitly listed using the "bind" directive.
被bind指令明确指出
protected-mode yes
将yes改为no就行了
从官方说明我们可以知道,当保护模式开启时,如果没有设置密码,并且设置允许任意ip可以访问时,你是连接不上 Redis 的!当然我希望你仅仅做第一步就够了,尽量不要关闭掉保护模式。
开启防火墙,开放redis端口(6379)
查看防火墙状态
systemctl status firewalld
打开防火墙( 关闭防火墙 systemctl stop firewalld )
systemctl start firewalld
查看防火墙某个端口是否开放
firewall-cmd --query-port=6379/tcp
开放防火墙端口 6379
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重新启动防火墙
firewall-cmd --reload
启动redis
./redis-server redis.conf
启动/停止脚本
修改PID文件保存路径
修改redis默认保存pid文件的位置。
linux启动进程的时候会生成进程id并保存成 .pid文件保存在 /var/run 下,通过pid可查看当前的进程号;
同样编辑 redis.conf文件找到 pidfile /var/run/redis_6379.pid,一般把路径保存到redis安装目录下,方便查看,
改成 pidfile /opt/redis/bin/redis_6379.pid
创建停止redis脚本
cat>> redis-stop.sh
然后输入下列内容,输入完之后按 CTRL+D 保存
echo "stopping redis server ... "
kill -9 `cat /opt/redis/bin/redis_6379.pid`
创建启动redis脚本
cat>> redis-start.sh
然后输入下列内容,输入完之后按 CTRL+D 保存
./redis-stop.sh echo "starting redis servier ..." /opt/redis/bin/redis-server /opt/redis/bin/redis.conf /opt/redis/bin/redis-cli -p 端口号 -a 密码
修改文件权限
chmod 777 redis-start.sh
chmod 777 redis-stop.sh
运行脚本测试
启动
./redis-start.sh
停止
./redis-stop.sh