Redis编译及安装教程

Redis编译及安装教程
首先查看系统CPU架构及系统版本:粗略信息:hostnamectl详细系统版本:cat /etc/os-release一、Redis 编译安装需要哪些环境Redis 本身依赖不多核心是软件作用是否必须gccC 编译器必须gcc-cC 编译支持建议make编译工具必须tclRedis 测试工具可选jemalloc-develRedis 内存分配优化建议tar解压源码必须麒麟 V10 基本兼容 CentOS/RHEL 生态。二、先在离线服务器检测环境下面给你一个完整检测脚本。创建脚本mkdir/opt/redis_makevi/opt/redis_make/check_redis_env.sh内容#!/bin/bashechoecho Redis 编译环境检测echomissing0check_cmd(){if!command-v$1/dev/null21;thenechoecho[缺失]$1echo作用:$2echo必要性:$3missing1fi}check_rpm(){if!rpm-q$1/dev/null21;thenechoecho[缺失]$1echo作用:$2echo必要性:$3missing1fi}# 检测命令check_cmd gccRedis源码编译所需C编译器必须check_cmdmake执行Makefile完成Redis编译必须check_cmdtar解压Redis源码包必须# 检测rpm包check_rpm gcc-c部分依赖可能需要C环境建议check_rpm jemalloc-develRedis高性能内存管理库不用,redis自带check_rpm tclRedis执行make test需要可选echoif[$missing-eq0];thenecho检测结果: Redis编译环境已满足elseecho检测结果: 存在缺失环境echo请根据缺失项准备对应rpm安装包fi三、赋予执行权限chmodx /opt/redis_make/check_redis_env.sh执行/opt/redis_make/check_redis_env.sh四、如何准备离线 rpm 包在另一台联网的麒麟/CentOS/RHEL机器下载 rpm 包再拷贝进去如果不知道下载那个版本看 glibc 判断生态情况1glibc 2.28通常兼容CentOS8Rocky8AlmaLinux8RHEL8可用 EL8 rpm情况2glibc 2.17通常兼容CentOS7RHEL7可用 EL7 rpm五、联网机器下载 Redis 编译依赖方式1推荐使用 yumdownloader先安装yuminstallyum-utils-y创建目录mkdirredis_rpmscdredis_rpms下载yumdownloader--resolve\gcc\gcc-c\make\tcl\jemalloc-devel\tar作用--resolve会自动下载依赖链。方式2在联网服务器中查看版本,并在网上下载先搜索联网服务器中相关版本,入vim:rpm -qf $(which vim)得出相关版本到对应发行商rpm源中下载:查不出具体的系统版本,可以去系统默认的rpm源查看,系统指向的那个路径,一般路径中就有对应的版本进入源存放目录:cd /etc/yum.repos.d/查看目录下源内容#麒麟服务器系统: cat kylin_x86_64.repo #openEuler: cat openEuler.repo麒麟V10: [Index of /NS/V10/V10SP3/os/adv/lic/base/x86_64/Packages/](Index of /NS/V10/)openEuler: repo.openeuler.org/openEuler-24.03-LTS-SP2/OS/x86_64/Packages/下在对应rpm,并上传安装:rpm -ivh *********.rpm六、拷贝到离线服务器可以用U盘SCPWinSCPrz/sz例如scp*.rpm root离线服务器IP:/opt/redis_rpms/七、离线安装 rpm 包进入目录cd/opt/redis_make执行rpm-Uvh*.rpm--force--nodeps如果依赖顺序问题严重推荐yum localinstall-y*.rpm即使离线也能安装本地 rpm。八、再次检测环境重新执行./check_redis_env.sh直到检测结果: Redis编译环境已满足九、准备 Redis 源码包联网机器下载推荐稳定版redis-6.2.22.tar.gz官方下载Redis官方下载页或者源码Redis Github Releases上传到服务器例如/opt/redis/十、解压 Redis移动文件:mv redis-6.2.22.tar.gz /opt/redis_make/进入目录cd/opt/redis_make/解压tar-zxvfredis-6.2.22.tar.gz-C/opt/redis_make/进入源码目录cdredis-6.2.22十一、开始编译 Redis直接编译make正常会看到Hint: Its a good idea to run maketest表示编译成功。十二、如果编译失败最常见1、gcc 不存在报错cc:commandnot found说明 gcc 没装。2、jemalloc 编译失败报错类似jemalloc/jemalloc.h: No suchfile解决makeMALLOClibc这是离线环境最常用方案。完整命令makeMALLOClibc十三、安装 Redis创建安装目录:mkdir -p /opt/redis6执行makePREFIX/opt/redis6/install说明参数作用PREFIX安装目录安装后可查看目录下/opt/redis6/bin是否包含redis-server redis-cli redis-benchmark十四、创建 Redis 运行目录mkdir-p/opt/redis6/confmkdir-p/opt/redis6/datamkdir-p/opt/redis6/logs十五、复制配置文件cp/opt/redis_make/redis-6.2.22/redis.conf /opt/redis6/conf/十六、修改 Redis 配置编辑vi/opt/redis6/conf/redis.conf如何在vi 编辑文档时查找内容[!TIP]打开文件如果尚未打开vi /opt/redis6/conf/redis.conf进入命令模式按Esc键确保你处于命令模式左下角没有-- INSERT --提示。输入搜索命令输入/requirepass然后按Enter。/表示向下搜索requirepass是你要查找的文本跳转结果按n键跳到下一个匹配项按N键跳到上一个匹配项修改*(必须配置)、日志文件logfile /opt/redis6/logs/redis.log*(必须配置)、后台运行daemonize yes*(必须配置)、数据目录dir /opt/redis6/data1、绑定IP允许远程bind 0.0.0.0仅本机bind 127.0.0.12、关闭保护模式内网可关闭protected-mode no3、端口port 63794、添加密码requirepass cqabj208十七、启动 Redis/opt/redis6/bin/redis-server /opt/redis6/conf/redis.conf十八、检查 Redis 是否启动查看进程ps-ef|grepredis查看端口netstat-lntp|grep6379如果没有 netstatss-lntp|grep6379十九、连接 Redis/opt/redis6/bin/redis-cli执行ping返回PONG说明安装成功。二十、配置 systemd 服务推荐创建vi/usr/lib/systemd/system/redis.service内容[Unit] DescriptionRedis Afternetwork.target [Service] Typeforking ExecStart/opt/redis6/bin/redis-server /opt/redis6/conf/redis.conf ExecStop/opt/redis6/bin/redis-cli shutdown Restartalways [Install] WantedBymulti-user.target二十一、加载服务加载服务:systemctl daemon-reload记得停止刚刚启动Redisps -ef | grep redis #查询出PID,使用 kill -9 [PID] 杀掉进程启动systemctl start redis查看状态systemctl status redis开机启动systemctlenableredis二十二、离线环境最容易踩的坑1、glibc 版本不兼容联网机器下载 rpm 时必须同版本麒麟同CPU架构查看cat/etc/os-releaseuname-m2、gcc版本太低Redis 7 推荐 GCC 5查看gcc-v3、make 编译卡死通常是内存不足swap不足查看free-h二十三、企业里更推荐的方法非常重要很多生产环境不会源码编译 Redis。而是直接准备编译好的二进制包因为避免 gcc 环境避免依赖地狱更稳定更容易标准化部署也就是联网机器编译好makePREFIX/opt/redis6install然后直接打包tar-zcvf/opt/redis6.tar.gz /opt/redis6离线服务器直接解压即可运行。这个是很多内网生产环境真实做法。