debian下编译安装redis并加入到systemd启动管理

本文介绍如何在Debian上手动编译安装Redis 6.2.6,并将其添加到systemd进行自动管理。重点在于解决编译时缺少libsystemd支持和配置systemd服务文件的步骤。确保设置daemonizeno和supervisedsystemd以实现与systemd的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址: http://blog.duhbb.com/2022/02/09/compile-and-install-redis-debian-and-add-to-systemd/
欢迎访问我的个人博客: http://blog.duhbb.com/

引言

安装遇到的问题:

systemd supervision requested or auto-detected, but Redis is compiled without libsystemd support!

systemd[1]: redis.service: Failed with result 'protocol'.

下载

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

编译并安装

安装libsystemd-dev

apt-get install libsystemd-dev

编译并安装redis

make USE_SYSTEMD=yes install

如果交给systemd管理的话, 需要在编译的时候指定USE_SYSTEMD=yes.

如果报systemd的头文件没有找到的话, 需要先安装``.

报错如下:

fatal error: systemd/sd-daemon.h: No such file or directory

systemd的service文件

文件位置:

root@mydebian:~# cat /lib/systemd/system/redis.service

文件内容如下:

# example systemd service unit file for redis-server
#
# In order to use this as a template for providing a redis service in your
# environment, _at the very least_ make sure to adapt the redis configuration
# file you intend to use as needed (make sure to set "supervised systemd"), and
# to set sane TimeoutStartSec and TimeoutStopSec property values in the unit's
# "[Service]" section to fit your needs.
#
# Some properties, such as User= and Group=, are highly desirable for virtually
# all deployments of redis, but cannot be provided in a manner that fits all
# expectable environments. Some of these properties have been commented out in
# this example service unit file, but you are highly encouraged to set them to
# fit your needs.
#
# Please refer to systemd.unit(5), systemd.service(5), and systemd.exec(5) for
# more information.

[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 /etc/redis/6379.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli -p 6379 shutdown
## Alternatively, have redis-server load a configuration file:
#ExecStart=/usr/local/bin/redis-server /path/to/your/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
root@mydebian:~#

在redis.conf的配置文件中一定要设置:

daemonize no
supervised systemd

这是因为redis要和systemd交互.

下面是一份可供参考的redis配置文件:

bind * -::*
protected-mode no
port 8000
daemonize no
pidfile "/usr/local/redis/run/redis_8000.pid"
loglevel notice
logfile "/usr/local/redis/log/redis8000.log"
save 3600 1
save 300 100
save 60 10000
stop-writes-on-bgsave-error no
dbfilename "dump8000.rdb"
dir "/usr/local/redis-6.2.3/data"
requirepass "monkey"
maxclients 1000
maxmemory 24gb
appendonly yes
appendfilename "appendonly8000.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 1gb
aof-load-truncated yes
aof-use-rdb-preamble yes
supervised systemd

systemctl相关命令

systemctl daemon-reload         # 重新加载service文件
systemctl status redis.service  # 查看redis服务的状态
systemctl enable redis.service  # 加入到开机自启中

参考资料

原文地址: http://blog.duhbb.com/2022/02/09/compile-and-install-redis-debian-and-add-to-systemd/
欢迎访问我的个人博客: http://blog.duhbb.com/

### 编译安装 Redis #### 准备工作 为了确保顺利编译安装 Redis,在 Linux 系统中需要预先配置好开发环境。这通常涉及到更新现有软件包以及安装必要的构建工具。 对于基于 Red Hat 的发行版,如 CentOS 或 RHEL,可以执行如下命令来准备环境: ```bash sudo yum update -y && sudo yum groupinstall "Development Tools" -y ``` 而对于 Debian 及其衍生版本,则应运行: ```bash sudo apt-get update && sudo apt-get install build-essential -y ``` 这些指令会下载最新的安全补丁和其他改进,安装一组用于编译源码所需的程序[^1]。 #### 下载 Redis 源代码 获取最新稳定版的 Redis 压缩包可以通过官方提供的链接完成。这里给出的是一个较旧版本的例子;建议访问官方网站以获得当前最稳定的发布版本号。 ```bash cd /tmp/ wget http://download.redis.io/releases/redis-7.0.5.tar.gz # 替换为实际要安装的具体版本 tar xzf redis-7.0.5.tar.gz cd redis-7.0.5 ``` 此部分展示了如何解压 tarball 文件将工作目录切换至新创建的文件夹内[^4]。 #### 构建与测试 一旦进入了正确的路径下,就可以开始编译过程了。由于 Redis 是用 C 语言写的,所以只需简单的几个 Makefile 调用来实现整个项目的组装。 ```bash make ``` 上述命令将会读取 `Makefile` 按照指示逐步处理各个子模块直至最终生成可执行二进制文件。如果一切正常的话,还可以继续做进一步的功能验证: ```bash make test ``` 这条语句会在本地环境中模拟一系列典型场景下的行为模式,从而帮助确认刚刚建立起来的服务端组件能否按预期运作。 #### 安装服务脚本及配置文件 当所有的单元检测都通过之后,下一步就是把刚才制作好的成果部署到合适的位置上去供日常调用了。默认情况下,只需要输入下面这个简短的命令即可自动完成剩余的工作项: ```bash sudo make install ``` 此时应该能看到类似 `/usr/local/bin/redis-server` 这样的位置已经被填充上了相应的入口点。另外别忘了将随附的那个重要的设置清单也迁移过去以便日后查阅修改: ```bash cp redis.conf /etc/ ``` 至此为止已经成功地完成了从零起步搭建一套完整的 NoSQL 数据库解决方案的任务[^2]。 #### 启动 Redis 服务器 最后一步便是激活后台守护进程让其能够响应外部请求。考虑到不同用户的个性化需求差异较大,因此推荐先仔细阅读过一遍位于 `/etc/redis.conf` 中的各项参数后再决定采用哪种方式开启实例最为恰当。一般而言有这么几种常用的方法可供选择: - 使用 init.d 脚本来控制启停状态; - 添加 systemd service unit 来管理生命周期事件; - 手工指定额外选项直接调用主应用程序。 例如,可以直接利用绝对路径指向的方式立即触发一次性的临时性加载动作: ```bash /usr/local/bin/redis-server /etc/redis.conf ``` 或者更常见的情形是将其注册成常驻型任务的一部分,这样即使机器重启也能保持在线不间断提供服务[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值