redis6.2 systemd 启动 提示 redis.service: Failed with result ‘protocol‘.

问题描述

今天安装了redis的最新版本 6.2.6(截止文章发布前最新版本), 安装和启用 tls 功能都一切正常,配置文件也没问题,systemctl 启动时 提示了 redis.service: Failed with result 'protocol'.

在这里插入图片描述

线上系统版本

root@local-2:/etc/redis/conf# cat /etc/issue
Ubuntu 18.04.5 LTS \n \l

遇事不解,网上搜索

我当时比较懵逼,愣愣的复制错误 前往 google ,点了个 几个类似问题的文章,Daemonization of Redis 6.0 #7217Redis service is not starting,看完了他们的讨论,我试了一下其中感觉有点用的方法.

1.取消后台运行,前台运行查看错误输出
daemonize yes --> daemonize no
我修改后重新运行 systemctl start redis,发现它没报任何错误,直接运行了。这搞得我更懵逼了。

2.直接 redis-server redis.conf
运行完毕后,我都只能直呼好家伙,我更懵逼了。
没错,我又运行成了,没有任何错误信息提示,我现在的内心是渴望有错误提示的,但是它没能如我的愿。

解决问题

我试完了上述方法,也重新重启了不知道多少遍redis 服务,它还是提示 redis.service: Failed with result 'protocol'. 我承认我心态有点小崩,但是不虚,还有 systemd的 redsi.service 文件 没排查,其实我内心不太相信这 redis.service 有错误,因为我本地真机 就是这样配置运行的,没有问题。

本地真机

[Unit]
Description=redis
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=notify
ExecStart=/usr/local/bin/redis-server /etc/redis/conf/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/bin/redis-cli -p 6379 shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target

解释一下这个 --supervised systemd , 因为要在 systemd 下运行 redis,您需要设置supervised systemd.还需要通过Type=notify在[Service]section中的设置来告诉systemd redis会在这种模式下运行。
这还是我本地systemd 启动 redis 时 总是 退出时,去搜索的文章.Redis not starting with systemctl

线上服务器

但也就是这个导致了我线上服务器redis 启动不了,现修改完毕后,已经能正常systemd 控制启动

[Unit]
Description=redis
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
# 这个根据配置填写
ExecStop=/usr/bin/redis-cli -p 6379 -a 123456 shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target

虽然问题解决了,但是我还是不太清楚为啥 加上 --supervised systemd 就启动不成功。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
这个错误提示意味着系统无法找到redis.service单元。这可能是由于Redis未正确安装或者Redis服务单元文件未正确配置导致的。 首先,确保Redis已经正确安装在系统中。你可以通过运行以下命令来安装Redis: ``` sudo apt update sudo apt install redis-server ``` 安装完成后,尝试启动Redis服务: ``` sudo systemctl start redis ``` 如果仍然出现相同的错误,请检查是否存在redis.service单元文件。你可以使用以下命令来查找: ``` sudo find / -name "redis.service" ``` 如果未找到redis.service文件,那么可能是Redis未正确安装或者Redis服务单元文件丢失。在这种情况下,你可以尝试重新安装Redis来解决该问题。 如果找到了redis.service文件,但仍然无法启动Redis,可能是redis.service配置有问题。你可以编辑该文件并确保正确配置。通常,redis.service文件位于`/etc/systemd/system/`目录下。可以使用以下命令来编辑该文件: ``` sudo nano /etc/systemd/system/redis.service ``` 在编辑器中,检查以下内容是否正确配置: ``` [Unit] Description=Redis In-Memory Data Store After=network.target [Service] ExecStart=/usr/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target ``` 确保ExecStart行中的路径和配置文件路径是正确的。保存文件后,尝试重新启动Redis服务: ``` sudo systemctl start redis ``` 这应该能够解决"Failed to start redis.service: Unit not found."错误。如果问题仍然存在,你可能需要进一步检查系统配置或查看其他错误日志来找出问题所在。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值