当前位置:首页 > 问答 > 正文

动Redis开机自启怎么弄,省时间又方便,redis启动自动搞定了

用systemd来搞(推荐,现在的主流系统基本都这么玩)

这个方法最适合现在大多数的Linux系统,比如Ubuntu 16.04以后、CentOS 7以后,systemd是系统的大管家,让它来管Redis的启动,最规范也最稳当。

你得找到Redis自带的一个服务文件模板,Redis在编译安装的时候,通常会在源码包里放一个叫 redis.service 的文件,你找找看,一般在 utils 或者 contrib 目录下,你的Redis源码包解压后在 /opt/redis-6.2.6,那这个文件路径可能就是 /opt/redis-6.2.6/utils/redis.service

找到这个文件后,我们把它复制到systemd的地盘里,打开你的终端,输入命令(具体路径换成你自己的):

sudo cp /opt/redis-6.2.6/utils/redis.service /etc/systemd/system/

复制过去之后,先别急着启动,得看看这个文件里的配置合不合适,用编辑器打开它看看:

sudo vim /etc/systemd/system/redis.service

里面有好几行关键的东西,你得检查一下:

  1. ExecStart:这一行是告诉systemd怎么启动Redis的,默认可能是 redis-server /path/to/redis.conf,你得确认这个 /path/to/redis.conf 是不是你实际使用的Redis配置文件路径,如果你安装的时候配置文件放别的地方了(比如常见的 /etc/redis/6379.conf),就把这里改掉,不改的话,它可能找不到配置。
  2. PIDFile:这个是记录Redis进程ID的文件位置,一般配置文件中设置了就行,这里保持和配置文件里 pidfile 的设定一致就好。
  3. UserGroup:用哪个用户和用户组来运行Redis,为了安全,最好不要用root,可以改成 redis 或者其他专门的用户,如果你还没创建这个用户,可以用命令 sudo useradd -r -s /bin/false redis 先创建一个系统用户。

检查修改无误后,保存退出。

因为可能是新复制的文件,或者你修改了配置文件路径,得让systemd重新加载一下它认识的服务列表:

sudo systemctl daemon-reload

你就可以尝试用systemd启动Redis了:

sudo systemctl start redis

启动后,别忘了一眼,看它是不是真的在欢快地跑着:

sudo systemctl status redis

如果看到是 active (running) 的字样,那就说明启动成功了。

就是实现开机自启的关键一步了,输入命令:

sudo systemctl enable redis

这个命令的作用是在系统的启动流程里创建一个符号链接,告诉系统:“开机的时候,记得把Redis服务也给我拉起来”,执行完后,你会看到类似 Created symlink ... 的提示,这就表示成功了。

以后,你的Redis就会随着电脑开机自己启动了,想关掉它?用 sudo systemctl stop redis,想禁止它开机自启?用 sudo systemctl disable redis

老系统的法子(用init.d脚本)

如果你的系统比较老,还在用SysV Init(比如CentOS 6或更早的版本),那上面那套就不管用了,得用init.d的方式。

幸运的是,Redis源码包里通常也照顾到了老系统,在同一个 utils 目录下,有个叫 redis_init_script 的脚本,把它复制到init.d的目录下:

sudo cp /opt/redis-6.2.6/utils/redis_init_script /etc/init.d/redis_6379

注意,这里的文件名 redis_63796379是Redis的默认端口号,这样命名是为了区分可能存在的多个Redis实例。

复制过去后,这个脚本可能没有执行权限,得给它加上:

sudo chmod +x /etc/init.d/redis_6379

同样,你需要编辑这个脚本,检查里面的关键变量,REDISPORT(端口号,默认6379,一般不用改)、EXEC(redis-server可执行文件的路径,/usr/local/bin/redis-server)、CLIEXEC(redis-cli的路径)、PIDFILE(pid文件路径)、CONF(配置文件路径,这个很重要,/etc/redis/6379.conf),确保这些路径都和你实际的安装路径对得上。

你可以试试这个脚本能不能正常启动Redis:

sudo /etc/init.d/redis_6379 start

在老系统上,设置开机自启的命令是 chkconfig,把这个服务加到启动项里:

sudo chkconfig --add redis_6379
sudo chkconfig redis_6379 on

这样,开机的时候,系统也会自动执行这个脚本启动Redis了。

最偷懒的法子(往rc.local里加一行)

这个方法最直接,但也最不“优雅”,算是个快速解决问题的野路子,适合临时用用,或者对系统服务管理要求不高的环境。

它的原理很简单:系统在启动的最后,会执行一个叫 /etc/rc.local 的脚本(如果这个文件存在且有执行权限),你只需要把启动Redis的命令写进这个文件就行了。

先用编辑器打开这个文件:

sudo vim /etc/rc.local

在文件末尾,exit 0 这一行之前,加上启动Redis的命令,命令的写法要确保在任何用户环境下都能正确找到redis-server,所以最好写全路径,为了避免启动脚本卡住,最好在命令末尾加上 & 让它后台运行。

/usr/local/bin/redis-server /etc/redis/6379.conf &

保存退出,要确保 /etc/rc.local 这个文件本身是有执行权限的:

sudo chmod +x /etc/rc.local

这样下次开机时,系统就会自动执行你加进去的那行命令来启动Redis了。

  • 首选方法一(systemd):规矩、靠谱、好管理,是现代Linux系统的标准做法。
  • 万不得已用方法二(init.d):如果你的系统太老,不支持systemd,那就用这个。
  • 临时凑合用方法三(rc.local):图快,不想了解服务管理,只是简单粗暴地想让它开机跑起来,可以用这个,但长远看不如方法一专业。

根据你的情况和喜好,选一种就行,基本上照着步骤做,Redis开机自启就搞定了。

动Redis开机自启怎么弄,省时间又方便,redis启动自动搞定了