安装Redis7

下载地址:https://redis.io/download/

1、必须先具备 gcc 编译环境

1
2
3
4
# 安装c++库环境
sudo apt install gcc
# 查看版本
gcc -v

2、将下载后的包放入 Linux 目录(我放到了 /root

1
2
# /root目录下解压
tar -zxvf redis-7.2.0.tar.gz

需要手动安装make工具

1
sudo apt install make

3、安装

1
2
3
4
5
6
7
# 移动redis目录
mv /root/redis-7.2.0 /usr/local/redis

# 进入目录
cd /usr/local/redis

make PREFIX=/usr/local/redis install

这里多了一个关键字 PREFIX= 它的作用是编译的时候用于指定程序存放的路径,比如我们现在就是指定了 redis 必须存放在 /usr/local/redis 目录。

假设不添加该关键字

Linux 会将可执行文件存放在 /usr/local/bin 目录,库文件会存放在 /usr/local/lib 目录,配置文件会存放在 /usr/local/etc 目录,其他的资源文件会存放在 /usr/local/share 目录。这里指定好目录也方便后续的卸载,后续直接 rm -rf /usr/local/redis 即可删除 redis

4、移动配置文件到安装目录下,以后就使用这一份配置文件

1
2
3
4
mkdir etc
cp redis.conf /usr/local/redis/etc/

vim /usr/local/redis/etc/redis.conf
  • 默认 daemonize no 改为 daemonize yes
  • 默认 protected-mode yes 改为 protected-mode no
  • 默认 bind 127.0.0.1 改为 直接注释掉(默认 bind 127.0.0.1 只能本机访问)或改成本机IP地址,否则影响远程IP连接
  • 添加 redis 密码,则修改 requirepass 项为你需要设置的密码

这里列举下比较重要的配置项:

配置项名称 配置项值范围 说明
daemonize yes、no yes表示启用守护进程,默认是no即不以守护进程方式运行。
其中Windows系统下不支持启用守护进程方式运行
port 指定 Redis 监听端口,默认端口为 6379
bind 绑定的主机地址
如果需要设置远程访问则直接将这个属性注释或者改为 bind *
这个属性和下面的 protected-mode 控制是否可以远程访问
protected-mode yes 、no 保护模式,该模式控制外部网是否可以连接redis服务,
默认是yes,所以默认我们外网是无法访问的,如需外网连接
则需要将此属性改为no
timeout 300 当客户端闲置多长时间后关闭连接,
如果指定为 0,表示关闭该功能
loglevel debug、verbose、
notice、warning
日志级别,默认为 notice
databases 16 设置数据库的数量,默认的数据库是0。
这个通过客户端工具可以看得到
rdbcompression yes、no 指定存储至本地数据库时是否压缩数据,默认为 yes。
Redis 采用 LZF 压缩,如果为了节省 CPU 时间,
可以关闭该选项,但会导致数据库文件变的巨大。
dbfilename dump.rdb 指定本地数据库文件名,默认值为 dump.rdb
dir 指定本地数据库存放目录
requirepass 设置连接密码,如果配置了连接密码,客户端在连接Redis时
需要通过 AUTH <password> 命令提供密码,默认关闭
maxclients 0 设置同一时间最大客户端连接数,默认无限制。
Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的
最大文件描述符数,如果设置 maxclients 0,表示不作限制。
当客户端连接数到达限制时,Redis 会关闭新的连接并向
客户端返回 max number of clients reached 错误信息
maxmemory XXX 指定 Redis 最大内存限制,Redis 在启动时会把数据
加载到内存中,达到最大内存后,Redis 会先尝试清除已到期
或即将到期的 Key,当此方法处理后,仍然达到最大内存设置,
将无法再进行写入操作,但仍然可以进行读取操作。
Redis 新的 vm 机制,会把 Key 存放内存,
Value 会存放在 swap 区。配置项值范围列里XXX为数值。
logfile 日志文件。默认在控制台打印,不会记录到文件,可以指定日志文件路径(日志文件的目录须提前创建)
dir 数据持久化目录 默认数据保存在当前目录,可以指定数据保存目录(目录也需要提前创建好)

5、启动 Redis

将 redis-cli 、redis-server 拷贝到 /usr/local/bin 下,让 redis-cli 指令可以在任意目录下直接使用

1
2
cp /usr/local/redis/bin/redis-server /usr/local/bin/
cp /usr/local/redis/bin/redis-cli /usr/local/bin/

启动命令

1
redis-server /usr/local/redis/etc/redis.conf
1
2
3
4
5
WARNING Memory overcommit must be enabled! Without it, a background save or 
replication may fail under low memory condition. Being disabled, it can can also cause
failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328.
To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then
reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

内核参数说明

内核参数 overcommit_memory 实现内存分配策略,可选值有三个:0、1、2

0 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则内存申请失败,并把错误返回给应用进程

1 表示内核允许分配所有的物理内存,而不管当前的内存状态如何

2 表示内核允许分配超过所有物理内存和交换空间总和的内存

1
2
3
4
5
6
7
8
# 消除方法
vim /etc/sysctl.conf

# 在末尾添加,保存并退出
vm.overcommit_memory = 1

# 检查
sysctl -p

6、查看 Redis 是否运行

  • 采取查看进程方式

  • 采取端口监听查看方式

7、让外网能够访问redis

(一)开放防火墙端口

1
2
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload

(二)修改配置文件(见上)

8、卸载redis

1
2
3
4
5
6
# 停止redis
pkill redis
# 删除安装目录
rm -rf /usr/local/redis
# 删除所有redis相关命令脚本
rm -rf /usr/local/bin/redis-*

9、补充

检测是否有安装 redis-cliredis-server

1
2
whereis redis-cli
whereis redis-server

使用 redis-cli 连接命令

1
2
3
4
redis-cli -h 127.0.0.1 -p 6379 -a zmd123

# 关闭redis
shutdown

安装RabbitMq

查看 erlangrabbitmq 版本对应关系:RabbitMQ Erlang Version Requirements — RabbitMQ

使用包管理工具安装

1、需要先安装 erlang

1
2
3
4
apt-get install -y erlang-nox

# 查看 erlang 版本
erl -v

安装curl

1
apt install curl

2、选择 rabbitmq 版本

  • 直接安装最新版本

    1
    sudo apt-get install rabbitmq-server
  • 安装指定版本

    • 查询可以安装的版本

      1
      apt-cache madison rabbitmq-server
    • 准备环境

      1
      curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash
    • 安装

      1
      sudo apt-get install rabbitmq-server=3.9.17-1
  • 查看安装结果。RabbitMQ 会被安装在 /usr/lib/rabbitmq

    1
    systemctl status rabbitmq-server

3、启用 Web 管理插件

开放端口

1
2
3
4
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent

firewall-cmd --reload

4、Web 管理界面登录:http://localhost:15672

使用 guest/guest 账户登录控制台失败,点击登录显示错误 rabbitmq User can only log in via localhost

原因:rabbitmq 从 3.3 版本之后默认禁止使用 guest/guest 进行远程登录,只能通过 localhost 本地登录,在远程服务器开启rabbitmq-server 后,使用默认账号登录会报错。

解决:增加远程登录账号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 添加远程账号
# rabbitmqctl add_user username password
rabbitmqctl add_user root 123456

# 为账号设置权限
# rabbitmqctl set_user_tags username role
rabbitmqctl set_user_tags root administrator

# 以下为role可选
# administrator,超级管理员角色,可以登录控制台查看所有信息,并可以对用户、策略操作
# monitoring,监控者角色,可以登录控制台查看rabbitmq节点相关信息,无法对策略管理
# management,普通管理者角色,仅可以登录控制台,无法看到节点信息

# 查看账户列表
rabbitmqctl list_users

# 删除角色
# rabbitmqctl delete_user username

# 修改密码
# rabbitmqctl change_password username password

软件包解压缩安装

安装rpm工具

1
apt install rpm

安装准备

然后解压缩命令

1
2
3
rpm -Uvh erlang-26.0.2-1.el8.x86_64.rpm --nodeps

rpm -Uvh rabbitmq-server-3.12.4-1.el8.noarch.rpm --force --nodeps

启动

常用命令

  • 启动 RabbitMQ
1
sudo rabbitmq-server start
  • 关闭 RabbitMQ
1
sudo rabbitmq-server stop
  • 重启 RabbitMQ
1
sudo rabbitmq-server restart
  • 查看 RabbitMQ 状态
1
sudo rabbitmqctl status