Centos7下Redis設置開機自啟動服務


 

有個同事說重啟了服務器沒有自啟動redis,我看了一下,是以前手動編譯安裝的模式,沒有配置開機啟動的服務

這邊做個筆記記錄一下redis如何設置編譯安裝模式的開機自啟動。

第一種方法:

1、編寫redis.conf配置文件

配置文件路徑:/etc/redis.conf

daemonize是守護進程的意思

把daemonize no改成daemonize yes

2、找到./install_server.sh腳本

make install安裝命令是不帶自啟動腳本的。

而redis官方提供了一個手動編譯時的自啟動腳本,

但是需要通過另外一個工具來安裝。我們切換到目錄中的utils目錄下

具體路徑:/usr/local/redis/utils

腳本文件會依次提示我們選擇redis-server所使用的端口、配置文件、日志文件、庫文件以及啟動文件。

如果保持默認的話直接輸入enter即可。

它就會自動復制編譯好的文件到對應的目錄中去,

如第下圖中所示,同時自動將redis設置為開機自啟動,但是使用的是chkconfig命令。

Linux chkconfig命令用於檢查,設置系統的各種服務。

這是Red Hat公司遵循GPL規則所開發的程序,它可查詢操作系統在每一個執行等級中會執行哪些系統服務,其中包括各類常駐服務。

使用ps -aux命令查看自啟動的redis進程

然后在/etc/init.d/目錄下可以看到redis_6379這個自啟動腳本。

使用chkconfig --list命令查看

可以看到redis程序在2,3,4,5這四個等級下是開機自啟動的。

關於chkconfig的命令可以查看我另外一個mysql自啟動的帖子:https://www.cnblogs.com/Sungeek/p/9687565.html

第二種方法:

1、編寫redis.conf配置文件

配置文件路徑:/etc/redis.conf

daemonize是守護進程的意思

把daemonize no改成daemonize yes

2、直接把下面的代碼新建個redis啟動腳本

vim /etc/init.d/redis

復制下面代碼到腳本中

!注意要修改里面redis的安裝路徑:我這邊的安裝路徑是/usr/local/redis/

這段代碼就是redis根目錄 /utils/redis_init_script 啟動腳本的代碼

我這邊是用了install_server.sh自動生成的,所以不用改那么多東西,直接用就行

直接chmod + x /etc/init.d/redis

然后systemctl start redis_6379就可以啟動了

#!/bin/sh
#Configurations injected by install_server below....

EXEC=/usr/local/redis/src/redis-server
CLIEXEC=/usr/local/redis/src/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis/6379.conf"
REDISPORT="6379"
###############
# SysV Init Information
# chkconfig: - 58 74
# description: redis_6379 is the redis daemon.
### BEGIN INIT INFO
# Provides: redis_6379
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop redis_6379
# Description: Redis daemon
### END INIT INFO


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
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
            echo "$PIDFILE does not exist, process is not running"
        else
            PID=$(cat $PIDFILE)
            echo "Stopping ..."
            $CLIEXEC -p $REDISPORT shutdown
            while [ -x /proc/${PID} ]
            do
                echo "Waiting for Redis to shutdown ..."
                sleep 1
            done
            echo "Redis stopped"
        fi
        ;;
    status)
        PID=$(cat $PIDFILE)
        if [ ! -x /proc/${PID} ]
        then
            echo 'Redis is not running'
        else
            echo "Redis is running ($PID)"
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Please use start, stop, restart or status as first argument"
        ;;
esac


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM