这是在ubuntu-16.04
我尝试在/etc/system/systemd/ redis -custom.service中编写自定义redis服务。
服务失败(尽管redis启动,并重新启动),因为/var/run/redis不存在,并且无法读取pidfile
默认的redis-service使用tmpfiles.d创建/var/运行
cat /usr/lib/tmpfiles.d/redis-server.conf
d /run/redis 2775 redis redis -我想把它合并到服务文件中,所以我查看了/lib/system/systemd/opendkim.service中的opendkim实现,它使用了一种不同的策略,在释放特权之前将mkdir放在服务文件中:
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim好主意。所以我试着用它来对付瑞迪斯:
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /var/run/redis
ExecStartPre=-/bin/chown redis.redis /var/run/redis这在mkdir上每次都会因为缺乏特权而失败。我设置了一个空服务器来测试这一点,并且只在上面运行redis/opendkim,这样我就可以尝试查找opendkim可能做的不同的文件。我搞不懂这个。
我可以通过指定RuntimeDirectory=/var/run/redis来为redis创建目录,这是一个更好的解决方案。然而,我想了解为什么开放源码的实现是有效的。我好像漏掉了什么。
发布于 2018-05-08 16:46:18
我已经为同样的问题挣扎了一个小时.
TL;DR:你应该把
ReadOnlyDirectories=-/
在……里面
/lib/systemd/system/redis-server.service
并作为sudo systemctl daemon-reload发行
我运行Redis 3.2.6在一个RisanStrech9.4OS上,并已将/var/log安装为tmpfs,以降低我的RaspberPI3B+‘S microSD卡上的写量。
ExecStartPre=-/bin/mkdir /var/log/redis
ExecStartPre=-/bin/chmod 750 /var/log/redis
ExecStartPre=-/bin/chown redis:redis /var/log/redis我还在Redis的服务文件中添加了一些预启动命令,如上面所示,但是它仍然无法创建目录,因为它在启动时一直在抱怨奇怪的Read-only file system问题:
May 08 19:17:48 pisky systemd[1]: Starting Advanced key-value store...
-- Subject: Unit redis-server.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit redis-server.service has begun starting up.
May 08 19:17:48 pisky mkdir[20564]: /bin/mkdir: cannot create directory ‘/var/log/redis’: Read-only file system
May 08 19:17:48 pisky chmod[20567]: /bin/chmod: cannot access '/var/log/redis': No such file or directory
May 08 19:17:48 pisky chown[20570]: /bin/chown: cannot access '/var/log/redis': No such file or directory
May 08 19:17:49 pisky run-parts[20572]: run-parts: executing /etc/redis/redis-server.pre-up.d/00_example
May 08 19:17:49 pisky redis-server[20580]: *** FATAL CONFIG FILE ERROR ***
May 08 19:17:49 pisky redis-server[20580]: Reading the configuration file, at line 163
May 08 19:17:49 pisky redis-server[20580]: >>> 'logfile /var/log/redis/redis-server.log'
May 08 19:17:49 pisky redis-server[20580]: Can't open the log file: No such file or directory
May 08 19:17:49 pisky wpa_supplicant[457]: wlan0: Failed to initiate sched scan
May 08 19:17:49 pisky systemd[1]: redis-server.service: Control process exited, code=exited status=1
May 08 19:17:49 pisky systemd[1]: Failed to start Advanced key-value store.使用它的服务文件似乎有一些自相矛盾的参数,即:
# had to comment the below out, apparently this RO is exclusive
#ReadOnlyDirectories=-/
ReadWriteDirectories=-/var/lib/redis
ReadWriteDirectories=-/var/log/redis
ReadWriteDirectories=-/var/run/redisReadOnlyDirectories指令将/设置为只读,但由于/var/log/是在/下挂载的,它也被设置为只读.这个问题是描述了吉特布,我尝试了各自提出的解决方案,但除了注释掉上面的一行之外,它们都没有工作.
https://askubuntu.com/questions/765067
复制相似问题