服务器运维之家
    • 服务器运维之家
    服务器运维之家
    • 首页
    • 服务器运维
      • 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日

    热门推荐信息

    CentOS7创建普通用户并给与su权限

    2022年08月11日

    在centos7.x下,添加普通用户,并授予su权限

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

    2022年08月14日

    Nginx反向代理之端口转发

    Linux 如何进行多线程下载

    2022年08月10日

    Centos7查看用户和用户组的方法

    2022年08月11日

    linux centOS7自动同步时间

    2022年08月15日

    linux centOS7自动同步时间

    最新内容

    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 取消.