因为开发的需要,我需要在WSL2虚拟机上启动多个redis服务,这里把配置步骤记录下来,以便以后查询。
在
有在Debian中安装多个redis服务的详细介绍。
如果是systemd方式,其实可以通过
systemct start redis@some-config
来使用不同的config文件来启动不同配置的redis服务
在WSL2上没有systemd服务,所以通过
systemctl start redis
这种方法是没办法启动服务的。
所以在WSL2上只能以老式的init.d方式启动服务,也就是在/etc/init.d目录下有一个服务的启动文件,然后通过
sudo /etc/init.d/redis-server stop
# or
sudo service redis-server stop
的方法才能对服务进行操作。
所以我基于本文开头的那篇文章结合init.d做了一个改进,可以在WSL2上启动多个redis服务。
安装默认的redis服务
第一步,使用命令sudo apt-get update更新软件源。
第二步,使用命令sudo apt-get install redis-server直接安装redis。
第三步,使用命令sudo service redis-server start开启redis服务。
sudo apt-get update
sudo apt-get install redis-server
sudo service redis-server start
准备第2个redis服务的配置文件
首先复制一份redis的基本配置文件。在WSL2上,受到文件系统权限的限制,所以复制的时候需要使用sudo,这样生成的文件的owner会变成root,所以后面记得要把owner改过来。
sudo cp /etc/redis/redis.conf /etc/redis/redis-second.conf
sudo ls -l /etc/redis/redis-second.conf
chown redis:redis /etc/redis/redis-second.conf
然后编辑这份文件。WSL2 Debian自带的编辑器是nano,不是vi
sudo nano /etc/redis/redis-second.conf
找到
port | 默认值是6379,改成任意可用端口,比如6380 |
unixsocket | 这一行默认是注释掉的,其实一般也没必要采用socket通讯。可以改成 /var/run/redis/redis-server-second.sock 最好不要加,而是保持注释 |
pidfile | /var/run/redis/redis-server-second.pid |
logfile | /var/log/redis/redis-server-second.log |
dbfilename | dump-second.rdb |
新的pid文件会在运行时自动生成,不必担心。
新的log文件不会自动生成,所以必须要先手动生成。这里还会涉及到文件系统权限的问题,注意修改访问权限,同时还要注意修改owner
sudo touch /var/log/redis/redis-server-second.log
sudo ls -l /var/log/redis/
# 根据之前的redis.log文件的权限修改新生成的这个log文件的访问权限,在我的电脑上是550权限
sudo chmod 550 /var/log/redis/redis-server-second.log
# 另外文件的owner也要改成和之前的旧的log文件一致
sudo chown redis:adm /var/log/redis/redis-server-second.log
准备第2个redis服务的启动文件
先看看默认的redis的文件是怎么样的,为了避免有遗漏,这里使用了通配符
sudo ls -l /etc/init.d/redis*
可以看到/etc/init.d/redis-server的owner是root:root
复制该文件
sudo cp /etc/init.d/redis-server /etc/init.d/redis-server-second
然后编辑这个新的service文件
sudo nano /etc/init.d/redis-server-second
前面#开头的几行近乎注释,不会对服务的运行带来影响,只是给人看的一些注释内容,可以不改,但是为了将来不会理解错误,最好改掉。
把Short-Description的内容改成redis-server-second,把Description的内容改成redis-server-second
找到对应位置后修改
原内容 | 改成 |
DAEMON=/usr/bin/redis-server | 不要动 |
DAEMON_ARGS=/etc/redis/redis.conf | DAEMON_ARGS=/etc/redis/redis-second.conf |
NAME=redis-server | NAME=redis-server-second |
DESC=redis-server | DESC=redis-server-second |
RUNDIR=/var/run/redis | 不要动 |
PIDFILE=$RUNDIR/redis-server.pid | PIDFILE=$RUNDIR/redis-server-second.pid |
修改后,redis的第2个服务就安装好了
然后
sudo service redis-server-second start
就可以启动了。
管理的话,和其他service一样