centos7 redis设置开机自启动

本文介绍如何通过修改redis.conf配置文件及创建自定义脚本来实现Redis服务的开机自启动。适用于CentOS系统的服务器环境中。

最近在做作业的时候需要用到Redis缓存,由于每次重启服务器都需要重新启动Redis,也是忒烦人,于是就有了这一篇博客,好,废话不多说。

只有两个步骤:

  1. 设置redis.conf中daemonize为yes,确保守护进程开启。

  2. 编写开机自启动脚本

    基本原理为: 
    系统开机启动时会去加载/etc/init.d/下面的脚本,通常而言每个脚本文件会自定义实现程序的启动;若想将新的程序开机自启动,只需在该目录下添加一个自定义启动程序的脚本,然后设置相应规则即可。 
    如在这里我们在/etc/init.d/下新建一个 redis 的脚本,开机启动时会去加载执行该脚本。

vim /etc/init.d/redis
  • 1

在该脚本中添加一下内容:

# chkconfig: 2345 10 90  
#redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。
# description: Start and Stop redis   

PATH=/usr/local/bin:/sbin:/usr/bin:/bin  
export PATH 
REDISPORT=6379 #端口号,这是默认的,如果你安装的时候不是默认端口号,则需要修改
EXEC=/usr/local/redis/bin/redis-server  #redis-server启动脚本的位置,你如果忘了可以用find或whereis找到   
REDIS_CLI=/usr/redisbin/redis-cli  #redis-cli客户端启动脚本的位置,你如果忘了可以用find或whereis找到   

PIDFILE=/run/redis.pid   #这个也可以用find或whereis找到
CONF="/usr/local/redis/etc/redis.conf"  #redis.conf配置文件的位置,你如果忘了可以用find或whereis找到
AUTH="1234"  

case "$1" in   
        start)   
                if [ -f $PIDFILE ]   
                then   
                        echo "$PIDFILE exists, process is already running or crashed."  
                else  
                        echo "Starting Redis server..."  
                        $EXEC $CONF   
                fi   
                if [ "$?"="0" ]   
                then   
                        echo "Redis is running..."  
                fi   
                ;;   
        stop)   
                if [ ! -f $PIDFILE ]   
                then   
                        echo "$PIDFILE exists, process is not running."  
                else  
                        PID=$(cat $PIDFILE)   
                        echo "Stopping..."  
                       $REDIS_CLI -p $REDISPORT  SHUTDOWN    
                        sleep 2  
                       while [ -x $PIDFILE ]   
                       do  
                                echo "Waiting for Redis to shutdown..."  
                               sleep 1  
                        done   
                        echo "Redis stopped"  
                fi   
                ;;   
        restart|force-reload)   
                ${0} stop   
                ${0} start   
                ;;   
        *)   
               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  
                exit 1  
esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

写完后保存退出

设置可执行权限:

chmod 755 redis
  • 1

启动测试:

/etc/init.d/redis start
  • 1

启动成功会提示如下信息:

Starting Redis server...
Redis is running...
  • 1
  • 2

使用redis-cli测试:

[root@localhost ~]# /usr/local/redis/bin/redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> exit
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

设置开机自启动:

chkconfig redis on
  • 1

关机重启测试:

reboot
  • 1

开机完之后可以用 redis-cli 测试,或者用 ps -ef | grep redis 看看redis 是否在运行中

本篇博客大部分参考自Linux下Redis开机自启(Centos),感谢原作者的贡献

<think>嗯,用户想解决CentOS 7Redis 5设置开机自启动失败的问题。我需要先回忆一下相关的步骤和可能出错的地方。根据用户提供的引用,有几个可能的原因。首先,用户可能没有正确配置systemd服务文件。比如服务文件的路径是否正确,权限有没有问题,还有里面的ExecStart路径是否正确指向redis-server和配置文件的位置。另外,redis.conf里的daemonize选项是否设置成了yes,这个如果不开启的话,systemd可能无法正确管理进程,导致启动失败。还有,用户可能在运行chkconfig命令时遇到了问题,因为在CentOS 7中应该使用systemctl来管理服务,而不是chkconfig,所以这个命令可能会报错。需要检查是否错误地混合使用了旧的方法和新的systemd方法。还有SELinux或者防火墙的设置可能阻止了服务的启动,不过这个可能性可能小一些。另外,服务文件中的用户权限是否正确,比如以redis用户运行可能需要对应的用户存在。可能用户没有创建redis用户,或者目录权限不对。此外,服务文件中的Type设置是否正确,如果是forking类型,需要指定正确的PID文件路径,否则systemd可能检测不到进程已经启动。还有可能用户没有运行daemon-reload来重新加载服务配置,导致修改后的服务文件没有被识别。需要一步步检查这些点,给出具体的解决方案。可能还需要用户检查日志,用journalctl -u redis.service来查看具体的错误信息。最后,确保所有步骤都正确,比如复制配置文件、启用服务等。</think>在CentOS 7设置Redis 5开机自启失败的解决方案如下: ### 一、检查服务文件配置 1. **创建正确的systemd服务文件** ```bash sudo vi /etc/systemd/system/redis.service ``` 内容应为: ```ini [Unit] Description=Redis In-Memory Data Store After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /path/to/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always Type=forking [Install] WantedBy=multi-user.target ``` **注意**:`/path/to/redis.conf`需替换为实际路径,建议存放在`/etc/redis/redis.conf`[^2][^4] 2. **验证关键参数** - 确认`redis.conf`中有: ```bash daemonize yes # 必须开启守护进程模式[^4] pidfile /var/run/redis_6379.pid # 确保路径存在且可写 ``` ### 二、权限与路径检查 1. **创建专用用户**(若未创建) ```bash sudo groupadd -r redis sudo useradd -r -g redis -s /sbin/nologin redis ``` 2. **设置目录权限** ```bash sudo chown -R redis:redis /var/lib/redis # 数据目录 sudo chown redis:redis /etc/redis/redis.conf ``` ### 三、关键操作步骤 1. **重新加载服务配置** ```bash sudo systemctl daemon-reload # 修改服务文件后必须执行[^5] ``` 2. **启用开机启动** ```bash sudo systemctl enable redis # 正确方式(而非chkconfig)[^3] ``` ### 四、故障排查方法 1. **查看启动日志** ```bash journalctl -u redis.service -b # 查看启动失败详细信息 ``` 2. **常见错误处理: - **"Failed at step USER"**:检查`/etc/passwd`中redis用户是否存在 - **"Can't open PID file"**:确认`pidfile`路径在`redis.conf`中正确配置 - **"Address already in use"**:执行`sudo netstat -tulnp | grep 6379`排查端口占用 ### 五、验证流程 ```bash sudo systemctl start redis sudo systemctl status redis # 应显示active (running) sudo reboot # 重启后验证自动启动 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值