使用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文件:
touch /usr/lib/tmpfiles.d/redis.conf
里面写:
d /var/run/redis 0770 redis redis
systemd Unit文件
创建一个redis.service文件:
touch /etc/systemd/system/redis.service
如果里面有东西,就先清空。里面要写:
[Unit] Description=Redis In-Memory Data Store After=network.target [Service] User=redis Group=redis Type=notify ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target
注意Type=notify,DigitalOcean没有提到这一点,但是因为supervised写了systemd,如果不指定这一项会导致unit启动失败。
创建redis用户/组
创建系统用户,且创建同名的组,但是不在/home里创建目录:
useradd --system -U -M redis
然后创建/var/lib/redis和/var/run/redis,并且设置好权限:
mkdir /var/lib/redis /var/run/redis chown redis:redis /var/lib/redis /var/run/redis chmod 770 /var/lib/redis
结束
启动redis:
systemctl start redis
其他需要连接redis的需要加入redis用户组:
usermod -a -G redis <user_name>