【linux】redis的安裝和部署


參考

linux下Redis的安裝和部署
linux下Redis的安裝和部署
linux下redis安裝、啟動與停止
Redis 安裝
Redis安裝和自啟動配置
service redis does not support chkconfig 的解決辦法

詳情

介紹在linux環境下,redis的安裝與部署

安裝redis

下載

首先在官網上下載Redis壓縮包,網址redis download,下載4.0.6即可。

解壓

將壓縮包拷貝到linux服務器上,執行解壓操作。
tar zxvf redis-4.0.6.tar.gz

make編譯

進入解壓后的目錄,執行make進行編譯。
cd /redis-4.0.6
make

編譯完成之后,可以看到解壓文件redis-4.0.6中會有對應的src、conf等文件夾,這和windows下安裝解壓的文件一樣,大部分安裝包都會有對應的類文件、配置文件和一些命令文件。

redis-server:顧名思義,redis服務
redis-cli:redis client,提供一個redis客戶端,以供連接到redis服務,進行增刪改查等操作
redis-sentinel:redis實例的監控管理、通知和實例失效備援服務
redis-benchmark:redis的性能測試工具
redis-check-aof:若以AOF方式的持久化,當意外發生時用來快速修復
redis-check-rdb:若以RDB方式的持久化,當意外發生時用來快速修復

make install安裝

編譯完成后,進入src文件夾,執行make install進行redis安裝。

至此安裝完成。

部署redis

前台啟動

現在可以直接通過src文件夾下的redis-server啟動
進入redis-4.0.6文件夾
執行./src/redis-server ./redis.conf
但是此時運行的redis服務,是在前台直接運行的,即當該會話窗口關閉后,redis服務也關閉了。

后台啟動配置

配置為后台啟動redis服務
修改redis.conf配置文件
a. 默認端口6379,有需要的可以更改
b. 把daemonize改為yes(以后端模式啟動)

vi /usr/local/redis/bin/redis.conf

port 6379 
daemonize yes 

:wq!!

后台啟動

進入redis-4.0.6文件夾
執行./src/redis-server ./redis.conf

提示如下:

4627:C 19 Dec 17:32:04.413 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4627:C 19 Dec 17:32:04.413 # Redis version=4.0.6, bits=64, commit=00000000, modified=0, pid=4627, just started
4627:C 19 Dec 17:32:04.413 # Configuration loaded

至此,部署完成。

簡單測試redis

$ redis-cli
redis> PING
PONG
redis> set foo bar
OK
redis> get foo
"bar"

如此說明redis服務已經正常工作,如果redis服務未啟動,則運行redis-cli時會報
Could not connect to Redis at 127.0.0.1:6379: Connection refused
的錯誤。

配置自啟動

但是像以上配置之后,重啟系統后redis服務不會自啟動
為了讓redis-server能在系統啟動時自動運行,需要將redis服務作為守護進程(daemon)來運行,我們回到/redis-4.0.6/目錄中找到一個redis.conf的文件,這個文件是redis服務運行時加載的配置

其中
daemonize默認值是false
pidfile默認值是pidfile /var/run/redis_6379.pid

第一個表示是否daemon化,顯然我們要把它改成daemonize yes;
第二個表示當服務以守護進程方式運行時,redis默認會把pid寫入/var/run/redis_6379.pid文件,服務運行中該文件就存在,服務一旦停止該文件就自動刪除,因而可以用來判斷redis是否正在運行。

保存后退出。(在部署redis的時候已經修改過)

有了基本配置,redis還需要有一個管理啟動、關閉、重啟的一個腳本。
redis源碼里其實已經提供了一個初始化腳本,位置在/usr/redis/utils/redis_init_script。

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

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
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

腳本中指定了端口、server路徑、cli路徑、pidfile路徑以及conf路徑,上述

EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

都需要正確配置,如果在安裝時執行了make install,那么這里的腳本不需要做多大改動,因為make install把server和cli都拷到/usr/local/bin下面了。

另外看到這里conf的路徑,我們需要把redis目錄下的redis.conf文件拷貝到/etc/redis/6379.conf

# cd /etc
# mkdir redis
# cp /usr/redis/redis.conf /etc/redis/6379.conf

接着將redis_init_script腳本拷貝到/etc/init.d/redisd

cp /usr/redis/utils/redis_init_script /etc/init.d/redisd 

在/etc/init.d下的腳本都是可以在系統啟動是自動啟動的服務,而現在還缺一個系統啟動時的配置:

# chkconfig redisd on

然后就會發現報了一個錯誤:服務 redisd 不支持 chkconfig ?

參考service redis does not support chkconfig 的解決辦法, 這是因為我們需要在redis_init_script的開頭加一個小改動:

#!/bin/sh
# chkconfig: 2345 90 10 
# description: Redis is a persistent key-value database

至於這里2345 90 10分別代表什么意思,請參考上面的文章鏈接。

保存完重新拷貝到/etc/init.d/redisd后,再運行chkconfig就完成了。

一切就緒之后,可以執行以下命令檢驗service是否設置成功:

# service redisd start 
# service redisd stop

等價於

# /etc/init.d/redisd start 
# /etc/init.d/redisd stop

最后重啟一下系統吧,進入系統之后直接運行redis-cli檢驗redis服務是否已經自動運行了。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com