服务器运维之家
    • 服务器运维之家
    服务器运维之家
    • 首页
    • 服务器运维
      • Linux技巧
      • Linux教程
      • 环境搭建
      • 运维编程
      • Windows系统
    • DNS/CDN相关
    • VPS优惠
      • 韩国VPS
      • 香港VPS
      • 美国VPS
    • 域名
    • 白嫖的知识
    • 工具干货
    • 网站主题
      • WordPress
      • Typecho
    • 开源代码
    服务器运维之家
    首页 » 服务器运维 » Linux教程 » Ubuntu20.04环境下手动编译并安装Redis6.2
    Linux教程

    Ubuntu20.04环境下手动编译并安装Redis6.2

    2022年08月09日

    自从2020年12月08日CentOS 官方宣布CentOS Linux项目将停止,并推出CentOS Stream项目。CentOS未来将会从Red Hat Enterprise Linux(RHEL)复刻版本的CentOS Linux转向CentOS Stream。而目前使用最多的Centos8刚好在停止维护的系统列表内,所以很多同学目前打算转战Ubuntu,减少使用Centos。

    本文将带你实现手动编译安装Redis以及创建systemd服务并设置自启动。

    Ubuntu20.04环境下手动编译并安装Redis6.2

    安装教程

    查看系统版本

    这里使用的是Ubuntu20.04

    Bash
    root@VM-8-10-ubuntu:~# lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 20.04.3 LTS
    Release:	20.04
    Codename:	focal

    下载Reids源码

    可以从Redis官网的下载页面下载到最新的源码:

    https://redis.io/download

    下载完成后我们对其进行解压

    Bash
    tar -xvf redis-6.2.6.tar.gz

    安装依赖

    编译前我们需要先安装编译需要的依赖:

    Bash
    apt install libsystemd-dev libc6-dev

    然后进入deps目录,编译剩余需要的依赖,输入以下命令以进行:

    Bash
    cd redis-6.2.6/deps
    make hiredis linenoise hdr_histogram lua jemalloc -j16

    编译Redis本体

    编译依赖完成后就可以开始编译本体

    Bash
    make USE_SYSTEMD=yes

    如果系统为多核可以加-j线程数来开启多线程编译提升速度,如下文代码所示(此处使用16线程):

    Bash
    make USE_SYSTEMD=yes -j16

    编译完成后如有需要可以进行测试,需要安装tcl以支持测试

    Bash
    apt install tcl
    make test

    接着将其安装到系统

    Bash
    make install

    创建服务

    这里我们使用systemd来创建服务,而不是使用过时的init.d

    首先复制一份redis配置到/etc下

    Bash
    cp redis.conf /etc/

    打开redis.conf,修改以下内容:

    修改监听IP,开启外网连接(默认是本地可以通过127.0.0.1连接):

    Bash
    bind 0.0.0.0

    找到supervised并去掉注释,将其设置为systemd,要不然systemd不会检测到redis启动成功

    Bash
    supervised systemd

    然后为redis设置密码:

    找到requirepass并去掉注释,将"foobared"修改为你自己需要的密码,这点很重要,没设置容易被攻击!!

    Bash
    requirepass foobared

     

    然后复制redis自带的示例服务文件到systemd,并且创建好redis的数据目录

    Bash
    cd utils
    cp systemd-redis_server.service /etc/systemd/system/redis-server.service
    mkdir -p /var/lib/redis

    下面将编辑服务文件

    Bash
    cd /etc/systemd/system/
    vim redis-server.service

    去掉后一个ExecStart的注释,将上方原有的注释掉,并将下方的配置文件目录改成我们自己的

    Bash
    ExecStart=/usr/local/bin/redis-server /etc/redis.conf

    然后设置工作目录,去掉下方WorkingDirectory的注释

    Bash
    WorkingDirectory=/var/lib/redis

    改好的文件看起来应该是这样子的

    Bash
    [Unit]
    Description=Redis data structure server
    Documentation=https://redis.io/documentation
    #Before=your_application.service another_example_application.service
    #AssertPathExists=/var/lib/redis
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    #ExecStart=/usr/local/bin/redis-server --supervised systemd --daemonize no
    ## Alternatively, have redis-server load a configuration file:
    ExecStart=/usr/local/bin/redis-server /etc/redis.conf
    LimitNOFILE=10032
    NoNewPrivileges=yes
    #OOMScoreAdjust=-900
    #PrivateTmp=yes
    Type=notify
    TimeoutStartSec=infinity
    TimeoutStopSec=infinity
    UMask=0077
    #User=redis
    #Group=redis
    WorkingDirectory=/var/lib/redis
    
    [Install]
    WantedBy=multi-user.target

    开启服务并设置开机启动

    首先看一下服务配的对不对,如果status显示Active则正常。

    Bash
    systemctl start redis-server.service
    systemctl status redis-server.service

    正常之后直接设置开机启动即可

    Bash
    systemctl enable redis-server.service

    或者一条命令搞定

    Bash
    systemctl enable --now redis-server.service

    非root用户运行redis

    首先创建用户

    Bash
    useradd redis -s /sbin/nologin -b /var/lib

    然后设置运行用户

    Bash
    vim /etc/systemd/system/redis-server.service
    
    去掉下面两个注释
    User=redis
    Group=redis

    设置完成之后重载systemd并且重启redis-server

    Bash
    systemctl daemon-reload && systemctl restart redis-server.service

    配置完成后可以查看下是不是redis用户在跑,显示User=redis就说明配置成功

    Bash
    root@VM-8-10-ubuntu:/var/lib# systemctl show -pUser redis-server.service 
    User=redis

    解决overcommit_memory问题

    Nov 22 10:30:14 VM-8-10-ubuntu redis-server[25201]: 25201:M 22 Nov 2021 10:30:14.530 # WARNING overcommit_memory is set to 0!

    “警告超限”内存设置为0!在内存不足的情况下,后台保存可能会失败。若要解决此问题,请将“vm.overcommit_memory=1”添加到/etc/sysctl.conf,然后重新启动或运行命令“sysctl vm.overcommit_memory=1”以使其生效。

    我们按照提示直接设置这个内核参数即可:

    Bash
    echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf && sysctl -p

    Redis管理工具

    这里推荐RDM:

    https://github.com/uglide/RedisDesktopManager

    项目是开源的,windows版本需要到microsoft store中购买后(相当于赞助作者)才可以解锁

    这里提供一个第三方大佬编译的windows版本,可以直接安装:

    https://github.com/lework/RedisDesktopManager-Windows

    下一篇 Centos8.x使用yum安装docker

    相关信息

    Iptables数据包大小匹配模块length应用

    2022年09月04日

    centos怎么查看端口是否被占用

    2022年08月25日

    linux centOS7自动同步时间

    2022年08月15日

    Linux 系统添加 Swap 交换分区

    2022年08月14日

    热门推荐信息

    Nginx反向代理之端口转发TCP/UDP

    2022年08月14日

    Nginx反向代理之端口转发

    Linux 如何进行多线程下载

    2022年08月10日

    linux centOS7自动同步时间

    2022年08月15日

    linux centOS7自动同步时间

    Iptables数据包大小匹配模块length应用

    2022年09月04日

    Iptables数据包大小匹配模块length应用

    Linux 系统添加 Swap 交换分区

    2022年08月14日

    Linux 系统添加 Swap 交换分区

    最新内容

    Iptables数据包大小匹配模块length应用

    2022年09月04日

    centos怎么查看端口是否被占用

    2022年08月25日

    linux centOS7自动同步时间

    2022年08月15日

    Linux 系统添加 Swap 交换分区

    2022年08月14日

    Nginx反向代理之端口转发TCP/UDP

    2022年08月14日
    文章导航
    关于本站
    服务器运维之家

    服务器运维,VPS运维,VPS选择,云主机选择,Linux命令

    © 2025 服务器运维之家.
    • 联系我们
    • 返回首页

    按 回车 搜索. 按 Esc 取消.