Redis是一款内存键值存储,以其灵活性,性能和广泛的语言支持而闻名。在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Redis。
先决条件
要完成本指南,您需要访问Ubuntu 16.04服务器。您需要具有sudo
权限的非root用户才能执行此过程所需的管理功能。通过遵循我们的Ubuntu 16.04初始服务器设置指南,您可以了解如何使用这些权限设置帐户。
当您准备开始时,请与您的sudo
用户一起登录到Ubuntu 16.04服务器,并继续执行。
安装构建和测试依赖关系
为了获得最新版本的Redis,我们将从源代码编译和安装该软件。在我们下载代码之前,我们需要满足构建依赖关系,以便编译软件。
为此,我们可以build-essential
从Ubuntu存储库安装meta-package。我们还将下载该tcl
软件包,我们可以使用它来测试我们的二进制文件。
我们可以更新我们的本地apt
程序包缓存并通过键入以下命令来安
- sudo apt-get update
- sudo apt-get install build-essential tcl
下载,编译和安装Redis
接下来,我们可以开始构建Redis。
由于我们不需要保留我们将长期编译的源代码(我们可以随时重新下载它),所以我们将构建/tmp
目录。现在我们来到那里:
- cd /tmp
- 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/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单元文件
接下来,我们可以创建一个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服务器。
输入以下命令启动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-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!"
完成后再返回到外壳中:
- exit
如果所有测试都能正常工作,并且您希望在服务器引导时自动启动Redis,则可以启用systemd服务。
为此,请键入:
- sudo systemctl enable redis
Output
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版本上运行。
原文链接:https://blog.csdn.net/javenyuan/article/details/86426611