linux下Redis的安裝和部署
linux下Redis的安裝和部署
linux下redis安裝、啟動與停止
Redis 安裝
Redis安裝和自啟動配置
service redis does not support chkconfig 的解決辦法
介紹在linux環境下,redis的安裝與部署
首先在官網上下載Redis壓縮包,網址redis download,下載4.0.6即可。
將壓縮包拷貝到linux服務器上,執行解壓操作。
tar zxvf redis-4.0.6.tar.gz
進入解壓后的目錄,執行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方式的持久化,當意外發生時用來快速修復
編譯完成后,進入src文件夾,執行make install
進行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-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服務是否已經自動運行了。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。