帮助中心
一步一步教你在AlmaLinux 9上安装Redis



Redis是一个流行的、开源的内存键值数据存储。它支持不同的数据结构,如Hash、Lists、Sets、Strings和更多。Redis被设计成只在可信的环境中运行,它可以被用作数据库、缓存和消息代理。Redis因其广泛的支持、高性能、高可用性和灵活性而广为人知。

你可以把Redis安装成独立的,用于小型部署。对于大型部署,他们提供额外的组件,如用于高可用性的Redis Sentinel和用于在多个Redis节点服务器上分割数据的Redis Cluster。

本教程将告诉你如何在AlmaLinux 9服务器上安装和配置Redis。此外,我们还将告诉你如何通过Redis ACL(访问控制列表)和Firewalld来保护Redis。

前提条件


要完成本教程,你必须具备以下条件:

  • 一台AlmaLinux服务器 9 - 本例使用主机名为 "alma-linux"、IP地址为 "192.168.5.21 "的AlmaLinux服务器。
  • 一个具有sudo/root管理员权限的非root用户。
  • 一个配置好的、已启动并运行的防火墙。


现在,让我们开始行动吧。

安装Redis


Redis是一个高性能、开源的数据存储,可以作为数据库、缓存、消息代理和流媒体引擎使用。Redis可以在大多数Linux发行版上使用,包括AlmaLinux。它可以通过默认的发行库来安装。

在安装Redis之前,运行下面的命令来重建软件包缓存并获得最新版本的软件包信息。

sudo dnf makecache


现在,运行下面的dnf命令来安装Redis。在提示时输入y,然后按ENTER键继续。

sudo dnf install redis



Redis安装完毕后,运行下面的systemctl命令,启动并启用Redis服务。

sudo systemctl start redis
sudo systemctl enable redis



最后,使用下面的命令验证Redis的服务状态。

sudo systemctl is-enabled redis
sudo systemctl status redis

下面的输出确认Redis正在运行并被启用,这意味着它将在系统启动时自动运行。



用Firewalld保护Redis


在这一节中,你将设置Firewalld来保护Redis的安装。而实现这一目标的最好方法是在firewalld上创建区域,并允许特定的网络/子网进入该服务。

运行以下命令,创建一个名为 "svcs "的新firewalld区域,然后将内部网络接口添加到其中。在这个例子中,Redis将在一个内部IP地址下的接口 "enp0s8 "上运行,你必须将你的接口添加到 "svcs "区域。

sudo firewall-cmd --new-zone=svcs --permanent
sudo firewall-cmd --zone=svcs --add-interface=enp0s8 --permanent

现在,运行以下命令,允许网络 "192.168.5.1/24 "访问 "svcs "区的端口。

sudo firewall-cmd --zone=svcs --add-source=192.168.5.1/24

之后,将Redis端口'6379/tcp'添加到'svcs'区域,然后将这些更改应用到firewalld中。

sudo firewall-cmd --zone=svcs --add-port=6379/tcp
sudo firewall-cmd --runtime-to-permanent



现在,使用下面的命令重新加载firewalld,以确保新的变化被应用到firewalld中。

sudo firewall-cmd --reload

最后,运行下面的命令,检查firewalld上的活动区域列表。你应该看到 "svcs "区是活动的。

sudo firewall-cmd --get-active-zones

现在你可以验证'svcs'区域中可用的规则列表。当成功时,你应该在 "端口 "部分看到Redis端口 "6379/tcp",在 "源 "中看到子网 "192.168.5.1/24"。

sudo firewall-cmd --list-all --zone=svcs


配置 Redis


在本节中,你将通过修改默认的Redis配置"/etc/redis/redis.conf "来配置Redis安装。

使用下面的nano编辑器命令打开Redis配置文件"/etc/redis/redis.conf"。

sudo nano /etc/redis/redis.conf

用服务器的内部IP地址改变'bind'参数的值。在这个例子中,Redis将在本地IP地址 "192.168.5.21 "上运行。

bind 192.168.5.21



现在,通过将参数的值改为'no'来禁用'protected-mode'。要允许从你的应用程序到Redis服务器的远程连接,你必须禁用 "protected-mode"。

protected-mode no



在AlmaLinux上,默认的服务管理器是 "systemd"。取消对'supervised'参数的注释,将默认值改为'systemd',以实现 Redis 与 systemd 的整合。

supervised systemd



最后,取消对'aclfile'参数的注释,通过文件启用Redis的ACL(访问控制列表)。自Redis v6以来,使用ACL是保护Redis安全的一种推荐方式,Redis支持不同的ACL使用方法,你可以通过Redis shell或定义的ACL文件创建ACL。这个例子将通过文件使用ACL。

aclfile /etc/redis/users.acl

启用ACL

完成后保存并关闭该文件。

现在,运行下面的命令来创建ACLs文件"/etc/redis/users.acl"。

touch /etc/redis/users.acl

之后,运行下面的命令,重启Redis服务,并应用你所做的改变。

sudo systemctl restart redis

这样一来,redis将以新的配置启动和运行。下一步你要做的是通过Redis CLI验证你的Redis配置。

使用下面的'redis-cli'命令连接到Redis服务器。在这个例子中,你将指定 Redis 服务器的 IP 地址。

redis-cli -h 192.168.5.21

登录后,运行以下命令以确保连接成功。当连接成功时,你应该期望看到输出 "test redis"。

PING "test redis"



接下来,运行以下查询,以获得当前Redis的配置。在这个例子中,你将检查'bind'、'supervised'和 protected-mode'的设置。

CONFIG GET bind
CONFIG GET supervised
CONFIG GET protected-mode

成功后,你应该得到与你之前的设置相匹配的配置。



最后,运行下面的ACL查询,得到Redis上可用的ACL列表。

ACL LIST

你应该期望看到这样的输出--默认的Redis安装带有ACL用户 "default",认证是 "nopass "或无密码登录,权限是 "+@all",它允许 "default "用户执行任何Redis查询。



在这一点上,你现在已经完成了Redis的基本配置。在下一步,你将深入到Redis ACL(访问控制列表)的配置,以确保Redis安装的安全性。

用ACL(访问控制列表)保证Redis的安全


自Redis 6.x以来,确保Redis安全的最好方法是实施ACL(访问控制列表)。这允许你在Redis服务器上设置用户和权限,这可以淘汰旧版Redis上的'requirepass'和'rename-command'参数。

你可以用两种不同的方法在Redis上设置ACL:

  • Setting up ACL via ACL command\通过ACL命令设置ACL
  • 通过外部ACL文件设置ACL

利用你配置的Redis服务器,你将通过外部ACL文件设置Redis的ACL。

首先,使用以下nano编辑器命令打开ACL文件"/etc/redis/users.acl"。

sudo nano /etc/redis/users.acl

插入以下配置,为Redis创建两个用户。

user alice on -DEBUG +@all ~* >AliceP4ssw0rd
user bob on +@all -@dangerous ~* >BobP4ssw0rd

保存文件,完成后退出编辑器。



通过这个配置,你将创建两个用户:

  • 用户alice,密码是'AliceP4ssw0rd',允许执行所有的查询'+@all',除了DEBUG'-DEBUG',也允许对所有可用的键值'~*'运行查询。
  • 一个用户bob,密码为'BobP4ssw0rd',并允许用户bob执行除'-@dangerous'以外的所有查询'+@all'。命令类别'-@dangerous'包括FLUSHALL, MIGRATE, RESTORE, SORT, KEYS, CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF, 以及更多。此外,该用户被允许对Redis服务器上所有可用的键值进行查询。

获取Redis上的全部命令类别列表。

现在,运行下面的systemctl命令,重启Redis服务并应用这些变化。

sudo systemctl restart redis

一旦Redis重启,使用下面的redis-cli命令连接到Redis服务器。

redis-cli -h 192.168.5.21

一旦登录,运行下面的ACL查询来检查Redis上的可用用户列表。

ACL LIST

在这一点上,你应该期望看到三个用户alice、Bob 和 default。



你也可以用下面的查询来验证Redis上的详细用户。

ACL GETUSER alice
ACL GETUSER bob

你应该看到,用户alice被允许在Redis上执行所有可用的命令,命令组为'+@all'。



至于用户bob,你可以看到允许的命令'+@all',但也禁用了命令组'dangerous'。



禁用默认的Redis用户

随着新用户alice和bob的创建,你必须使用下面的查询禁用'默认'用户。

ACL SETUSER default OFF

然后,使用下面的命令再次检查Redis上的可用用户列表。

ACL LIST

你应该期待用户 "default "的状态为关闭或禁用,像这样:



按Ctrl+d退出Redis外壳。

之后,使用下面的命令再次登录到Redis。

redis-cli -h 192.168.5.21

然后,输入以下PING查询以验证当前的连接。

PING

在禁用 Redis "默认 "用户的情况下,你应该得到类似以下的错误 - 你必须是经过认证的用户才能运行查询。



验证用户alice

接下来,你将验证你所创建的新的Redis用户alice和bob。

运行下面的命令来验证用户 "alice"。如果成功,你应该得到一个输出'OK'。

AUTH alice AliceP4ssw0rd

现在运行下面的查询,以确保你通过用户alice认证到Redis。

PING
ACL WHOAMI

你应该期望看到消息PONG,并以用户alice的身份进行认证。

现在,运行下面的查询,确保用户alice可以执行所有可用的查询,包括相关的Redis管理。

CONFIG GET bind
CONFIG GET supervised

成功后,你应该得到一个关于参数bind和supervised的当前Redis配置的输出。



验证用户bob

运行下面的查询,以用户bob的身份登录并进行验证。

AUTH bob BobP4ssw0rd

认证后,运行下面的PING查询。如果成功,你应该得到消息PONG。

PING

接下来,在Redis ACL文件中,用户bob的命令类别为'-@dangerous',它可以阻止这个用户在Redis服务器上执行一些危险的命令,如FLUSHALL、CONFIG等。

如果你以用户bob的身份运行以下查询,你应该得到诸如'NOPERM'的输出,这意味着用户bob没有权限执行该命令。

FLUSHALL
CONFIG GET bind
SAVE



有了这个,你现在已经通过ACL文件成功地用ACL(访问控制列表)保护了Redis。

总结


恭喜你!你现在已经在 AlmaLinux 上成功地安装了 Redis!你已经成功地在 AlmaLinux 9 上安装了 Redis。 你还学会了如何通过 ACL 文件设置 ACL(访问控制列表)来保护 Redis 的安装。除此之外,你还通过为Redis服务创建一个特定的区域来确保Redis在firewalld的安全。

文章相关标签: Redis AlmaLinux
购物车