提供:ZStack云计算

内容介绍

Redis是一套内存内键-值存储方案,向来以出色的灵活性、性能与广泛的语言支持能力而著称。今天,我们将共同了解如何在Ubuntu 16.04服务器上安装并配置Redis。

先决条件

要完成本教程,大家首先需要接入一套Ubuntu 16.04服务器。另外,还需要一个非root用户并以sudo权限执行各项命令。关于这部分内容,请参阅Ubuntu 16.04 初始服务器设置指南一文。

准备就绪后,利用sudo用户登入Ubuntu 16.04服务器。

安装Build并测试关联性

为了获取Redis的最新版本,我们需要从来源编译并安装该软件。在代码下载完成后,我们需要满足build关联性以编译该软件。

首先从Ubuntu库安装build-essential meta-package。另外还需要下载tcl软件包以用于二进制代码测试。

我们可以通过以下命令更新本地apt软件包缓存并安装关联性:

- sudo apt-get update

- sudo apt-get install build-essential tcl

下载、编译并安装Redis

接下来对Redis进行build。

下载并提取源代码

由于我们不需要长期保留源代码,因此可以直接在/tmp目录内进行build:

- cd /tmp

现在下载Redis最新版本,大家可以使用稳定下载URL:

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

解压tar:

- tar xzvf redis-stable.tar.gz

前往Redis源目录:

- cd redis-stable
Build并安装Redis

现在对Redis二进制代码进行编译:

- make

编译完成后,运行测试套件以确保built正确:

- 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 init系统,因此需要将其变更为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 Unit文件

接下来,我们可以创建一个systemd unit文件,从而利用该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二进制文件。要将其关闭,则可使用Reids的shutdown命令,其可利用redis-cli加以执行。另外,由于我们希望Redis能够在故障情况下得到恢复,因此需要将Restart指令设定为“always”:

/etc/systemd/system/redis.service

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

[Service]User=redisGroup=redisExecStart=/usr/local/bin/redis-server /etc/redis/redis.confExecStop=/usr/local/bin/redis-cli shutdownRestart=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用户、群组与目录

现在我们创建前两个文件所引用的用户、群组与目录。

首先创建reids user与group,命令如下:

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

现在创建/var/lib/redis目录:

- sudo mkdir /var/lib/redis

为redis user与group分配此目录的所有权:

- 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

结果应如下所示:

Output

● 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

输出结果如下:

Output

PONG

大家可以设置需要的返回结果:

- set test "It's working!"

Output

OK

现在再次检查:

- get test

取得的则为预存值:

Output

"It's working!"

退出Redis提示符并返回shell:

- exit

作为最后一步测试,我们重启Redis实例:

- sudo systemctl restart redis

现在再次接入客户端并确认测试值仍然可用:

- redis-cli

- get test

返回的值应该仍然为:

Output

"It's working!"

完成后再次返回shell:

- exit
确保Redis在引导过程中启用

如果测试圆满成功,接下来要做的是确保Redis在引导过程中自动启用。

具体命令如下:

- sudo systemctl enable redis

Output

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

总结

现在大家已经完成了Redis实例的安装与配置。要了解更多与Redis保护相关的内容,请参阅如何在Ubuntu 14.04上保护Redis (从第三步开始)。虽然此文面向Ubuntu 14.04编写,但基本完全适用于16.04版本。

本文来源自DigitalOcean Community。英文原文:How To Install and Configure Redis on Ubuntu 16.04 By Justin Ellingwood

翻译:diradw

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