環境確認
gcc環境
由於Redis是用C語言開發的,所有要安裝C語言的編譯環境(gcc),首先確認系統中是否有gcc環境
gcc -v
如下提示代表沒有安裝gcc環境,它會提示你是否安裝,輸入y回車,會自動安裝
也可以輸入N,手動安裝
yum install -y gcc
安裝make工具,編譯工具
yum install -y make
tcl 版本確認
因為后面make test 的時候要求 tcl最低8.5 所以先更新tcl的版本
yum install tcl
下載安裝
下載reids
從官方下載redis到指定目錄(先將安裝包下載到臨時目錄)
wget -P /tmp http://download.redis.io/releases/redis-5.0.5.tar.gz
此時進入 tmp 文件夾下,會發現 有redis的壓縮文件
進入 tmp 文件夾之后解壓
tar -zxvf redis-5.0.5.tar.gz
進入解壓出來的 redis 文件夾
cd redis-5.0.5
編譯
make
之后會提示你用 make test 測試一下,執行之后最下面出現 [\o/ All tests passed without errors!] 代表編譯成功
make test
安裝
指定目錄安裝,我一般安裝在opt下, opt 相當於windows 的program files文件夾,一般是安裝第三方軟件的地方
make install PREFIX=/opt/redis
啟動
到redis安裝目錄下可以看到有redis-server,執行這個命令就可以在前台啟動redis了
./redis-server
顯然前台啟動這種方式不是我們想要的,執行此命令就是測試一下redis是否啟動正常。
此時可以使用 ctrl+c 組合鍵停止redis了,下面我們來設置后台啟動。
redis.conf 這個是redis自帶的配置文件,
這給文件存放在剛才解壓的 /tmp/redis-5.0.5 文件夾內,將它復制到安裝目錄下
cp /tmp/redis-5.0.5/redis.conf /opt/redis/bin/
然后用vi 修改 redis.conf 文件,把 daemonize no 改為 daemonize yes
(小技巧,命令行下 /str 可以搜索內容, 然后按 n 搜搜下一項)
vi redis.conf
后台啟動redis
./redis-server redis.conf
停止redis
./redis-cli shutdown
開啟遠程連接,設置密碼
修改配置文件
接下來要修改 2-3 個節點,視情況而定。同樣也是 redis.conf文件
節點1:
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
翻譯:如果你確定你想要你的實例去監聽所有連接
# JUST COMMENT THE FOLLOWING LINE.
翻譯:僅僅只需要將下面一行注釋即可
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
所以我們注釋掉這一行就好了
# bind 127.0.0.1
注意:這樣做能使所有的host都能去訪問redis,在沒有通過配置文件設置密碼的情況下這種操作是十分危險的。 所以我的建議是:要么設置密碼,要么指定能夠訪問的ip.指定能夠訪問的主機,只需增加一行 bind 主機ip 就OK了。
節點2:
設置密碼:
#requirepass foobared
節點注釋去掉,再將foobared換成你的密碼。
requirepass password
注意:低版本的Redis只需要修改上面一個節點就好,但是高版本的Redis新增了protected-mode節點,如果你忽略我的建 議,既沒有設置密碼,也沒有bind指定的ip。
換句話說:你在不設置密碼的情況下,希望所有ip都能連接到Redis。那么你就要進行修改節點3關閉掉保護模式,否則修改節點1,節點2 就能實現遠程訪問了,沒必要再進行節點3的修改了。
節點3:
# By default protected mode is enabled. You should disable it only if
保護模式是默認開啟的,你應該關閉他僅僅在
# you are sure you want clients from other hosts to connect to Redis
你確信你想要其他主機的客戶端去連接Redis
# even if no authentication is configured, nor a specific set of interfaces
即使沒有authentication(相當於密碼)被設置,也沒有一組特定的連接
# are explicitly listed using the "bind" directive.
被bind指令明確指出
protected-mode yes
將yes改為no就行了
從官方說明我們可以知道,當保護模式開啟時,如果沒有設置密碼,並且設置允許任意ip可以訪問時,你是連接不上 Redis 的!當然我希望你僅僅做第一步就夠了,盡量不要關閉掉保護模式。
開啟防火牆,開放redis端口(6379)
查看防火牆狀態
systemctl status firewalld
打開防火牆( 關閉防火牆 systemctl stop firewalld )
systemctl start firewalld
查看防火牆某個端口是否開放
firewall-cmd --query-port=6379/tcp
開放防火牆端口 6379
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重新啟動防火牆
firewall-cmd --reload
啟動redis
./redis-server redis.conf
啟動/停止腳本
修改PID文件保存路徑
修改redis默認保存pid文件的位置。
linux啟動進程的時候會生成進程id並保存成 .pid文件保存在 /var/run 下,通過pid可查看當前的進程號;
同樣編輯 redis.conf文件找到 pidfile /var/run/redis_6379.pid,一般把路徑保存到redis安裝目錄下,方便查看,
改成 pidfile /opt/redis/bin/redis_6379.pid
創建停止redis腳本
cat>> redis-stop.sh
然后輸入下列內容,輸入完之后按 CTRL+D 保存
echo "stopping redis server ... "
kill -9 `cat /opt/redis/bin/redis_6379.pid`
創建啟動redis腳本
cat>> redis-start.sh
然后輸入下列內容,輸入完之后按 CTRL+D 保存
./redis-stop.sh echo "starting redis servier ..." /opt/redis/bin/redis-server /opt/redis/bin/redis.conf /opt/redis/bin/redis-cli -p 端口號 -a 密碼
修改文件權限
chmod 777 redis-start.sh
chmod 777 redis-stop.sh
運行腳本測試
啟動
./redis-start.sh
停止
./redis-stop.sh