因为发现之前手动安装的 redis 与现有的教程不一样,所以总结统一一下安装的标准步骤。

安装依赖项

为了获取最新版本的 Redis,我们将从源代码进行编译和安装。下载源代码之前,需要先安装一些编译所需要的软件。我们安装 build-essential 包用于编译功能,安装 tcl 包用于测试编译后的二进制文件。执行下面的命令来安装依赖:

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

下载、编译和安装 Redis

下载并解压源代码

现在,我们下载最新的稳定版 Redis:

wget http://download.redis.io/redis-stable.tar.gz

解压 tar.gz 文件:

tar -zxvf redis-stable.tar.gz

进入刚刚解压的 Redis 源代码根目录

cd redis-stable

编译并安装 Redis

现在,我们编译 Redis:

make

编译完成后,运行测试来确保编译成功完成:

make test

这将运行一段时间,测试完成后,就可以安装 Redis 到系统了:

sudo make install

配置 Redis

Redis 安装好之后,就可以对它进行配置。

首先,我们需要创建一个配置目录,通常来说这个目录是 /etc/redis 目录,输入下面的命令来创建:

sudo mkdir /etc/redis

然后,复制之前解压的源代码中的配置文件到配置目录中:

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

下一步,打开这个文件,并做一些修改:

sudo vim /etc/redis/redis.conf

在这个文件中,找到 supervised 指令。当前,它的值是 no。由于我们的操作系统使用的是 systemd 初始化系统,所以我们把这个值修改为 systemd

# 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 目录,稍后我们将创建该目录:

# 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 文件这样初始化系统便能管理 Redis 进程:

创建 /etc/systemd/system/redis.service 文件:

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

打开这个文件,以 [Unit] 为开头,添加一些描述和定义一个需求(启动此服务之前网络必须可用):

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

然后在 [Service] 部分,指定服务的行为。为了安全考虑,不应该以 root 权限运行该服务。我们应该使用一个特定的用户和用户组,比如,这里使用 redis 用户和用户组,稍后我们将创建他们。

为了启动服务,需要在配置中指定要调用的 redis-server 程序,为了停止它,我们可以使用 Redis shutdown 命令,它将由 redis-cli 程序执行。有时,我们需要让 Redis 尽可能从失败中恢复,所以设置 Restart 值为 "always":

[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目标(如果已启用)(配置为在启动时启动):

[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 服务

sudo systemctl start redis

检查服务是否有错误:

sudo systemctl status redis

然后,你将会看到这些输出:

● redis.service - Redis In-Memory Data Store
Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: enabled)
Active: active (running) since 二 2018-07-17 21:20:10 CST; 10s ago
Process: 23191 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=1/FAILURE)
Main PID: 23195 (redis-server)
CGroup: /system.slice/redis.service
└─23195 /usr/local/bin/redis-server 127.0.0.1:6379

测试 Redis 实例的功能

为测试服务功能是否正确可用,使用命令行客户端链接 Redis 服务器:

redis-cli

输入命令,检查连通性:

127.0.0.1:6379> ping
PONG

输出 PONG 则表示连通,正常。

检查是否可以设置一个键:

127.0.0.1:6379> set test "It's working!"
OK

然后,获取该键的值:

127.0.0.1:6379> get test
"It's working!"

退出 Redis 命令行:

$ redis-cli
127.0.0.1:6379> exit

然后再连接一次,获取 test 键的值,再退出:

127.0.0.1:6379> get test
"It's working!"
127.0.0.1:6379> exit

设置 Redis 开机启动

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

参考:How To Install and Configure Redis on Ubuntu 16.04 | DigitalOcean

PS - 个人博客原文:Ubuntu 16.04 安装 Redis

