1. 程式人生 > 實用技巧 >redis的編譯安裝

redis的編譯安裝

本操作基於 CentOS7.6作業系統
redis版本為 6.0.5

關閉防火牆以及selinux

關閉防火牆

iptables -F #臨時關閉防火牆
systemctl stop firewalld # 關閉防火牆
systemctl disable firewalld # 開機防火牆不啟動

關閉selinux

臨時關閉

setenforce 0

永久關閉

vim /etc/selinux/conf

SELINUX=enforcing改為SELINUX=disabled

安裝編譯工具包

CentOS有一套很好的編譯工具包,只需要安裝即可編譯redis
安裝命令:

yum groupinstall "Development Tools"

下載redis並編譯安裝

我使用的版本是6.0.5 ,下面是下載地址:
https://redis.io/download

下載完畢,上傳到伺服器上
解壓:

tar -xvf redis-6.0.5.tar.gz

解壓完畢,進入解壓後的資料夾,進行編譯安裝
我習慣性安裝在/app 下,如果該目錄不存在,可以新建

cd ./redis-6.0.5
make PREFIX=/app/redis install

沒有完成編譯,報錯了,centos7 預設的 gcc 版本為:4.8.5 < 5.3 無法編譯
所以安裝如下內容:

yum install gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash #  臨時有效,退出 shell 或重啟會恢復原 gcc 版本

然後在執行編譯:

make PREFIX=/app/redis install

編譯安裝完成後,在/app/redis 中只有一個bin目錄,裡面有幾個可執行檔案:

.
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server

然後在/app/redis/下建立我需要的目錄,如下:

.
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── conf
├── data
├── logs

然後將解壓的redis目錄中的兩個配置檔案拷貝到安裝目錄的conf下面

.
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── conf
│   ├── redis.conf
│   └── sentinel.conf
├── data
├── logs

然後備份一下原配置檔案,然後對配置檔案進行修改,修改完畢的配置檔案如下:

cp ~/redis-6.0.5/{redis.conf,sentinel.conf}    /app/redis/conf
bind 20.58.32.11
protected-mode no
port 16379
tcp-backlog 511
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/app/redis/logs/redis-server.log"
always-show-logo yes
dir /app/redis/data

appendonly no
appendfilename "appendonly.aof"
appendfsync everysec

配置守護程序並啟動

我喜歡使用supervisor作為守護程序在管理應用,所以在此,使用該軟體來管理redis的開機啟動等
安裝supervisor

yum install -y supervisor

vim /etc/supervisord.conf 
cd /etc/supervisord.d/

修改主配置/etc/supervisord.conf

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)


[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false              ; (start in foreground if true;default false)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=200                ; (min. avail process descriptors;default 200)


[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket


[include]
files = supervisord.d/*.ini

新增redis的配置

cd  /etc/supervisord.d/
vim redis.ini

內容如下:

[program:redis]
command=/app/redis/bin/redis-server /app/redis/conf/redis.conf  ; 程式啟動命令
autostart=true       ; 在supervisord啟動的時候也自動啟動
startsecs=10         ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒
autorestart=true     ; 程式退出後自動重啟,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重啟
startretries=3       ; 啟動失敗自動重試次數,預設是3
user=root          ; 用哪個使用者啟動程序,預設是root
priority=999         ; 程序啟動優先順序,預設999,值小的優先啟動
redirect_stderr=true ; 把stderr重定向到stdout,預設false
stdout_logfile_maxbytes=20MB  ; stdout 日誌檔案大小,預設50MB
stdout_logfile_backups = 20   ; stdout 日誌檔案備份數,預設是10
; stdout 日誌檔案,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立日誌檔案)
stdout_logfile=/app/redis/logs/redis_supervisor.log
stopasgroup=false     ;預設為false,程序被殺死時,是否向這個程序組傳送stop訊號,包括子程序
killasgroup=false     ;預設為false,向程序組傳送kill訊號,包括子程序

然後在~/.bashrc中新增alias,這樣,我們在執行supervisorctl命令時,就不用在後面跟上配置檔案

vim  ~/.bashrc

新增如下配置

export REDIS_HOME='/app/redis'  # redis命令的環境變數
export PATH=$REDIS_HOME/bin/:$PATH
# 新增alias
alias supervisorctl="sudo supervisorctl -c /etc/supervisord.conf"

然後從新載入配置檔案

source ~/.bashrc

啟動supervisor,redis會跟隨啟動

systemctl start supervisord
systemctl enable supervisord # 設定supervisor開機啟動

下面是檢視redis狀態和啟動重啟redis的命令

supervisorctl status
supervisorctl restart redis
supervisorctl start redis