暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux平台Redis安装总结

DBA闲思杂想录 2021-08-14
1011

本文测试验证的操作系统为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编译时,如果提示"It’s a good idea to run 'make test' "则代表编译安装成功。

创建普通用户

# 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 -lrttotal 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-aofredis-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 0drwx------. 2 redis redis 194 Aug 11 14:21 bindrwx------. 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。如上所示。

默认情况下,如果没有指定“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。

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用户启动,那么最好切换到redis有权限访问的目录,然后执行上面shell命令。否则会遇到“Can't chdir to './': Permission denied”这类错误


验证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


文章转载自DBA闲思杂想录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论