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

Redis是一个内存中,key-value存储它的灵活性,性能和广泛的语言支持闻名。在本指南中,我们将演示如何安装和一个Ubuntu 16.04服务器上配置Redis的。要完成本指南,您将需要访问...

介绍

Redis是一个内存中键值存储,因其灵活性,性能和广泛的语言支持而闻名。 在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Redis。

先决条件

要完成本指南,您需要访问Ubuntu 16.04服务器。 您将需要一个非root用户sudo权限来执行这个过程所需的行政职能。 你可以学习如何按照我们设置这些权限的帐户的Ubuntu 16.04服务器初始设置指南

当你准备开始时,登录到你的Ubuntu 16.04服务器与sudo用户及以下继续。

安装构建和测试依赖关系

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

要做到这一点,我们可以安装build-essential从Ubuntu软件仓库元包。 我们还将下载tcl包,我们可以用它来测试我们的二进制文件。

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

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

下载,编译和安装Redis

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

下载并解压缩源代码

因为我们不会需要保持源代码,我们将编写长期(我们总是可以重新下载它),我们将建立在/tmp目录。 让我们现在移动:

cd /tmp

现在,下载最新的稳定版本的Redis。 这始终是提供一个稳定的下载网址

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

键入以下命令解压缩tarball:

tar xzvf redis-stable.tar.gz

移动到刚刚提取的Redis源目录结构:

cd redis-stable

构建和安装Redis

现在,我们可以通过键入以下命令来编译Redis二进制文件:

make

编译二进制文件后,运行测试套件以确保一切正确。 您可以输入以下命令:

make test

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

sudo make install

配置Redis

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

首先,我们需要创建一个配置目录。 我们将使用传统/etc/redis目录,该目录可以通过输入来创建:

sudo mkdir /etc/redis

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

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

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

sudo nano /etc/redis/redis.conf

在文件中,找到supervised指令。 目前,它被设置为no 由于我们正在运行使用systemd初始化系统的操作系统,我们可以改变这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目录里,我们将在稍后创建:

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

接下来,我们可以创建一个systemd单元文件,以便init系统可以管理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指令“总是”:

/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用户,组和目录

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

通过创建开始redis用户和组。 这可以在单个命令中通过键入:

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

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

sudo mkdir /var/lib/redis

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

sudo chown redis:redis /var/lib/redis

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

sudo chmod 770 /var/lib/redis

启动和测试Redis

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

启动Redis服务

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

sudo systemctl start redis

通过运行以下操作检查服务是否没有错误:

sudo systemctl status redis

你应该看到这样的东西:

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

. . .

测试Redis实例功能

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

redis-cli

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

ping

你应该看到:

PONG

检查您是否可以键入以下内容来设置键:

set test "It's working!"
OK

现在,通过键入以下内容获取值:

get test

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

"It's working!"

退出Redis提示以返回shell:

exit

作为最后一个测试,让我们重新启动Redis实例:

sudo systemctl restart redis

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

redis-cli
get test

您的密钥的值仍应可访问:

"It's working!"

完成后再退回到shell中:

exit

使能Redis在引导时启动

如果所有测试都正常工作,并且您希望在服务器引导时自动启动Redis,则可以启用systemd服务。

为此,请键入:

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

结论

您现在应该已经在您的Ubuntu 16.04服务器上安装和配置了Redis实例。 要了解更多关于如何保护您的Redis安装,看看我们如何保护在Ubuntu 14.04你Redis的安装 (从第3步起)。 虽然它是用Ubuntu 14.04写的,它应该主要工作在16.04以及。