如何在 Ubuntu 16.04 上安装和配置 Redis

介绍

Redis 是以其灵活性、性能和广泛的语言支持而闻名的内存密钥价值商店,在本指南中,我们将展示如何在 Ubuntu 16.04 服务器上安装和配置 Redis。

前提条件

要完成此指南,您将需要访问 Ubuntu 16.04 服务器. 您需要具有sudo权限的非根用户来执行此过程所需的管理功能. 您可以通过遵循我们的 Ubuntu 16.04 初始服务器设置指南来学习如何设置具有这些权限的帐户。

当你准备好开始时,与你的sudo用户登录你的Ubuntu 16.04服务器,然后继续下方。

安装构建和测试依赖

为了获得最新版本的 Redis,我们将从源头编译和安装软件. 在下载代码之前,我们需要满足构建依赖性,以便我们可以编译软件。

为了做到这一点,我们可以从Ubuntu存储库中安装build-essential元包,我们还将下载tcl包,我们可以使用它来测试我们的二进制。

我们可以更新我们的本地apt包缓存并通过键入来安装依赖性:

1sudo apt-get update
2sudo apt-get install build-essential tcl

下载、编译和安装 Redis

接下来,我们可以开始建造Redis。

下载和提取源代码

由于我们不需要长期保留我们将编译的源代码(我们总是可以重新下载它),我们将构建在/tmp目录中。

1cd /tmp

现在,下载最新的稳定版本的 Redis. 这是总是可用的在 一个稳定下载URL:

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

通过键入将 tarball 解包:

1tar xzvf redis-stable.tar.gz

进入刚刚提取的 Redis 源目录结构:

1cd redis-stable

构建和安装 Redis

现在,我们可以通过键入编译 Redis 二进制:

1make

编译二进制后,运行测试套件以确保一切都是正确的。

1make test

这通常需要几分钟才能运行,一旦完成,您可以通过键入到系统上安装二进制:

1sudo make install

配置 Redis

现在 Redis 已安装,我们可以开始配置它。

要开始,我们需要创建一个配置目录,我们将使用传统的 `/etc/redis’目录,可以通过键入创建:

1sudo mkdir /etc/redis

现在,复制包含在 Redis 源档案中的示例 Redis 配置文件:

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

接下来,我们可以打开文件来调整配置中的几个项目:

1sudo nano /etc/redis/redis.conf

在文件中,找到监督指令. 目前,此设置为。 由于我们正在运行使用系统d 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 将有写入权限,而正常用户无法查看。

我们将使用/var/lib/redis目录,我们将在一瞬间创建:

 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 systemd 单元文件

接下来,我们可以创建一个 systemd 单元文件,以便 init 系统可以管理 Redis 过程。

创建并打开 /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

[服务]部分,我们需要指定服务的行为。为了安全目的,我们不应该将我们的服务运行为

要开始服务,我们只需要拨打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

保存并关闭文件,当你完成。

创建 Redis 用户、组和目录

现在,我们只需要创建我们在前两个文件中提到的用户、组和目录。

开始创建redis用户和组,您可以通过键入一个单一的命令做到这一点:

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

现在,我们可以通过键入创建 /var/lib/redis 目录:

1sudo mkdir /var/lib/redis

我们应该给redis用户和群组这个目录的所有权:

1sudo chown redis:redis /var/lib/redis

调整权限,以便常规用户无法访问此位置:

1sudo chmod 770 /var/lib/redis

开始和测试Redis

现在,我们已经准备好启动 Redis 服务器。

启动 Redis 服务

通过键入开始 systemd 服务:

1sudo systemctl start redis

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

1sudo systemctl status redis

你应该看到一些看起来像这样的东西:

 1[secondary_label Output]
 2 redis.service - Redis Server
 3   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)
 4   Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago
 5  Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)
 6 Main PID: 3124 (redis-server)
 7    Tasks: 3 (limit: 512)
 8   Memory: 864.0K
 9      CPU: 179ms
10   CGroup: /system.slice/redis.service
11           └─3124 /usr/local/bin/redis-server 127.0.0.1:6379       
12
13. . .

测试 Redis 实例功能

要测试您的服务是否正常运行,请使用命令行客户端连接到 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 在船上开始

如果您的所有测试都起作用,并且您希望在服务器启动时自动启动 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.

结论

你现在应该在 Ubuntu 16.04 服务器上安装和配置 Redis 实例. 要了解有关如何保护 Redis 安装的更多信息,请参阅我们的 How To Secure Your Redis Installation on Ubuntu 14.04](从步骤 3 开始)。

Published At
Categories with 技术
comments powered by Disqus