redis的編譯安裝
阿新 • • 發佈:2020-06-30
本操作基於 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