潇湘剑客

V1

2022/09/26阅读:27主题:自定义主题1

CentOS 7平台Redis编译安装

下载安装介质

我们直接去官方网址下载所需的安装介质,例如,我们下载redis-stable.tar.gz的安装介质。当前Redis最新稳定版本为7.0.2

https://download.redis.io/redis-stable.tar.gz

也可以根据实际情况下载你所需的Redis版本。但是一般建议下载比较新的版本。

注意:Redis 使用标准的做法进行版本管理: 主版本号.副版本号.补丁号偶数的副版本号表示一个稳定的发布,像 1.2, 2.0, 2.2, 2.4, 2.6, 2.8。奇数副版本号表示不稳定的发布,例如 2.9.x 发布是一个不稳定版本,下一个稳定版本将会是Redis 3.0。

Redis安装

安装依赖包

#yum list installed | grep gcc 
#yum list installed | grep libstdc++-devel
#yum -y install gcc gcc-c++ libstdc++-devel

非root用户使用下面方式

$sudo yum -y install gcc gcc-c++ libstdc++-devel

注意:redis编译安装时,需要依赖gcc、gcc-c++等安装包。此处不安装这些依赖包,后续编译安装时会报错。

新建redis普通用户

#groupadd redis
#useradd redis –g redis

或者

#groupadd xxx
#useradd xxx –g xxx

一般建议使用redis用户,如果公司规定使用其它账号也OK,如果这些用户已经存在,可以跳过这些步骤。

操作系统环境变量配置

1:环境变量设置

vi /etc/security/limits.conf


* soft nofile 65535
* hard nofile 65535
* soft noproc 65535
* hard noproc 65535

注意:如果未设置此环境变量,可能某些情况下会遭遇一些错误。

2:内核参数调整

在参数文件/etc/sysctl.conf中设置参数

net.core.somaxconn = 1024
vm.overcommit_memory = 1

修改参数后使用命令sysctl -p使之生效。

3:关闭透明大页功能

此处的操作系统是CentOS Linux release 7.9.2009 (Core)

查看透明大页是否开启

# cat /sys/kernel/mm/transparent_hugepage/enabled

在/etc/rc.local中加入下面配置:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

CentOS 7下关闭透明大页

# ls -ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Mar 15  2019 /etc/rc.local -> rc.d/rc.local
# ls -lrt /etc/rc.d/rc.local 
-rw-r--r--. 1 root root 599 Jan 20 10:42 /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local

必须修改上面配置并不能立即禁用透明大页,需要重启操作系统或临时使用下面命令关闭透明大页。

echo never > /sys/kernel/mm/transparent_hugepage/enabled

4:Swap大小检查配置

官方建议swap的大小跟系统的物理内存一致。原文如下:

Ensured that swap is enabled and that your swap file size is equal to amount of memory on your system. If Linux does not have swap set up, and your Redis instance accidentally consumes too much memory, Redis can crash when it is out of memory, or the Linux kernel OOM killer can kill the Redis process. When swapping is enabled, you can detect latency spikes and act on them.

Redis的编译安装

# wget https://download.redis.io/redis-stable.tar.gz
# tar -xzvf redis-stable.tar.gz
# cd redis-stable
# make -j 4
# make PREFIX=/usr/local/redis install

很多情况下,服务器不能访问外网,需要下载对应的安装介质,然后上传到服务器。这里,我们将安装介质统一上传到/data/soft目录下面。

# cd /data/soft
# tar -xzvf redis-stable.tar.gz
# cd redis-stable
# make -j 4
# make PREFIX=/usr/local/redis install

Redis的配置

切换到redis(ht)用户下面

# cd /data
# mkdir redis
# cd redis
# mkdir log data run conf
# cp /data/soft/redis-stable/redis.conf  /data/redis/conf/

根据实际情况合理配置、修改redis.conf配置文件,其实redis.conf的参数配置都可以长篇大论,这里我们简单跳过,根据实际情况配置。

下面是部分配置:

bind 127.0.0.1 192.168.xxx.xxx   #根据具体情况进行配置
daemonize yes
port 6366
logfile "/data/redis/log/redis.log"
dir /data/redis/data
pidfile /data/redis/run/redis_6366.pid  这里指定pidfile跟监听端口一致,例如,监听端口为6366,那么pidfile设置为redis_6366.pid
protected-mode no
requirepass 75612a867ceeb452924c98778caa959c37120bfff6582aaad48298acbf320b28
maxmemory 613574246

查看配置文件redis.conf的相关配置

#grep '^[a-Z]' /data/redis/conf/redis.conf

注意:如果redis是单独的服务器,maxmemory 按物理内存的75%或80%设置。

修改redis相关目录的Owner

#chown -R redis:redis /usr/local/redis
#chown -R redis:redis /data/redis

限制redis文件目录访问权限

#chmod -R 700 /data/redis
#chmod 600 /data/redis/conf/redis.conf
#chmod 755 /data/redis/run/   --这个权限必须设置,否则会遇到问题7

防火墙的端口配置

#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.15.158" port protocol="tcp" port="6366" accept"
#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.15.150" port protocol="tcp" port="6366" accept"
#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.15.151" port protocol="tcp" port="6366" accept"

注意,上面配置后,重启防火墙服务才能生效。

#systemctl restart firewalld.service

查看配置信息

# firewall-cmd --zone=public --list-all

移除一些防火墙规则

# firewall-cmd --permanent --remove-rich-rule 'rule family="ipv4" source address="192.168.15.18" port port="6366" protocol="tcp" accept'

注意:修改防火墙规则后,也需重启防火墙服务才能生效

配置环境变量

修改配置文件~/.bash_profile 添加下面选项后,执行命令source ~/.bash_profile使之生效。

export PATH=$PATH:/usr/local/redis/bin

启动Redis

sudo -u redis /usr/local/redis/bin/redis-server /data/redis/conf/redis.conf

或者

/usr/local/redis/bin/redis-server  /home/redis/redis/conf/redis.conf

配置Systemctl服务

cd /usr/lib/systemd/system
touch redis.service

具体配置信息如下所示:

[Unit]
Description=redis
After=network.target

[Service]
Type=forking

PIDFile=/data/redis/run/redis_6366.pid  
ExecStart=/usr/local/redis/bin/redis-server  /data/redis/conf/redis.conf 
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

#表示基础信息
[Unit]
#描述
Description=redis
#在哪个服务之后启动
After=network.target

#服务信息
[Service]
Type=forking

#注意:pid文件必须和redis配置设置pid必须一致
PIDFile=/data/redis/run/redis_6366.pid  
#启动服务的命令,用具体的redis-server安装路径和redis.conf配置文件路径
ExecStart=/usr/local/redis/bin/redis-server  /data/redis/conf/redis.conf 
#重新加载命令
ExecReload=/bin/kill -s HUP $MAINPID
#停止服务的命令
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

#安装相关信息
[Install]
#以哪种方式启动
WantedBy=multi-user.target

//使配置生效

systemctl daemon-reload

//设置开机启动

systemctl enable redis.service;
systemctl is-enabled redis.service;

//启动、关闭redis

systemctl start redis.service;
systemctl stop redis.service;

分类:

后端

标签:

后端

作者介绍

潇湘剑客
V1