介绍
Redis是以其灵活性、性能和广泛的语言支持而闻名的内存关键值存储器,通常被用作数据库、缓存和消息经纪人,并支持广泛的数据结构。
本教程展示了如何在 Ubuntu 18.04 服务器上从源头上安装和配置 Redis。请注意,通过下载和安装通过官方 Ubuntu 存储库,您可以通过更少的步骤安装 Redis。
前提条件
要完成本指南,您需要通过遵循 此初始服务器设置指南来访问安装的 Ubuntu 18.04 服务器,包括具有sudo
特权的非根用户和防火墙。
当你准备好开始时,与你的sudo
用户登录你的Ubuntu 18.04服务器,然后继续下方。
步骤 1 – 安装构建和测试依赖
为了获得最新版本的 Redis,我们将从源编译和安装软件. 但是,在您下载源代码之前,您必须满足构建依赖性,以便您可以编译软件。
要做到这一点,请从Ubuntu存储库中安装build-essential
元包,此外,请下载您可以使用的tcl
包来测试二进制。
更新您的本地apt
包缓存并通过键入安装依赖性:
1sudo apt update
2sudo apt install build-essential tcl
通过此,所有构建和测试依赖性都安装在您的服务器上,您可以开始安装 Redis 的过程。
第2步:下载、编译和安装 Redis
安装后,您可以通过下载,编译,然后构建源代码来安装 Redis。由于您不需要长期保留 Redis 源代码(您可以随时重新下载),请将源代码下载到您的 /tmp
目录。
开始导航到此目录:
1cd /tmp
接下来,使用‘curl’来下载最新的稳定版本的 Redis. 最新的版本始终可在 一个稳定的下载URL找到:
1curl -O http://download.redis.io/redis-stable.tar.gz
通过键入将 tarball 解包:
1tar xzvf redis-stable.tar.gz
然后进入刚刚提取的 Redis 源目录结构:
1cd redis-stable
编译 Redis 二进制通过键入:
1make
二进制完成编译后,运行测试套件以确保一切都正确构建:
1make test
这通常需要几分钟才能完成,一旦测试完成,请通过键入:
1sudo make install
这就是安装Redis的目的,现在你已经准备好开始配置它了。 为此,你需要创建一个配置目录。Redis配置目录通常位于/etc/
目录中,你可以通过键入创建它:
1sudo mkdir /etc/redis
接下来,复制附带到 Redis 源档案的示例 Redis 配置文件:
1sudo cp /tmp/redis-stable/redis.conf /etc/redis
使用您喜爱的文本编辑器打开文件,对配置进行一些更改:
1sudo nano /etc/redis/redis.conf
在文件中,找到监督
指令. 此指令允许您宣布 init 系统以管理 Redis 作为服务,为您提供对其操作的更多控制权。 该监督
指令默认设置为不
。 由于您正在运行 Ubuntu,该系统使用 systemd init 系统,请更改为systemd
:
1[label /etc/redis/redis.conf]
2. . .
3
4# If you run Redis from upstart or systemd, Redis can interact with your
5# supervision tree. Options:
6# supervised no - no supervision interaction
7# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
8# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
9# supervised auto - detect upstart or systemd method based on
10# UPSTART_JOB or NOTIFY_SOCKET environment variables
11# Note: these supervision methods only signal "process is ready."
12# They do not enable continuous liveness pings back to your supervisor.
13supervised systemd
14
15. . .
接下来,找到dir
指令. 此选项指定了 Redis 将使用的目录来卸载持久数据. 您需要将此更改到 Redis 将有写权限的位置,而 Redis 不能被正常用户查看。
使用/var/lib/redis
目录,您将在步骤 4 中创建此目录并调整其权限。
1[label /etc/redis/redis.conf]
2. . .
3
4# The working directory.
5#
6# The DB will be written inside this directory, with the filename specified
7# above using the 'dbfilename' configuration directive.
8#
9# The Append Only File will also be created inside this directory.
10#
11# Note that you must specify a directory here, not a file name.
12dir /var/lib/redis
13
14. . .
保存并关闭文件,当你完成。
这些都是你需要对 Redis 配置文件进行的更改,但你仍然需要通过几个步骤 - 例如配置 Redis 作为服务并创建专用用户和组 - 然后开始使用它。
步骤 3 — 创建一个 Redis systemd 单元文件
为了更好地控制您如何管理 Redis,您可以创建一个 systemd 单元文件,允许它作为 systemd 服务运作。
创建并打开 /etc/systemd/system/redis.service
文件来开始:
1sudo nano /etc/systemd/system/redis.service
一旦进入,开始[单位]
部分,添加服务的描述,并定义网络在启动之前必须具备的要求:
1[label /etc/systemd/system/redis.service]
2[Unit]
3Description=Redis In-Memory Data Store
4After=network.target
[服务]
部分是您指定服务的行为的地方. 为了安全目的,您不应该运行这个服务作为 root . 您应该使用一个专用的用户和组,为了简单,您可以拨打这两个 redis . 您会暂时创建这些。
要开始服务,你只需要拨打redis-server
二进制并指向您的配置。 要停止它,请使用Redis关闭
命令,您可以使用redis-cli
二进制执行。
1[label /etc/systemd/system/redis.service]
2[Unit]
3Description=Redis In-Memory Data Store
4After=network.target
5
6[Service]
7User=redis
8Group=redis
9ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
10ExecStop=/usr/local/bin/redis-cli shutdown
11Restart=always
最后,添加一个[安装]
部分,在那里,定义系统d目标,如果该服务已启用,该目标应该附加到(意味着它已配置为在启动时启动):
1[label /etc/systemd/system/redis.service]
2[Unit]
3Description=Redis In-Memory Data Store
4After=network.target
5
6[Service]
7User=redis
8Group=redis
9ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
10ExecStop=/usr/local/bin/redis-cli shutdown
11Restart=always
12
13[Install]
14WantedBy=multi-user.target
保存并关闭文件,当你完成。
但是,在使用之前,您必须创建您在[服务]
部分中提到的专用用户和组,并授予他们所需的权限。
步骤 4 – 创建 Redis 用户、组和目录
在启动和测试 Redis 之前,您需要做的最后一件事是创建您在前两个文件中提到的用户、组和目录。
开始创建 redis 用户和组,您可以通过键入一个单一的命令来完成此操作:
1sudo adduser --system --group --no-create-home redis
接下来,创建/var/lib/redis
目录(在您在步骤 2 中创建的redis.conf
文件中引用),键入:
1sudo mkdir /var/lib/redis
向redis
用户和组授予此目录的所有权:
1sudo chown redis:redis /var/lib/redis
最后,调整权限,以便普通用户无法访问此位置:
1sudo chmod 770 /var/lib/redis
您已经放置了 Redis 所需的所有组件,现在您已经准备好启动 Redis 服务并测试其功能。
步骤5 - 开始和测试 Redis
通过键入开始 systemd 服务:
1sudo systemctl start redis
检查服务是否没有错误:
1sudo systemctl status redis
这将产生类似于以下的产量:
1[secondary_label Output]
2● redis.service - Redis In-Memory Data Store
3 Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: enabled)
4 Active: active (running) since Tue 2018-05-29 17:49:11 UTC; 4s ago
5 Main PID: 12720 (redis-server)
6 Tasks: 4 (limit: 4704)
7 CGroup: /system.slice/redis.service
8 └─12720 /usr/local/bin/redis-server 127.0.0.1:6379
9. . .
要测试您的服务是否正常运行,请使用命令行客户端连接到 Redis 服务器:
1redis-cli
在以下提示中,通过键入测试连接性:
1ping
这将返回:
1[secondary_label Output]
2PONG
接下来,检查你可以通过键入设置密钥:
1set test "It's working!"
1[secondary_label Output]
2OK
通过键入获取测试
值:
1get test
您应该能够检索您存储的值:
1[secondary_label Output]
2"It's working!"
确认您可以获取值后,请退出 Redis 提示以返回壳:
1exit
作为最后的测试,我们将检查 Redis 是否能够在停止或重新启动后仍然保持数据。
1sudo systemctl restart redis
然后再次连接到客户端并确认您的测试值仍然可用:
1redis-cli
1get test
您的密钥的值仍然可以访问:
1[secondary_label Output]
2"It's working!"
在你完成后,再次进入外壳:
1exit
假设所有这些测试都起作用,并且您希望在服务器启动时自动启动 Redis,请启用 systemd 服务:
1sudo systemctl enable redis
1[secondary_label Output]
2Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.
有了它,您的 Redis 安装完全运行。
结论
在本教程中,您从源代码中安装、编译和构建了 Redis,将其配置为系统d 服务,并验证了您的 Redis 安装是否正常运行。