我已经设置了 redis-server 并且 sudo systemctl restart redis-server 工作得很好,但是当我实现 tls 支持时,systemctl 失败,没有有用的错误消息,日志中没有任何内容,但是 redis-server 仍然可以使用此命令手动工作
./redis-server --tls-port 6379 --port 0 --tls-cert-file ./redis.crt --tls-key-file ./redis.key --tls-ca-cert-file ./ca.crt
我尝试过 Ubuntu Server 24.04 和 Debian 12 (Bookworm) - 同样的问题
有谁知道如何让它作为启用 tls 的 systemd 新贵作业工作?
我相信这与您在启动redis服务器时设置的SSL的相对路径有关。您必须在 systemd 中配置 SSL 的绝对路径。所以,系统中Redis的启动脚本应该如下:
./redis-server --tls-port 6379 --port 0 --tls-cert-file /absolute_path_cert/redis.crt --tls-key-file /absolute_path_cert/redis.key --tls-ca-cert-file /absolute_path_cert/ca.crt
另一种选择是在 redis.conf 中配置 SSL 并将 SSL 配置放在那里:
#TLS config
tls-port 6379
tls-cert-file /app/tls/redis.crt
tls-key-file /app/tls/redis.key
tls-ca-cert-file /app/tls/ca.crt
稍后,在
/etc/systemd/system/redis.service
文件中,您可以配置redis-server来调用redis.conf
:
root@redis-s-1vcpu-2gb-sgp1-02:~# cat /etc/systemd/system/redis.service
[Unit]
Description=Advanced key-value store
After=network.target
Documentation=http://redis.io/documentation, man:redis-server(1)
[Service]
Type=notify
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/bin/kill -s TERM $MAINPID
PIDFile=/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=2755
希望有帮助!