1. 程式人生 > >linux安裝redis並配置開機自啟

linux安裝redis並配置開機自啟

準備工作

開始安裝

1、 下載完安裝檔案後複製到/usr/local/,解壓:

[root@vm01 local]# cd /usr/local
[root@vm01 local]# tar -zxvf redis-4.0.6.tar.gz

2、重新命名(個人習慣)

[root@vm01 local]# mv redis-4.0.6 redis

3、進入解壓後的目錄,編譯安裝:

[root@vm01 local]# cd redis
[root@vm01 redis]# make
[root@vm01 redis]# make install

4、完成上述操作後可發現在/usr/local/bin/下面新增了以下幾個檔案:

[root@vm01 redis]# cd /usr/local/bin
[root@vm01 bin]# ls -l

這裡寫圖片描述
至此基本安裝已經完成,可以執行一下命令嘗試啟動

[root@vm01 bin]# redis-server

出現以下介面說明啟動成功
這裡寫圖片描述

配置

上面啟動時使用的redis的預設配置,我們需要根據實際情況對配置檔案做一些修改。
redis預設配置檔案在解壓後的目錄下,本示例中為/usr/local/redis/redis.conf,我們需要對該配置檔案做修改。

[root@vm01 /]# cd /usr/local/redis
[root@vm01 redis]# vim redis.conf

需要修改的有以下幾處:

bind 127.0.0.1

該配置項綁定了客戶端ip,只有指定ip的主機才能連結redis,預設只能通過本機連線,如果需要通過其他主機連線,可修改為指定主機的ip,多個ip之間以空格分隔。如果要設定所有ip可連線,註釋掉該行即可 #bind 127.0.0.1

port 6379

redis監聽埠,可修改為其他埠號,注意如果修改了該項後續涉及到埠的地方都需要做相應修改,安全性要求不高的情況下可不做修改,先使用預設埠。

pidfile /var/run/redis_6379.pid

pidfile 表示啟動後進程檔案的路徑和名稱,可根據需求進行修改,該配置關係後面配置開機自啟部分,如果修改了該項,在後續配置中需要與此保持一致。

daemonize no
修改為
daemonize yes

該配置表示redis啟動後是否後臺執行,改為yes表示後臺執行。

dir ./
改為
dir /usr/local/redis/data/

該配置表示redis持久化資料檔案存放位置,建議修改預設配置,上述修改表示將檔案存放在/usr/local/redis/data/目錄下,注意:如果該路徑不存在啟動時會報錯,需要手工建立目錄。

#requirepass forbiden
改為
requirepass 123456

requirepass表示redis的連線密碼,預設是沒有設定密碼的,建議加上密碼,示例中密碼為123456,可根據需要設定成高強度密碼。

至此配置檔案修改完成,上述只是基本的修改,其他修改請查閱官方文件。
現在我們可以使用修改後的配置啟動redis

[root@vm01 /]# redis-server /usr/local/redis/redis.conf

停止redis

[root@vm01 /]# redis-cli -a 123456 shutdown

配置開機自啟

redis自帶了啟動指令碼,可在utils目錄下找到,本示例中路徑為/usr/local/redis/utils/redis_init_script
將其複製到/etc/init.d/並重命名:

cp /usr/local/redis/utils/redis_init_script /ect/init.d/redis

編輯指令碼檔案

cd/ect/init.d/
vim redis

修改後內容如下:

#!/bin/sh
#chkconfig: 2345 10 90
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

# 埠號,與redis.conf中的port保持一致
REDISPORT=6379
# 啟動指令碼位置,如果安裝位置改變需要進行相應的修改
EXEC=/usr/local/bin/redis-server
# 客戶端指令碼位置,如果安裝位置改變需要進行相應的修改
CLIEXEC=/usr/local/bin/redis-cli

#程序檔案位置,與redis.conf中的pidfile保持一致
PIDFILE=/var/run/redis_6379.pid
#redis.conf檔案位置
CONF="/usr/local/redis/redis.conf"
#密碼,與redis.conf中的requirepass保持一致
PASS="123456"

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 ..."
                # 如果設定了密碼需要加上 -a "密碼" 用於停止redis時的密碼驗證
                $CLIEXEC -p $REDISPORT -a $PASS shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

上述修改中,注意第二行添加了以下內容:

#chkconfig: 2345 10 90

由於設定了密碼,添加了PASS變數,下關閉命令中用到了該變數

# 原始內容為:$CLIEXEC -p $REDISPORT shutdown,在中間加入了-a $PASS
$CLIEXEC -p $REDISPORT -a $PASS shutdown

修改完配置後,給檔案redis加上可執行許可權

chmod +x redis

至此可以使用下述命令啟動和停止reids

#啟動
service redis start
#停止
service redis stop

注意:如果redis已經啟動,先手動關掉redis,否則執行service redis stop的話可能會出現redis.pid not found的問題.

設定開機自啟

chkconfig --add redis
chkconfig redis on

至此大功告成!

注意:上述所有操作都在root使用者下操作,所以不存在許可權問題,如果在非root使用者下進行上述安裝操作,請注意可能因為許可權原因導致持久化檔案或日誌等檔案無法寫入而導致無法啟動。