使用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前面的注释,修改成:
1
2
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
里面写:
1
d /var/run/redis 0770 redis redis
systemd Unit文件
创建一个redis.service文件touch /etc/systemd/system/redis.service
,
如果里面有东西,就先清空。里面要写:
1
2
3
4
5
6
7
8
9
10
11
12
[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里创建目录:
1
useradd --system -U -M redis
然后创建/var/lib/redis
和/var/run/redis
,并且设置好权限:
1
2
3
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>