redis-7.4.2 通过 systemd管理,rpmbuild spec文件参考

redis-7 和 redis 5 版本在配置为systemd 方式管理时,配置关于有些许区别,否则会报systemctl status redis 如下错误:

redis.service: control process exited, code=exited status=1 Failed to
start Redis persistent key-value database. Unit redis.service entered
failed state.

这类报错很多没什么参考意义,可以尝试通过启动日志等排查具体问题,

journalctl -xe查看报错如下:

– Unit redis.service has begun starting up.
May 22 18:11:54 worker1 systemd[1]: Failed to start Redis persistent key-value database.
– Subject: Unit redis.service has failed
– Defined-By: systemd
– Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

– Unit redis.service has failed.

– The result is failed.
May 22 18:11:54 worker1 systemd[1]: Unit redis.service entered failed state.
May 22 18:11:54 worker1 systemd[1]: redis.service failed.
May 22 18:11:54 worker1 polkitd[795]: Unregistered Authentication Agent for unix-process:103583:240646911 (system bus name :1.17442, object path /org/freedesktop/PolicyKit1/A

正确的配置如下:
/usr/lib/systemd/system/redis.service

[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/usr/libexec/redis-shutdown
Restart=on-failure
Type=simple  #注意这里为simple即可,旧版本为notify
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=0755[Install]
WantedBy=multi-user.target

配置文件
关键信息如下

daemonize no   #配置说明里面虽然说当supervised 为systemd的这里的设置不影响,但实测必须为no,为yes则自动报错
supervised systemd  #显示指定管理方式为systemd 

可将redis打包为rpm方便安装,spec文件如下:
redis-7.4.2.spec

Name:   redis
Version:        7.4.2
Release:        1%{?dist}
Summary:        A persistent key-value databaseGroup:  Applications/Databases
License:        BSD
URL:    http://redis.io
Source0:        %{name}-%{version}.tar.gz
Source1:    redis-7.conf
Source2:    redis-7.service
Source3:    redis-shutdown
BuildRoot:       %{_tmppath}/%{name}-%{version}
BuildRequires:  tcl >= 8.5
ExcludeArch:      ppc64
#Requires:%description
Redis is an advanced key-value store. It is similar to memcached but the data
set is not volatile, and values can be strings, exactly like in memcached, but
also lists, sets, and ordered sets. All this data types can be manipulated with
atomic operations to push/pop elements, add/remove elements, perform server side
union, intersection, difference between sets, and so forth. Redis supports
different kind of sorting abilities.%prep
%setup -q%build
make%install
rm -fr %{buildroot}
make  PREFIX=%{buildroot}/home/software/redis  install
mkdir -p %{buildroot}/home/software/redis/log
install -p -D -m 644 %{SOURCE1} %{buildroot}/home/software/redis/conf/%{name}.conf
install -p -D -m 644 %{SOURCE2} %{buildroot}/usr/lib/systemd/system/redis.service
install -p -D -m 755 %{SOURCE3} %{buildroot}/usr/libexec/redis-shutdown%pre%post
if [ $1 -eq 1 ];then# 第一次安装时启用服务ln -s /home/software/redis /usr/local/redisln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli/bin/systemctl daemon-reload/bin/systemctl enable %{name}.service >/dev/null 2>&1 || :
fi%preun
if [ $1 -eq 0 ]; then/bin/systemctl disable %{name}.service >/dev/null 2>&1 || :/bin/systemctl stop %{name}.service >/dev/null 2>&1 || :
fi%postunrm -f /usr/local/bin/redis-clirm -f /usr/local/redisrm -fr /home/software/redisrm -f /usr/libexec/redis-shutdownrm -f /usr/lib/systemd/system/redis.service%files
/home/software/redis
/usr/lib/systemd/system/redis.service
/usr/libexec/redis-shutdown%clean
rm -fr %{buildroot}%changelog
* Thu May 22 2025 Rockstics <rockstics@163.com> - 7.4.2-1
- Initial package creation for Redis 7.4.2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025-05-26 什么是“AI 全栈”

AI全栈&#xff1a;模型 表示学习 向量库 API UI 一句话定义&#xff1a; ​ AI 全栈开发&#xff0c;是指开发者从原始文本/语音/图像开始&#xff0c;结合大模型能力&#xff0c;构建完整应用闭环的技术能力栈。 AI全栈应用的过程 AI应用 ≠ 一个GPT接口&#xff0c;…

康师傅的“价值战”答卷:一碗面的创新与担当

低价策略、口味雷同、营销跟风……方便面行业曾长期陷于同质化竞争的泥潭&#xff0c;不过近年来&#xff0c;行业竞争逻辑已悄然改变。 一方面来源于宏观环境的变化&#xff0c;想要在缩量市场下保住大盘&#xff0c;一定要保持逆向思维的能力&#xff0c;另一方面&#xff0…

高性能管线式HTTP请求

高性能管线式HTTP请求:原理、实现与实践 目录 高性能管线式HTTP请求:原理、实现与实践 1. HTTP管线化的原理与优势 1.1 HTTP管线化的基本概念 关键特性: 1.2 管线化的优势 1.3 管线化的挑战 2. 高性能管线式HTTP请求的实现方案 2.1 技术选型与工具 2.2 Java实现:…

传输线上的信号速度与阻抗无关,主要由频率决定

阻抗与传播速度无关 通过计算我们可以知道&#xff0c;导体流过电流时&#xff0c;电子实际上的速度只有1cm/s。是很慢的。 导线的电阻对传输线上信号的传播速度几乎没有任何影响。只在一些极端的情况下&#xff0c;互连的电阻才会影响信号的传播速度&#xff0c;并且这个影响…

YOLOv1 详解:单阶段目标检测算法的里程碑

在目标检测领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列算法凭借其高效性和实用性&#xff0c;成为了行业内的明星算法。其中&#xff0c;YOLOv1 作为 YOLO 系列的开山之作&#xff0c;首次提出了单阶段目标检测的思想&#xff0c;彻底改变了目标检测算…

免费开源 PDF 阅读器 自带虚拟打印机功能 多格式兼容

各位办公小能手们&#xff0c;今天咱来聊聊一款超厉害的PDF工具——PDFLite&#xff01; 这PDFLite啊&#xff0c;那可是轻量级、免费又开源的好东西。它能干啥呢&#xff1f;主要就是能读PDF文件&#xff0c;还能转换文件格式&#xff0c;做基础的文档管理。下面咱就说说它的…

Mac Python 安装依赖出错 error: externally-managed-environment

Mac Python 使用 ip3 install -r requirements.txt 出错 This environment is externally managed ╰─> To install Python packages system-wide, try brew installxyz, where xyz is the package you are trying toinstall.If you wish to install a Python library th…

Windows11+WSL2+Ubuntu22 安装

1.首先要获得管理员权限 2.直接在电脑搜索栏搜索 “Turn Windows features on or off”, 勾选下面两个条目&#xff1a; Virtual Machine Platform 和 Windows Subsystem for Linux 3.重启电脑 4.电脑搜索栏搜索“Windows PowerShell”&#xff0c;运行下面命令设置WSL2为默…

解决 iTerm2 中 nvm 不生效的问题(Mac 环境)

解决 iTerm2 中 nvm 不生效的问题&#xff08;Mac 环境&#xff09; 标题 《为什么 iTerm2 无法使用 nvm&#xff1f;—— 解决 Mac 终端环境变量冲突指南》 问题描述 许多开发者在 Mac 上使用 nvm 管理 Node.js 版本时&#xff0c;发现&#xff1a; 原生终端&#xff1a;n…

React的单向数据绑定

文章目录 单项数据绑定通过onChange方法&#xff0c;实现双向数据绑定 单项数据绑定 在 Vue 中&#xff0c;可以通过 v-model 指令来实现双向数据绑定。但是&#xff0c;在 React 中并没有指令的概念&#xff0c;而且 React 默认不支持 双向数据绑定。 React 只支持&#xff…

AWS関連職種向け:日本語面接QA集

1. 自己紹介&#xff08;じこしょうかい&#xff09; Q&#xff1a;簡単に自己紹介をお願いします。 A&#xff1a; はい、〇〇と申します。これまで約4年間、主にAWSを基盤としたインフラ設計・構築・運用に従事してまいりました。VPCやEC2、RDS、S3などの基本サービスの設計…

AlphaCore GPU 物理仿真引擎内测邀请

AlphaCore 是 MooreThreads 研发的下一代 GPU 物理仿真引擎&#xff0c;为影视特效&#xff0c;游戏交互&#xff0c;数字孪生等领域&#xff0c;提供超高精度的仿真模拟。 申请试用​ 目前我们的Catalyst FX 还处于内部申请测试阶段&#xff0c;请发送邮件至 alphacoremthre…

鸿蒙OSUniApp 实现的日期选择器与时间选择器组件#三方框架 #Uniapp

UniApp 实现的日期选择器与时间选择器组件 在移动应用开发中&#xff0c;日期选择器和时间选择器是表单、预约、日程、打卡等场景中不可或缺的基础组件。一个好用的日期/时间选择器不仅能提升用户体验&#xff0c;还能有效减少输入错误。随着 HarmonyOS&#xff08;鸿蒙&#…

嵌入式开发STM32 -- 江协科技笔记

1.背景介绍及基础认知 8大输入输出 斯密特触发器&#xff1a;高于设定阈值输出高电平&#xff0c;低于设定阈值输出低电平 有关上拉输入、下拉输入、推挽输出、开漏输出、复用开漏输出、复用推挽输出以及浮空输入、模拟输入的区别 1、上拉输入&#xff1a;上拉就是把电位拉高…

RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头

视频链接&#xff1a;RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头_哔哩哔哩_bilibili RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头 RTSP&#xff08;Real-Time Streaming Protocol&#xff0c;实时流传输协议&#xff09; 是一种基于文本的应用层协议&…

Python面试1

1. 解释型语言和编译型语言的区别 编译型语言&#xff1a; 将程序编译成二进制可执行程序&#xff08;C、C) 解释型语言&#xff1a; 将程序逐行解释运行&#xff08;python&#xff09; Java不是将源程序直接编译机器语言&#xff0c;而是编译成字节码文件&#xff0c;然后用…

输入一串字符,统计其中字母的个数

#include <stdio.h> int main() { char ch; int count 0; printf("请输入一串字符&#xff1a;\n"); while ((ch getchar())! \n) { if ((ch > a && ch < z) || (ch > A && ch < Z)) { count; } } printf("字母的个数为&a…

git基础语法回顾

1. 初始化与克隆 git init 初始化一个新的本地仓库。git clone <repo-url> 克隆远程仓库到本地&#xff08;如 git clone https://github.com/user/repo.git&#xff09;。 2. 基础操作 git add <file> 将文件添加到暂存区&#xff08;如 git add main.py&#x…

华为仓颉语言初识:结构体struct和类class的异同

前言 华为仓颉语言是鸿蒙原生应用的一种新的编程语言&#xff0c;采用面向对象的编程思想&#xff0c;为开发者带来新的开发体验。不仅可以和 ArkTs 相互调用&#xff0c;更能提升应用程序的性能&#xff0c;更重要的是仓颉语言的特点结合了 java 和 C 的特点。对开发者来说比…

电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测

电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测 目录 电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测预测效果基本描述程序设计参考资料 预测效果 基本描述 电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测 运行环境Matlab2023b及以上&#xff0c;锂电池剩余寿…