如何在Ubuntu18.04上从源代码安装Redis

来自菜鸟教程
跳转至:导航、​搜索

介绍

Redis 是一种内存键值存储,以其灵活性、性能和广泛的语言支持而闻名。 它通常用作数据库、缓存和消息代理,并支持广泛的数据结构。

本教程演示了如何在 Ubuntu 18.04 服务器上从源代码安装和配置 Redis。 请注意,通过官方 Ubuntu 存储库下载和安装 Redis,安装步骤更少。 要使用此方法安装 Redis,请参阅我们的 如何在 Ubuntu 18.04 上安装和保护 Redis 的指南。

先决条件

要完成本指南,您需要访问按照 此初始服务器设置指南 设置的 Ubuntu 18.04 服务器,包括具有 sudo 权限的非 root 用户和防火墙。

当您准备好开始时,使用您的 sudo 用户登录到您的 Ubuntu 18.04 服务器并继续下面的操作。

第 1 步 — 安装构建和测试依赖项

为了获得最新版本的 Redis,我们将从源代码编译和安装软件。 但是,在下载源代码之前,您必须满足构建依赖项,以便您可以编译软件。

为此,请从 Ubuntu 存储库安装 build-essential 元包。 此外,下载可用于测试二进制文件的 tcl 包。

更新本地 apt 包缓存并通过键入以下内容安装依赖项:

sudo apt update
sudo apt install build-essential tcl

这样,所有构建和测试依赖项都安装在您的服务器上,您可以开始安装 Redis 本身的过程。

第 2 步 — 下载、编译和安装 Redis

安装其依赖项后,您就可以通过下载、编译和构建源代码来安装 Redis。 由于您不需要长期保留 Redis 源代码(您可以随时重新下载),请将源代码下载到您的 /tmp 目录。

首先导航到此目录:

cd /tmp

接下来,使用curl下载最新的稳定版Redis。 最新版本总是可以在一个稳定的下载地址找到:

curl -O http://download.redis.io/redis-stable.tar.gz

通过键入以下命令解压缩 tarball:

tar xzvf redis-stable.tar.gz

然后进入刚刚解压出来的Redis源码目录结构:

cd redis-stable

通过键入以下内容编译 Redis 二进制文件:

make

二进制文件完成编译后,运行测试套件以确保一切都正确构建:

make test

这通常需要几分钟才能完成。 测试完成后,通过键入以下命令将二进制文件安装到系统上:

sudo make install

这就是安装 Redis 的内容,现在您可以开始配置它了。 为此,您需要创建一个配置目录。 Redis 配置目录通常位于 /etc/ 目录中,您可以通过键入以下命令在其中创建它:

sudo mkdir /etc/redis

接下来,复制 Redis 源存档中包含的示例 Redis 配置文件:

sudo cp /tmp/redis-stable/redis.conf /etc/redis

使用您喜欢的文本编辑器打开文件,对配置进行一些更改:

sudo nano /etc/redis/redis.conf

在文件中,找到 supervised 指令。 该指令允许您声明一个初始化系统来将 Redis 管理为服务,从而为您提供对其操作的更多控制。 supervised 指令默认设置为 no。 由于您运行的是使用 systemd init 系统的 Ubuntu,请将其更改为 systemd

/etc/redis/redis.conf

. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

接下来,找到 dir 指令。 此选项指定 Redis 将用于转储持久数据的目录。 您需要将其更改为 Redis 将具有写入权限且普通用户无法查看的位置。

为此使用 /var/lib/redis 目录; 您将在第 4 步稍后创建此目录并调整其权限:

/etc/redis/redis.conf

. . .

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

. . .

完成后保存并关闭文件。

这些是您需要对 Redis 配置文件进行的所有更改,但是在您开始使用之前,您还需要完成一些步骤——例如将 Redis 配置为作为服务运行并创建其专用用户和组它。

第 3 步 — 创建 Redis systemd 单元文件

为了更好地控制您管理 Redis 的方式,您可以创建一个 systemd 单元文件,该文件将允许它作为 systemd 服务运行。 这也有利于让 Redis 在服务器启动时轻松启动。

创建并打开 /etc/systemd/system/redis.service 文件开始:

sudo nano /etc/systemd/system/redis.service

进入后,开始 [Unit] 部分,添加服务描述并定义网络在启动之前必须可用的要求:

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service] 部分是您指定服务行为的地方。 出于安全考虑,您不应以 root 身份运行此服务。 您应该使用专用的用户和组,并且为简单起见,您可以同时调用这两个 redis。 您将立即创建这些。

要启动该服务,您只需调用 redis-server 二进制文件并将其指向您的配置。 要停止它,请使用 Redis shutdown 命令,您可以使用 redis-cli 二进制文件执行该命令。 此外,由于希望 Redis 尽可能从故障中恢复,请将 Restart 指令设置为 always

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

最后,添加一个 [Install] 部分。 在那里,定义服务应该附加到的 systemd 目标,如果它被启用(意味着它被配置为在启动时启动):

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

完成后保存并关闭文件。

Redis systemd 单元文件已全部设置。 但是,在它可以投入使用之前,您必须创建您在 [Service] 部分中引用的专用用户和组,并授予他们运行所需的权限。

第 4 步 — 创建 Redis 用户、组和目录

在启动和测试 Redis 之前,您需要做的最后一件事是创建您在前两个文件中引用的用户、组和目录。

首先创建 redis 用户和组。 您可以通过键入以下命令在单个命令中执行此操作:

sudo adduser --system --group --no-create-home redis

接下来,通过键入以下内容创建 /var/lib/redis 目录(在您在步骤 2 中创建的 redis.conf 文件中引用):

sudo mkdir /var/lib/redis

授予 redis 用户和组对此目录的所有权:

sudo chown redis:redis /var/lib/redis

最后,调整权限,使普通用户无法访问此位置:

sudo chmod 770 /var/lib/redis

您已将 Redis 运行所需的所有组件放置到位。 您现在已准备好启动 Redis 服务并测试其功能。

第 5 步 — 启动和测试 Redis

通过键入以下命令启动 systemd 服务:

sudo systemctl start redis

通过运行检查服务是否没有错误:

sudo systemctl status redis

这将产生类似于以下内容的输出:

Output● redis.service - Redis In-Memory Data Store
   Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-05-29 17:49:11 UTC; 4s ago
 Main PID: 12720 (redis-server)
    Tasks: 4 (limit: 4704)
   CGroup: /system.slice/redis.service
           └─12720 /usr/local/bin/redis-server 127.0.0.1:6379
. . .

要测试您的服务是否正常运行,请使用命令行客户端连接到 Redis 服务器:

redis-cli

在随后的提示中,通过键入以下内容测试连接性:

ping

这将返回:

OutputPONG

接下来,检查您是否可以通过键入以下内容来设置密钥:

set test "It's working!"
OutputOK

通过键入以下内容检索 test 值:

get test

您应该能够检索您存储的值:

Output"It's working!"

确认可以获取值后,退出 Redis 提示符以返回 shell:

exit

作为最终测试,我们将检查 Redis 是否能够在停止或重新启动后保留数据。 为此,首先重启 Redis 实例:

sudo systemctl restart redis

然后再次与客户端连接并确认您的测试值仍然可用:

redis-cli
get test

您的密钥值应该仍然可以访问:

Output"It's working!"

完成后再次退出到 shell:

exit

假设所有这些测试都有效,并且您希望在服务器启动时自动启动 Redis,请启用 systemd 服务:

sudo systemctl enable redis
OutputCreated symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.

这样,您的 Redis 安装就可以完全运行了。

结论

在本教程中,您从源代码安装、编译和构建 Redis,将其配置为作为 systemd 服务运行,并验证您的 Redis 安装是否正常运行。 作为紧接着的下一步,我们 强烈 鼓励您按照我们关于 如何在 Ubuntu 18.04 上保护您的 Redis 安装的指南来保护您的 Redis 安装。