我已经运行了几个月从源代码构build的redis,但是我今天转而使用了一个软件包pipe理器(在Debian上运行)。 它运行良好,直到我将工作目录更改为/home/redis/server
。 现在,当使用sudo service redis-server start
,出现错误,并将以下内容添加到redis日志中:
Can't chdir to '/home/redis/server': Permission denied
recursion地在redis目录下运行getfacl
返回
# file: . # owner: redis # group: redis user::rwx group::rwx other::rwx # file: server # owner: redis # group: redis user::rwx group::rwx other::rwx # file: server/dump.rdb # owner: redis # group: redis user::rwx group::rwx other::rwx
如果我使用/usr/bin/redis-server /etc/redis/redis.conf
进行redis的手工运行,它/usr/bin/redis-server /etc/redis/redis.conf
正常工作,所以只有在尝试使用包含的init.d脚本时才会发生。
事实certificate,Redis中包含的init脚本实际上并未使用,而是使用/etc/systemd/system/redis.service
。 这个文件中有许多安全限制,包括ProtectHome=yes
和限制可以写入的目录。 我已经修改这个文件来注释掉ProtectHome=yes
并添加一行ReadWriteDirectories=-/home/redis/server
,现在它可以正常工作。
你应该确保redis服务是由init.d和redis用户上下文启动的。
编辑/etc/init.d/redis-server
并添加
--chuid redis:redis
start-stop-daemon
被调用。 由于su
到redis工作,这应该修复错误。