使用lnmp一键包安装redis,它会默认开放本地回环来让其他应用连接。更加高效的方法是用Unix Domain Socket来连接,那就要修改相关的配置文件。
如果不知道配置文件在哪,用locate命令来找。
设置redis.conf
参考digitalocean的教程,修改redis.conf,将supervised no
改成supervised systemd
以便之后写systemd unit来管理redis。然后将dir改成dir /var/lib/redis
来让redis 的数据库放在这个文件夹里,符合FHS规范,方便管理。
然后去掉unixsocket和unixsocketperm前面的注释,修改成:
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
第一行设定socket文件在哪,第二行设定socket的权限。关于权限的讨论,看github的这个issue:enable redis connection via unix domain socket instead of tcp #204。
设置socket目录开机创建
为了保证/var/run/redis
在开机时存在而且权限正确,需要新建一个tmpfile.d文件:
1 | touch /usr/lib/tmpfiles.d/redis.conf |
里面写:
d /var/run/redis 0770 redis redis
systemd Unit文件
创建一个redis.service文件touch /etc/systemd/system/redis.service
,
如果里面有东西,就先清空。里面要写:
1 | [Unit] |
注意Type=notify
,DigitalOcean没有提到这一点,但是因为supervised写了systemd,如果不指定这一项会导致unit启动失败。
创建redis用户/组
创建系统用户,且创建同名的组,但是不在/home里创建目录:
1 | useradd --system -U -M redis |
然后创建/var/lib/redis
和/var/run/redis
,并且设置好权限:
1 | mkdir /var/lib/redis /var/run/redis |
结束
启动redis:systemctl start redis
其他需要连接redis的需要加入redis用户组:usermod -a -G redis <user_name>