代码改变世界

Linux平台Redis安装总结

2021-08-13 12:11  潇湘隐者  阅读(872)  评论(0编辑  收藏  举报

本文测试验证的操作系统为CentOS Linux release 7.8.2003 (Core) Redis版本为redis-6.0.8。 敬请注意,如有不同,请以实际情况为准。

 

 

下载编译Redis 

# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar -xzvf redis-6.0.8.tar.gz
# cd redis-6.0.8
# make
# cd src && make install  #可选命令,如果你想将redis安装到/usr/local/bin下,可以执行该命令。一般不用此命令

 

注意redis执行了make install后,redis的可执行文件都会自动复制到 /usr/local/bin 录下

 

 

make编译时,如果提示"Its a good idea to run 'make test' "则代表编译安装成功。

 

 

clip_image001

 

 

创建普通用户

 

 

# groupadd redis
 
# useradd redis -g redis -s /sbin/nologin

 

创建目录存放redis命令和配置文件

 

 

我们将redis主目录放在/usr/local下面,当然,你可以将其放置在其他目录下,例如/home/redis

 

# mkdir -p /usr/local/redis/bin

# mkdir -p /usr/local/redis/etc

 

 

 

移动文件

 

#pwd
/tmp/redis-6.0.8
# mv redis.conf /usr/local/redis/etc/
# cd src/
# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel redis-trib.rb /usr/local/redis/bin
 
 
# cd /usr/local/redis/bin
# ls -lrt
total 57184
-rwxrwxr-x. 1 root root     3600 Sep 10  2020 redis-trib.rb
-rwxrwxr-x. 1 root root      735 Sep 10  2020 mkreleasehdr.sh
-rwxr-xr-x. 1 root root 11351968 Jul 27 14:46 redis-server
-rwxr-xr-x. 1 root root 11351968 Jul 27 14:46 redis-sentinel
-rwxr-xr-x. 1 root root  6727200 Jul 27 14:47 redis-cli
-rwxr-xr-x. 1 root root  6399120 Jul 27 14:47 redis-benchmark
-rwxr-xr-x. 1 root root 11351968 Jul 27 14:47 redis-check-rdb
-rwxr-xr-x. 1 root root 11351968 Jul 27 14:47 redis-check-aof
 
redis-server            redis服务器
redis-cli               redis命令行客户端
redis-benchmark         redis性能测试工具
redis-check-aof         aof文件修复工具,日志文件检测工(比如断电造成日志损坏,可以检测并修复)
redis-check-dump        rdb文件检查工具
redis-check-rdb         快照文件检测工具
redis-sentinel          Redis哨兵启动文件
redis-trib.rb           官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境

 

 

 

修改目录的Owner

 

 

# chown -R redis:redis /usr/local/redis/
# ls -lrt /usr/local/redis/
total 0
drwx------. 2 redis redis 194 Aug 11 14:21 bin
drwx------. 2 redis redis  40 Aug 11 14:27 etc

 

Redis安全&配置

 

1:在redis.conf配置文件文件中绑定本机IP

 

bind 127.0.0.1 192.168.xxx.xxx

 

如果服务器有多个IP,可限定Redis Server监听的IP;也可以通过Redis配置项bind,可同时绑定多个IP。如上所示。 

clip_image002

 

默认情况下,如果没有指定bind配置指令,Redis 会监听来自服务器上所有可用网络接口的连接。所以一般应该限定本机访问或特定IP访问。

 

 

2:指定日志记录级别

 

 

默认情况下,日志记录级别为 notice ,这个是生产环境的默认配置。可以根据具体需要调整日志记录级别。

 

3:配置log文件的地址

 

log文件位置,默认值为stdout,使用标准输出,默认后台模式会输出到/dev/null

 

# mkdir /var/log/redis

# chown -R redis:redis /var/log/redis/

 

logfile "/var/log/redis/redis.log"

 

注意:如果你设置了redis日志的路径,必须确保该路径已经存在。例如,当前案例,不存在这样的目录,那么我们先创建该目录,并将其owner修改为redis用户

 

# mkdir /var/log/redis

# chown -R redis:redis /var/log/redis 

 

 

4:后台启动的话需要修改redis.conf文件,daemonize no ---- >daemonize yes

 

clip_image003

 

 

5:修改默认端口

 

 

Redis服务端默认链接端口是6379,可以修改端口号,避免使用熟知端口,降低被初级扫描的风险。

 

 

port xxxxx

 

这个简单测试,使用端口6676

 

port 6676

 

 

6默认情况下,Redis是无需密码登录的。这意味着你无需通过密码验证就可以直接连接到Redis服务,这样其实是非常不安全的,所以建议设置密码验证。

 

 

注意:Redis因查询效率高,auth 这种命令每秒能处理 10w 次以上,简单的 Redis 密码极容易为攻击者暴破。所以建议设置一个超长(24位以上)的密码。

 

 

 

requirepass 75612a867ceeb452924c98778caa959c37120bfff6582aaad48298acbf320b28

 

 

7:尽量将Redis限制在内网使用,避免公网访问,另外设置 iptables 策略,仅允许指定的 IP 访问 Redis 服务。

 

$ iptables -A INPUT -s x.x.x.x -p tcp --dport xxxx -j ACCEPT

 

如果防火墙是firewalld,可以参考下面命令 

 

#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="xxx.xxx.xxx.xxx" port protocol="tcp" port="6676" accept"
 
#systemctl restart firewalld.service

 

8: 限制redis文件目录访问权限

 

设置redis的主目录权限为700

 

# chmod -R 700 /usr/local/redis/

 

如果redis配置文件独立于redis主目录,权限修改为600,因为Redis密码明文存储在配置文件中。 

 

# chmod 600 /usr/local/redis/etc/redis.conf 

 

此处案例中,我们将redis的日志放置在/var/log/redis目录下,所以也一并修改redis日志目录的访问权限

 

# chmod -R 700 /var/log/redis/

 

启动redis服务

 

 

禁止使用root用户启动redis,使用普通用户启动redis

 

 

如果以root用户启动的话,可以使用下面脚本,但是出于安全考虑,一般不建议使用root用户启动redis

 

#/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

 

 

我们使用redis用户启动Redis服务

 

#sudo -u redis /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

 

 

注意:如果以redis用户启动,有时候会遇到Can't chdir to './': Permission denied这类错误

 

  出现这个错误是因为我们没有修改参数dir的值(默认为./),而没有换到redis有权限访问的目录,然后执行上面shell命令。遇到权限问题。

 

clip_image004

 

 

验证Redis服务启动情况

 

 

# ps -ef | grep redis-server
 
redis    25258     1  0 14:49 ?        00:00:00 /usr/local/redis/bin/redis-server 127.0.0.1:6676
 
root     25282 25207  0 14:50 pts/0    00:00:00 grep --color=auto redis-server
 
 
 
#/usr/local/redis/bin/redis-cli -p 6676
 
127.0.0.1:6676> auth 75612a867ceeb452924c98778caa959c37120bfff6582aaad48298acbf320b28
 
OK
 
127.0.0.1:6676> ping
 
PONG