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

Redis源码装好后怎么重启才不出错,安装和重启那些事儿讲讲

关于Redis源码安装好之后的重启问题,这确实是很多刚接触源码安装的朋友会遇到的一个坎儿,感觉明明安装成功了,但一重启服务要么起不来,要么报各种奇怪的错误,这事儿得从安装开始说起,因为很多重启的“病根儿”在安装的时候就已经埋下了。

第一部分:安装时埋下的“雷”

你从Redis官网下载了那个.tar.gz的压缩包,解压后,按照经典的“三步曲”进行编译安装:make,可能还需要make test跑一下测试,最后是make install,这个过程本身一般不会出啥大问题,但关键在于接下来的配置。

很多教程会让你直接运行./utils/install_server.sh这个脚本,这个脚本是个“懒人包”,它能帮你自动完成好几件事:创建运行所需的目录(比如数据目录、日志目录)、生成配置文件、最重要的是,它会把Redis设置为系统服务,这个“设置为系统服务”就是重启后能否自动正常启动的关键。

Redis源码装好后怎么重启才不出错,安装和重启那些事儿讲讲

根据Redis源码包内自带的说明,这个脚本会问你几个问题,比如端口号、配置文件路径、日志文件路径、数据文件路径等,如果你一路回车用默认值,它会把这些东西都给你安排好,它会:

  1. /etc/redis目录下生成一个以端口号命名的配置文件(比如conf)。
  2. /var/lib/redis目录下创建数据存储目录。
  3. /var/log/redis目录下创建日志目录。
  4. 最重要的一步:在/etc/init.d/目录下创建一个名为redis_6379的启动脚本,并把它设置为系统启动时自动运行。

如果你没有运行这个脚本,或者运行中途出错了,那么你的Redis就没有被系统“登记在册”,这种情况下,你只能通过redis-server /path/to/your/redis.conf这种方式手动启动,一旦服务器重启,这个进程就没了,又得手动再来一遍,这显然不是我们想要的。

第二部分:重启出错的常见原因和解决办法

Redis源码装好后怎么重启才不出错,安装和重启那些事儿讲讲

重启后出错,十有八九是下面这几个地方没弄对。

  1. 根本原因:Redis没有注册为系统服务 这是最常见的问题,就像上面说的,如果你只是手动安装完,没有执行install_server.sh脚本,或者脚本执行失败,那么系统根本不知道Redis的存在,重启后自然不会去启动它。 解决办法:回头去运行一下源码目录下的utils/install_server.sh脚本,确保它成功执行完毕,你可以用systemctl status redis_6379(或者你设置的其他服务名)来检查服务是否已经被系统识别。

  2. 权限问题,这是重启错误的“重灾区” Redis服务通常是以一个专门的用户(比如叫redis)来运行的,这是为了安全。install_server.sh脚本通常会帮你创建这个用户,但问题出在文件和目录的权限上。

    Redis源码装好后怎么重启才不出错,安装和重启那些事儿讲讲

    • 数据目录(dir)和日志文件(logfile)的权限:在配置文件里,你指定了数据存在哪里(dir /var/lib/redis/6379),日志写在哪里(logfile /var/log/redis/redis-server.log),如果这些目录和文件的所有者是root,而Redis进程试图用redis用户的身份去写入,那肯定会被拒绝,导致启动失败。 解决办法:检查这些关键目录和文件的所有权和权限,确保它们属于redis用户和用户组,并且有写的权限,命令通常是:
      sudo chown redis:redis /var/lib/redis/6379
      sudo chown redis:redis /var/log/redis/redis-server.log
      sudo chmod -R 755 /var/lib/redis/6379 # 确保目录有访问和执行权限

      日志文件如果还不存在,Redis启动时创建它也会失败,所以也要确保/var/log/redis这个目录本身也是redis用户有写权限的。

  3. 配置文件路径不对 如果你是自己手动创建的配置文件,或者移动过配置文件,但在系统服务单元文件(比如/etc/systemd/system/redis.service)里指定的路径还是错的,那系统服务在启动时就会找不到配置文件。 解决办法:检查你的服务文件,如果是用systemd管理的(现在主流Linux发行版都是),用sudo systemctl edit redis_6379或者直接查看/etc/systemd/system/redis.service文件,看里面的ExecStart命令指向的配置文件路径是否正确。

  4. 内存不足导致崩溃 这种情况是重启后服务起来了,但运行一段时间后自己挂掉了,查看日志(/var/log/redis/redis-server.log)可能会发现跟内存相关的错误,这可能是因为你配置了最大内存限制(maxmemory),但应用程序的需求超过了这个限制,或者没有设置正确的内存淘汰策略(maxmemory-policy),导致Redis无法写入新数据而崩溃。 解决办法:根据你的服务器实际情况,在配置文件里调整maxmemory参数,并设置一个合适的maxmemory-policy,比如allkeys-lru

第三部分:正确的重启姿势

一个确保不出错的重启流程应该是这样的:

  1. 安装阶段:编译安装后,务必成功运行utils/install_server.sh脚本,让Redis成为系统服务。
  2. 重启前:检查一下关键目录(数据、日志)的权限,确保Redis用户有权限读写,可以用sudo -u redis touch /path/to/logfile测试一下能不能创建文件。
  3. 重启命令:不要直接杀进程,而是使用系统服务管理命令。
    • 停止服务:sudo systemctl stop redis_6379
    • 启动服务:sudo systemctl start redis_6379
    • 重启服务:sudo systemctl restart redis_6379
    • 查看状态:sudo systemctl status redis_6379 —— 这个命令非常重要,如果启动失败,这里会显示红色的错误信息。
  4. 出错了怎么办:第一时间去看日志!日志文件的位置就在你的配置文件里用logfile参数指定的那个路径,日志里会明确告诉你为什么启动失败,Permission denied”(权限拒绝)、“Can‘t open the log file”(打不开日志文件)等,根据日志提示去解决,基本都能搞定。

源码安装Redis后重启不出错的核心就两点:一是安装时通过脚本把它正确注册为系统服务;二是解决好文件路径和权限问题,只要这两点做到了,重启就是一句sudo systemctl restart redis那么简单的事儿。