ubuntu之无法使用修改后的配置启动 Redis (/var =>/home/redis)

think 阅读:5 2024-06-03 14:00:57 评论:0

尝试使用修改后的配置在 Ubuntu 16.04 上启动 Redis 3.2 时遇到问题。 /etc/redis/redis.conf 的变化如下:

#logfile /var/log/redis/redis-server.log 
logfile /home/redis/logs/redis-server.log 
... 
#dir /var/lib/redis 
dir /home/redis/data 

这是 journalctl -xe 的输出:
run-parts[5853]: run-parts: executing /etc/redis/redis-server.pre-up.d/00_exampl 
redis-server[5857]: *** FATAL CONFIG FILE ERROR *** 
redis-server[5857]: Reading the configuration file, at line 163 
redis-server[5857]: >>> 'logfile /home/redis/logs/redis-server.log' 
redis-server[5857]: Can't open the log file: Permission denied 
systemd[1]: redis-server.service: Control process exited, code=exited status=1 
systemd[1]: Failed to start Advanced key-value store. 

如您所见,start-up 似乎无法在 /home/redis 下执行任何操作目录,而它由 redis 所有用户和组( chown -R redis:redis /home/redis 应用)。

脚注
  • 此配置曾经在 Debian Wheezy/Jessie 和 Ubuntu 14.04
  • 上运行良好
  • Redis 使用默认配置正确启动
  • touchchmod日志文件未修复
  • 还使用 Redis 4 进行了测试(通过 Chris Lea ppa)
  • 请您参考如下方法:

    正如@h0x91B 在评论中解释的那样,您可以启用 selinux看看它是否有效。

    也就是说,如果您不想使用 selinux ,这里有一个解决方法:

  • 编辑 Redis systemd服务文件/etc/systemd/system/redis.service , 设置 ProtectHome=no并添加 ReadWriteDirectories=-/home/redis
  • 使用 sudo systemctl daemon-reload 重新加载 systemd
  • 启动 Redis sudo service redis-server start

  • 引用文献
  • http://damiengustave.fr/de-la-securite-de-systemd
  • https://serverfault.com/a/801913/338505

  • 标签:Redis
    声明

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    关注我们

    一个IT知识分享的公众号