欢迎光临散文网 会员登陆 & 注册

[教程] Ubuntu20下手动编译安装Redis6.2

2022-01-11 17:09 作者:繁花cloud  | 我要投稿

写在开头

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

Bash

root@VM-8-10-ubuntu:~# lsb_release -aNo 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/depsmake 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 tclmake 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 utilscp systemd-redis_server.service /etc/systemd/system/redis-server.servicemkdir -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/redisWants=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=yesType=notify TimeoutStartSec=infinity TimeoutStopSec=infinity UMask=0077#User=redis#Group=redisWorkingDirectory=/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


[教程] Ubuntu20下手动编译安装Redis6.2的评论 (共 条)

分享到微博请遵守国家法律