Ubuntu 16.04 安装和配置 Redis的更多相关文章

  1. [Part 1] Ubuntu 16.04安装和配置QT5 | Part-1: Install and Configure Qt5 on Ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/91842b71/,欢迎阅读! Part-1: Install and Configure Qt5 on Ubuntu 16.04 ...

  2. Ubuntu 16.04安装和配置Sublime Text 3

    1.安装Sublime Text 3 首先添加sublime text 3的仓库: sudo add-apt-repository ppa:webupd8team/sublime-text-3 根据提 ...

  3. ubuntu 16.04 安装和配置vncserver

    https://www.linode.com/docs/applications/remote-desktop/install-vnc-on-ubuntu-16-04/#connect-to-vnc- ...

  4. Ubuntu 16.04安装QQ国际版图文详细教程

            因工作需要,我安装了Ubuntu 16.04,但是工作上的很多事情需要QQ联系,然而在Ubuntu上的WebQQ很是不好用,于是在网上搜索了好多个Linux版本的QQ,然而不是功能不全 ...

  5. Ubuntu 16.04 安装Mysql 5.7 踩坑小记

    title:Ubuntu 16.04 安装Mysql 5.7 踩坑小记 date: 2018.02.03 安装mysql sudo apt-get install mysql-server mysql ...

  6. ROS_Kinetic_01 在ubuntu 16.04安装ROS Kinetic 2017.01更新

    ROS_Kinetic系列学习(一),在ubuntu 16.04安装ROS Kinetic. Celebrating 9 Years of ROS! ubuntu16.04已经发布半年多了,ROS的K ...

  7. Ubuntu 16.04安装JDK(转载)

    1.简单的安装方法 安装JDK的最简单方法应该就是使用apt-get来安装了,但是源一般是OpenJDK,如果需要安装Oracle的JDK这种方法就不合适了,直接跳过看下面的章节. 1.使用ctrl+ ...

  8. Ubuntu 16.04 安装Mysql数据库

    系统环境 Ubuntu 16.04; 安装步骤 1.通过以下环境安装mysql服务端与客户端软件 sudo apt-get install mysql-server apt-get isntall m ...

  9. Ubuntu 16.04安装sogou 拼音输入法

    一.更换为国内的软件源 安装搜狗输入法之前请先更换为国内的软件源,否则无法解决依赖问题.首先,用以下命令打开源列表: sudo gedit /etc/apt/sources.list #用文本编辑器打 ...

随机推荐

  1. 更改HDFS权限

    hdfs dfs -chmod -R 755 / 之前执行过这条语句,但是总是提示: 15/05/21 08:10:18 WARN util.NativeCodeLoader: Unable to l ...

  2. BOOTH 算法的简单理解

    学习FPGA时,对于乘法的运算,尤其是对于有符号的乘法运算,也许最熟悉不过的就是 BOOTH算法了. 这里讲解一下BOOTH算法的计算过程,方便大家对BOOTH的理解.        上图是BOOTH ...

  3. Convolution Network及其变种(反卷积、扩展卷积、因果卷积、图卷积)

    今天,主要和大家分享一下最近研究的卷积网络和它的一些变种. 首先,介绍一下基础的卷积网络. 通过PPT上的这个经典的动态图片可以很好的理解卷积的过程.图中蓝色的大矩阵是我们的输入,黄色的小矩阵是卷积核 ...

  4. Spring 4 官方文档学习(六)核心技术之Spring AOP

    目录 1.介绍 1.1.AOP概念 1.2.Spring AOP 能力 和 目标 1.2.1.简介 1.2.2.@AspectJ 支持 1.2.3.声明一个aspect 例子 1.2.4.声明advi ...

  5. c# winform 自动关闭messagebox 模拟回车

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. 多个进程对同一个监听套接字调用函数gen_tcp:accept/1

    源于<<erlang程序设计>>的第14章的14.1.4大约第197页. 未发现多个进程对同一个监听套接字调用函数gen_tcp:accept/1比单进程的效率更高或者更快.

  7. 电视不支持AirPlay镜像怎么办?苹果iPhone手机投屏三种方法

    导读:苹果手机多屏互动功能在哪里?iPhone苹果手机没有AirPlay镜像怎么办?三种方法教你苹果iPhone手机怎么投影到智能电视上. 前言: 苹果iPhone手机投屏到电视设备上,需要使用到Ai ...

  8. 在hadoop集群添加了slave节点的方法

    分为以下几个步骤: 1  ,修改master和slave 的参数,和配置时相同,只是修改和节点数相关,如slaves(我的只改了slaves), 将任意一个该好的文件发送到新增加的机器(或者虚拟机) ...

  9. ini 文件操作记要(2): 使用 TMemIniFile

    unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Form ...

  10. HEVC有损优化二

    1 .  HEVC有很些设置对速度的提升有很大的帮助,比如m_bUseEarlyCU,m_useEarlySkipDetection等. 把它们设置成true,会有意想不到的效果. 比如对于不同分辨率 ...