如何在 Ubuntu 18.04 上从源代码安装 Redis

介绍

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 安装是否正常运行。

Published At
Categories with 技术
comments powered by Disqus