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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM