详解最新版RabbitMQ 基于RPM 方式的安装
如何选择安装版本
已经不支持的发布系列
版本 | 最后补丁版本 | 首次发布时间 | 停止更新时间 |
---|---|---|---|
3.7 | 3.7.28 | 2017年11月28日 | 2020年09月30日 |
3.6 | 3.6.16 | 2015年12月22日 | 2018年05月31日 |
3.5 | 3.5.8 | 2015年03月11日 | 2016年10月31日 |
3.4 | 3.4.4 | 2014年10月21日 | 2015年10月31日 |
3.3 | 3.3.5 | 2014年04月02日 | 2015年03月31日 |
3.2 | 3.2.4 | 2013年10月23日 | 2014年10月31日 |
3.1 | 3.1.5 | 2013年05月01日 | 2014年04月30日 |
3.0 | 3.0.4 | 2012年11月19日 | 2013年11月30日 |
我们选择最新版:3.8.16 于2021年5月4日更新,但2019年10月1日就已经发布3.8 版本,并且3.7版本已经停止更新了。
基于RPM 方式安装RabbitMQ
目前支持的基于 RPM 的发行版列表包括
- CentOS 8.x
- RedHat Enterprise Linux 8.x
- Fedora 32 到34 (使用 CentOS 8.x 软件包)
用户权限要求:RabbitMQ RPM 包需要sudo权限才能安装和管理。
CentOS 8 阿里云镜像下载:
http://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.3.2011-x86_64-dvd1.iso
基于RPM安装步骤
下载安装包
注意
各个包的对应关系也是有一定要求的,像笔者这一套就都是el8的,下载的时候也一定要下载一样的,每个包后面也都有标示,而且和linux版本显示的4.18.0-80.el8.x86_64也是一致的(查看linux版本:uname -r)
将这三个rpm 上传到linux 服务器中
使用CentOS 7 系统的请下载以下安装包
https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.3-1.el7.x86_64.rpm
http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm
https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.7.27-1.el7.noarch.rpm
安装需要的依赖包
yum install build-essential kernel-devel gcc gcc-c++ m4 ncurses-devel openssl openssl-devel unixODBC unixODBC-devel
安装RabbitMQ
分别安装Erlang、Socat、RabbitMQ(一定要按照顺序!)
安装Erlang: rpm -ivh erlang-23.3.4.1-1.el8.x86_64.rpm
安装Socat: rpm -ivh socat-1.7.3.3-2.el8.x86_64.rpm
安装RabbitMQ:rpm -ivh rabbitmq-server-3.8.16-1.el8.noarch.rpm
报错一
[/usr/lib/tmpfiles.d/libstoragemgmt.conf:1] Line references path below legacy directory /var/run/, updating /var/run/lsm → /run/lsm; please update the tmpfiles.d/ drop - in file accordingly.
[/usr/lib/tmpfiles.d/libstoragemgmt.conf:2] Line references path below legacy directory /var/run/, updating /var/run/lsm/ipc → /run/lsm/ipc; please update the tmpfiles.d/ drop-in file accordingly.
[/usr/lib/tmpfiles.d/mdadm.conf:1] Line references path below legacy directory /var/run/, updating /var/run/mdadm → /run/mdadm; please update the tmpfiles.d/ drop-in file accordingly.
[/usr/lib/tmpfiles.d/pesign.conf:1] Line references path below legacy directory /var/run/, updating /var/run/pesign → /run/pesign; please update the tmpfiles.d/ drop-in file accordingly.
[/usr/lib/tmpfiles.d/rabbitmq-server.conf:1] Line references path below legacy directory /var/run/, updating /var/run/rabbitmq → /run/rabbitmq; please update the tmpfiles.d/ drop-in file accordingly.
解决报错一
将提示的需要修改的文件进行更改:旧→ 新
vim /usr/lib/tmpfiles.d/libstoragemgmt.conf
将 /var/run/lsm 改为 /run/lsm
vim /usr/lib/tmpfiles.d/mdadm.conf
将/var/run/mdadm 改为 /run/mdadm
vim /usr/lib/tmpfiles.d/pesign.conf
将/var/run/pesign 改为 /run/pesign
vim /usr/lib/tmpfiles.d/rabbitmq-server.conf
将/var/run/rabbitmq 改为 /run/rabbitmq
再执行:
rpm -ivh rabbitmq-server-3.8.16-1.el8.noarch.rpm
如果只显示:已经安装,没有报错那就安装成功了。
RabbitMQ配置文件没有,需要新增rabbitmq.conf
cd /etc/rabbitmq/
vim rabbitmq.conf
编辑内容如下: loopback_users=none
这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。
关于更多配置信息将在另一篇文章编写。
启动服务
rabbitmq-server start
报错二
ERROR: epmd error for host RabbitMQ-101: timeout
解决报错二
vim /etc/hosts
在最后添加:127.0.0.1 RabbitMQ-101
host 填写提示错误的host,别填错了
再次启动服务
这个命令启动属于“前台启动”,ctrl+c 退出服务,
使用后台启动命令:systemctl start rabbitmq-server
查看启动端口情况:lsof -i:5672
服务状态:systemctl status rabbitmq-server
可以看到服务启动成功和日志存放目录(/var/log/rabbitmq)
服务管理命令
启动服务:systemctl start rabbitmq-server
服务状态:systemctl status rabbitmq-server
关闭服务:systemctl stop rabbitmq-server
重启服务:systemctl restart rabbitmq-server
开启rabbitmq 管理插件
/sbin/rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server
查看默认管理端口是否监听成功:netstat -anp|grep 15672
防火墙端口开放
开放访问端口15672: firewall-cmd -–permanent –-add-port=15672/tcp
重启防火墙: firewall-cmd --reload
到此,就可以通过http://ip:15672进行登陆web页面了
输入默认的管理员账号密码:guest,guest
完成RabbitMQ 3.8.16的安装
RabbitMQ 相关端口的作用
- 4369:epmd,RabbitMQ 节点和 CLI 工具使用的对等发现服务
- 5672、5671:由 AMQP 0-9-1 和 1.0 客户端使用,分别为没有和有 TLS
- 25672:用于节点间和 CLI 工具通信(Erlang 分发服务器端口)并从动态范围分配(默认限制为单个端口,计算为 AMQP 端口 + 20000)。除非确实需要这些端口上的外部连接(例如,集群使用联合或在子网外的机器上使用 CLI 工具),否则不应公开这些端口。
- 35672-35682:由 CLI 工具(Erlang 分发客户端端口)用于与节点通信,并从动态范围(计算为服务器分发端口 + 10000 到服务器分发端口 + 10010)分配。
- 15672:HTTP API客户端、管理 UI和 rabbitmqadmin (仅当启用管理插件时才会监听)
- 61613、61614:没有和有TLS 的STOMP 客户端(仅当启用了STOMP 插件时才会监听)
- 1883、8883:MQTT 客户端没有和有TLS,如果启用了MQTT 插件才会监听
- 15674:STOMP-over-WebSockets 客户端(仅当启用了Web STOMP 插件时才会监听)
- 15675:MQTT-over-WebSockets 客户端(仅当启用了Web MQTT 插件时才会监听)
- 15692:Prometheus 指标(仅当启用Prometheus 插件时才会监听)
关注公众号获取最新技术信息、最全面试题
IDEA激活码等更多免费资源等你来拿👇