redis自啟動配置詳解,redis啟動配置詳解
一、概述1.1原理
redis自啟動的工作原理是怎麼樣的呢?Linux系統啟動後,會有一個程式去特定目錄下面掃描檔案,然後執行這些檔案,這些檔案可稱之為指令碼。所以,你可以把你的工作寫成一個指令碼,放到指定路徑下(etc/init.d)。所以,你要做的,就是把執行啟動redis執行個體的工作編寫成指令碼,讓Linux系統去給你執行即可。
1.2簡述
配置自啟動,大概需要三個步驟
1. 編輯執行個體對應的設定檔,同一台機器上,可以有啟動多個redis執行個體,所以對應著多個設定檔。同時每個執行個體有自己的工作路徑,如果共用工作路徑,那麼設定檔很多項目項要配置成不同,以免衝突,所以建議方法可以設定不同的工作路徑。
2.編輯一個自啟動指令碼,然後把指令碼複製到etc/init.d目錄下。因為Linux系統啟動後,會有一個程式自動去掃描這個路徑下的檔案,然後執行它們。
3.執行命令生效、測試。
二、編輯redis設定檔2.1設定檔命名
在redis目錄下有一個redis.conf檔案,複製一份,建議按連接埠名命名,如6379.conf,規則是,首先,需要與第三章中的指令碼裡面的配置一致,其次,不同執行個體對應不同的設定檔,不能搞混了,然後用vi對檔案進行編輯。
2.2編輯設定檔
以下把需要注意的項加以說明
首先把redis配置成值守進程,這樣redis運行後將在後台運行,如下:
daemonize yes
當以值守進程模式啟動並執行時候,redis sever把自己的pid寫入到預設檔案“/var/run/redis.pid”下,這裡,你需要自訂檔案名稱,幾個redis執行個體,不能弄成一樣,Linux系統是通過這個檔案來判斷一個進程是否運行與關閉,如下:
pidfile /var/run/redis_6379.pid
Redis執行個體用於接收用戶端串連的TCP監聽連接埠預設是6379,如果配置成0,將不會開啟TCP監聽服務。在此可自訂連接埠,此連接埠與後續的指令碼配置的相關項目需要一致。
port 6379
Redis server預設情況下是接收所有本伺服器所有網卡的請求,但是也可以通過指定IP來綁定網卡,可以綁定多個,用空格隔開,如下:
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1
存放快照檔案的檔案名稱,預設是dump.rdb,可以自訂檔案名稱,副檔名你就別動它了。如果你需要啟動多個redis執行個體,同時多個執行個體又共用同一個工作路徑,那麼此檔案名稱必須不一樣。
dbfilename dump.rdb
以上(第4節)只是設定的檔案名稱,而非路徑,通過命令dir可以指定路徑,檔案將按指定路徑與指定的檔案名稱儲存。同時AOF(Append Only File)也是參照此路徑的。多執行個體可以共用此路徑,如果共用工作路徑,那其他配置需要配置成不同,以防衝突,所以建議設定成不同工作路徑,這樣就避免了這些問題。
dir ./
指定輸入日誌資訊的檔案,如果為空白,將從標準輸出視窗輸出,同時又設定了守護進程模式的話,將會把日誌記錄到/dev/null。它只是檔案名稱,不包含路徑。
logfile ""
三、處理指令碼3.1複製指令碼
redis/utils目錄下有一個redis_init_script檔案,把它複製一份到etc/init.d路徑下,建議把檔案名稱改成與redis執行個體連接埠相關,如6379連接埠的這個指令碼名,在etc/init.d路徑下改成6379redisd。
3.2編輯指令碼
對2.1節複製到/etc/init.d路徑下的指令碼進行編輯,如下:
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
REDISIP=localhost
REDISPORT=31001
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 -h $REDISIP -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
下面對以上指令碼進行說明
REDISPORT=6379
這應該只是定義的一個變數,現在裝用到它,建議redis執行個體用什麼連接埠,這個地方就配置什麼連接埠,如果一個伺服器多執行個體的話,這必須配置成不一樣。
EXEC=/usr/local/bin/redis-server
你的redis-server的路徑,如果你redis源碼編譯後執行過make install並成功後,redis-server在/usr/local/bin/路徑下將會有redis-server的連結,或者,以後配置需要直接配置成你redis-server所在的真實的路徑。
CLIEXEC=/usr/local/bin/redis-cli
redis-cli所在的路徑,由redis-server一樣,如果你redis源碼編譯後執行過make install並成功後,redis-cli在/usr/local/bin/路徑下將會有redis-cli的連結,或者,以後配置需要直接配置成你redis-cli所在的真實的路徑。這樣,在linux下可直接敲redis-cli命令,而不用指定路徑了,可以把它當成平常的命令來執行。
PIDFILE=/var/run/redis_${REDISPORT}.pid
這個是pid檔案路徑,當redis執行個體設定成值守模式(daemonize)後,啟動後會產生一個pid檔案,在哪裡產生,檔案名稱是什麼,需要在redis的config檔案裡配置。所以當你一個伺服器中有多個redis執行個體時,這個檔案名稱需要不一樣,不然會帶來麻煩。所以此配置項要與redis的設定檔裡面配置項一致,關於redis設定檔裡面的相關想,參見後續章節。
CONF="/usr/local/src/redis/${REDISPORT}.conf"
指定redis執行個體的設定檔的路徑,同伺服器不同的redis執行個體需要不同的設定檔,這個需要注意,不能弄成一樣的,不然啟動會有成功的。
指令碼的後續部分,可以不用管它,不需要修改。
添加項:
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
在指令碼的開頭第四行,即“# as it does use of the /proc filesystem.”的一行插入以上兩段代碼,不然,後面執行命令的時候,會提示許可權問題。
四、啟動生效
#設定為開機自啟動伺服器(redisd為/etc/init.d/目錄下剛才自己建立的指令碼名稱,下同)
chkconfig redisd on
#開啟服務,用於測試服務是否有效
service redisd start
#關閉服務
service redisd stop
#重啟系統,測試是否生效
reboot
系統重啟後,檢查redis執行個體是否如預期啟動
redis-cli –h 你設定的IP –p 你設定的連接埠
著作權聲明:本文為博主原創文章,如欲轉載請與博主聯絡,QQ:1148824289.