Linux安装RabbitMQ

server/2024/11/30 13:33:09/

安装步骤

rabbitmq使用erlang开发,依赖于erlang,所以需要先下载erlang,且版本要兼容:

可在官网查看erlangrabbitmq的版本对应关系

https://www.rabbitmq.com/docs/which-erlang

版本对应关系


CentOs7安装运行

下载

下载地址

https://www.rabbitmq.com/docs/download

rabbitmq使用erlang开发,依赖于erlang,所以要先下载erlang,点击如下位置进行erlang的下载:

erlang下载1

点击后跳转github,跳转后选择红框处25的版本,以对应当前最新的4.0.3版本mq:

25xOS7

然后再点击Tags后选择版本下载:

git的tags

git下载erlang

最后选择el7 x86的版本点击进行下载:

对应7的版本

然后再下载MQ:

下载地址

其分为docker下载、安装包下载,这里演示linuxCentOS7使用安装包方式下载及安装

点击如下内容:

CentOS下载

Direct Downloads标题下点击下载

跳转下载

安装运行

都下载完成后,将安装包放入linux中,然后进入安装包存放目录,执行rpm -ivh安装命令:

命令:

  • 安装erlang:rpm -ivh erlang-26.2.5.5-1.el7.x86_64.rpm
  • 安装rabbitmqrpm -ivh rabbitmq-server-4.0.3-1.el8.noarch.rpm
[root@Centos7 rabbitmq]# rpm -ivh erlang-26.2.5.5-1.el7.x86_64.rpm 准备中...                          ################################# [100%]正在升级/安装...   1:erlang-26.2.5.5-1.el7            ################################# [100%]
[root@Centos7 rabbitmq]# rpm -ivh rabbitmq-server-4.0.3-1.el8.noarch.rpm 警告:rabbitmq-server-4.0.3-1.el8.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 6026dfca: NOKEY准备中...                          ################################# [100%]正在升级/安装...   1:rabbitmq-server-4.0.3-1.el8      ################################# [100%]

安装完成后使用service rabbitmq-server start命令启动mq

[root@Centos7 rabbitmq]# service rabbitmq-server start
Redirecting to /bin/systemctl start rabbitmq-server.service
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

启动后如果出现上面Job for rabbitmq-server.service failed.......的失败问题,需要使用如下命令进行配置:

vi /etc/rabbitmq/rabbitmq-env.conf

vi命令执行后,在文件里面添加这一行:NODENAME=rabbit@localhost,保存。
注意rabbitmq-env.conf这个文件没有,打开之后自动创建。

解决启动失败

完成配置后在重启并查看mq状态:

  • 重启命令:systemctl restart rabbitmq-server
  • 状态查看命令:systemctl status rabbitmq-server

如下即为成功启动:

[root@Centos7 rabbitmq]# vi /etc/rabbitmq/rabbitmq-env.conf
[root@Centos7 rabbitmq]# systemctl restart rabbitmq-server
[root@Centos7 rabbitmq]# systemctl status rabbitmq-serverrabbitmq-server.service - RabbitMQ brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)Active: active (running) since 五 2024-11-15 09:22:27 CST; 11s agoProcess: 8477 ExecStop=/usr/sbin/rabbitmqctl shutdown (code=exited, status=0/SUCCESS)Main PID: 8522 (beam.smp)Tasks: 25CGroup: /system.slice/rabbitmq-server.service├─8522 /usr/lib64/erlang/erts-14.2.5.4/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -pc unicode -P 1048576 -t 5000000 -stbt db...├─8536 erl_child_setup 32768├─8553 sh -s disksup├─8554 /usr/lib64/erlang/lib/os_mon-2.9.1/priv/bin/memsup├─8555 /usr/lib64/erlang/lib/os_mon-2.9.1/priv/bin/cpu_sup├─8558 /usr/lib64/erlang/erts-14.2.5.4/bin/inet_gethost 4├─8559 /usr/lib64/erlang/erts-14.2.5.4/bin/inet_gethost 4└─8563 /bin/sh -s rabbit_disk_monitor1115 09:22:27 Centos7 rabbitmq-server[8522]: Doc guides:  https://www.rabbitmq.com/docs
1115 09:22:27 Centos7 rabbitmq-server[8522]: Support:     https://www.rabbitmq.com/docs/contact
1115 09:22:27 Centos7 rabbitmq-server[8522]: Tutorials:   https://www.rabbitmq.com/tutorials
1115 09:22:27 Centos7 rabbitmq-server[8522]: Monitoring:  https://www.rabbitmq.com/docs/monitoring
1115 09:22:27 Centos7 rabbitmq-server[8522]: Upgrading:   https://www.rabbitmq.com/docs/upgrade
1115 09:22:27 Centos7 rabbitmq-server[8522]: Logs: /var/log/rabbitmq/rabbit@localhost.log
1115 09:22:27 Centos7 rabbitmq-server[8522]: <stdout>
1115 09:22:27 Centos7 rabbitmq-server[8522]: Config file(s): (none)
1115 09:22:27 Centos7 rabbitmq-server[8522]: Starting broker... completed with 3 plugins.
1115 09:22:27 Centos7 systemd[1]: Started RabbitMQ broker.

开启web页面

开启rabbitmq的web管理界面

使用rabbitmq-plugins enable rabbitmq_management命令,注意开启后需要使用systemctl restart rabbitmq-server命令重启rabbitmq服务

[root@Centos7 rabbitmq]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
Plugin configuration unchanged.
[root@Centos7 rabbitmq]# systemctl restart rabbitmq-server

完成管理页面配置后,还需要开放防火墙(如果有使用防火墙):

  • 开放15672端口:firewall-cmd --zone=public --add-port=15672/tcp --permanent
  • 开放5672端口:firewall-cmd --zone=public --add-port=5672/tcp --permanent
  • 重启防火墙:firewall-cmd --reload
  • 查看防火墙端口状态:firewall-cmd --list-all
[root@Centos7 rabbitmq]# firewall-cmd --zone=public --add-port=15672/tcp --permanent 
Warning: ALREADY_ENABLED: 15672:tcp
success
[root@Centos7 rabbitmq]# firewall-cmd --zone=public --add-port=5672/tcp --permanent
Warning: ALREADY_ENABLED: 5672:tcp
success
[root@Centos7 rabbitmq]# firewall-cmd --reload
success
[root@Centos7 rabbitmq]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client sshports: 15672/tcp 5672/tcp 6379/tcp 8088/tcp 22/tcp 3306/tcp 8888/tcp 8080/tcp 8719/tcp 9001/tcp 443/tcp 9000/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 

之后便可以通过浏览器使用15672端口访问管理页面:

mq管理页面



新增管理用户

新增管理员用户,rabbitmq默认自带一个guest用户,这里增加一个新的管理员用户方便以后使用

新增用户:

用户名密码都是admin:

rabbitmqctl add_user admin admin

设置用户分配操作权限:

rabbitmqctl set_user_tags admin administrator

administrator为用户级别,所有的级别为:

  • 1、administrator 可以登录控制台、查看所有信息、可以对rabbitmq进行管理
  • 2、monitoring 监控者, 可登录控制台,查看所有信息
  • 3、policymaker 策略制定者, 可登录控制台,指定策略
  • 4、managment 普通管理员, 可登录控制台

为用户添加资源权限

rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
  • -p /: –p 参数后面跟的是虚拟主机名称,这里 / 表示默认的根虚拟主机。
  • admin: 这是设置权限的用户账号。通常用于管理员操作。
  • ".*": 这是一个通配符模式,意味着对这个用户赋予了所有权限。"*" 代表任意字符,. 代表任意单个字符。
  • ".*"".*":这两个同样是指定该用户可以执行的所有操作,也是全部权限的表示。

这条命令的作用就是给用户 admin/ 虚拟主机上设置了完全权限,这意味着 admin 用户可以执行所有的操作,包括但不限于创建、删除队列,发布、取消消息等。

控制台执行如上的命令:

[root@Centos7 rabbitmq]# rabbitmqctl add_user admin admin
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@Centos7 rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
[root@Centos7 rabbitmq]# rabbitmqctl set_permissions -p / admin  ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...

使用新账号登录:

控制台登录

进入后在Admin页签中如下图,用户处多了新加的admin

权限查看

至此安装运行完成。

其他用户操作命令:

rabbitmqctl change_password Username Newpassword 修改密码
rabbitmqctl delete_user Username 删除用户
rabbitmqctl list_users 查看用户清单


docker安装运行

访问网址:

https://www.rabbitmq.com/docs/download

在安装完docker的linux中执行如下命令

docker下载mq

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management

该命令会自动安装rabbitmq,执行效果如下,可能会很慢,需要等待:

[root@Centos7 ~]# docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
Unable to find image 'rabbitmq:4.0-management' locally
4.0-management: Pulling from library/rabbitmq
afad30e59d72: Already exists 
211e97f904c7: Already exists 
b7d633cb09df: Already exists 
0357761da170: Already exists 
ca95b127b98a: Already exists 
3ec3ceaa0dcb: Already exists 
7037c52023fb: Already exists 
d738327fa668: Already exists 
5a286d22c8dd: Already exists 
e971f4d4bd73: Pull complete 
Digest: sha256:a0ea806ba32e6e9776aa83f66796e6c746606e669220b26359bd461c79a2ba14
Status: Downloaded newer image for rabbitmq:4.0-management
.........
2024-11-22 01:53:31.112725+00:00 [info] <0.9.0> Time to start RabbitMQ: 3371 ms

如下即为成功,但是这是前台运行,shell窗口无法执行其他操作,停止后执行如下命令转为后台启动

[root@Centos7 ~]# docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
9f1174c754d6a7be62986f092de1d530fef8d69a47a40c244831de63ccb0ddad

可查看版本信息:

[root@Centos7 ~]# docker run --rm rabbitmq rabbitmqctl version
4.0.3

最后使用你的机器ip:15672访问管理页面即可,默认用户名密码都是guest

docker安装mq



管理页面参数介绍

顶部标签

顶部标签

RabbitMQ 管理界面中的顶部标签(OverviewConnectionsChannelsExchangesQueues and StreamsAdmin)提供了对 RabbitMQ 集群的不同方面的管理和监控功能。以下是各个标签的详细含义和作用:

1. Overview(概览)

  • 功能:
    • 提供 RabbitMQ 集群或单个节点的总体运行状态。
    • 显示有关队列、交换机、连接、通道等的统计信息。
  • 包含的主要信息:
    • Totals:队列中的消息总数、消息速率(每分钟发布/确认/投递的消息数量)。
    • Nodes:显示所有节点的资源使用(内存、磁盘、CPU、Erlang 进程等)。
    • Churn Statistics:统计连接的创建和关闭速率。

2. Connections(连接)

  • 功能:
    • 显示所有客户端到 RabbitMQ 的 TCP 连接。
    • 允许您查看每个连接的详细信息。
  • 包含的主要信息:
    • 客户端 IP 和端口号。
    • 协议(如 AMQP 0-9-1)。
    • 与该连接相关的通道数量。
    • 状态(如 runningidle)。
  • 操作:
    • 可以强制关闭不需要的连接(Terminate)。

3. Channels(通道)

  • 功能:
    • 显示 RabbitMQ 中所有的 AMQP 通道。
    • 通道是 RabbitMQ 的逻辑通信通道,客户端通过它们与 RabbitMQ 交换数据。
  • 包含的主要信息:
    • 通道的状态(如空闲或活动)。
    • 与通道关联的连接。
    • 消息流速率(如发布、确认)。
  • 操作:
    • 可以关闭特定通道以强制客户端重新创建。

4. Exchanges(交换机)

  • 功能:
    • 列出 RabbitMQ 中的所有交换机。
    • 交换机用于根据路由键将消息转发到适当的队列。
  • 包含的主要信息:
    • 交换机的类型(如 directfanouttopicheaders)。
    • 是否持久化(Durable)和是否自动删除(Auto-delete)。
    • 消息路由统计信息。
  • 操作:
    • 创建新的交换机。
    • 删除不需要的交换机。

5. Queues and Streams(队列和流)

  • 功能:
    • 列出所有队列和流(Streams),并显示每个队列的详细信息。
    • 队列是存储消息的地方,消费者可以从中获取消息。
    • 是一种特殊的队列类型,适合高吞吐量消息。
  • 包含的主要信息:
    • 队列名称、队列中的消息数、消费者数量。
    • 消息的入队和出队速率。
    • 消费者的确认和拒绝统计。
  • 操作:
    • 查看消息详细信息(如消息内容和元数据)。
    • 删除队列或流。

6. Admin(管理)

  • 功能:
    • 配置和管理 RabbitMQ 的核心设置。
  • 包含的主要功能:
    • Users(用户管理):
      • 管理 RabbitMQ 的用户账户。
      • 配置权限(VHost 的访问权限)。
    • Policies(策略):
      • 定义 RabbitMQ 的策略,用于自动化操作(如队列的 TTL、镜像队列等)。
    • Permissions(权限管理):
      • 控制不同用户对交换机、队列的操作权限。
    • Parameters(插件参数):
      • 配置 RabbitMQ 插件(如 Shovel、Federation)。
    • Virtual Hosts(虚拟主机):
      • 创建和管理 RabbitMQ 的虚拟主机。
  • 操作:
    • 管理用户和策略。
    • 设置与虚拟主机和插件相关的参数。

这些标签页面让用户可以从不同维度监控和管理 RabbitMQ 集群,适合处理日常运维任务以及排查问题。


概要信息

nodes

在 RabbitMQ 管理界面的 Nodes 节点中,以下是各列的具体含义:

  1. Name (名称)
    • 表示 RabbitMQ 节点的名称,格式通常为 rabbit@主机名
    • 这个名称是由 RabbitMQ 启动时的主机名和 RabbitMQ 服务名称组成的,用来标识当前节点。
  2. File Descriptors (文件描述符)
    • 当前节点使用的文件描述符数量和可用文件描述符的上限。
    • 绿色部分显示当前使用的文件描述符数。
    • 右侧数字显示总文件描述符限制(例如 1048576 available)。
    • 如果达到上限,可能会影响 RabbitMQ 的正常运行,因为文件描述符用于连接、日志等操作。
  3. Erlang Processes (Erlang 进程)
    • 当前节点的 Erlang 虚拟机(BEAM)运行的进程数量和可用进程上限。
    • 绿色部分显示当前运行的 Erlang 进程数。
    • 右侧数字显示总进程限制(例如 1048576 available)。
    • Erlang 进程是 RabbitMQ 的基础构件,用于处理消息、通道、连接等。
  4. Memory (内存)
    • 当前 RabbitMQ 节点使用的内存大小。
    • 绿色部分表示当前使用的内存量(例如 183 MiB)。
    • 右侧数字显示内存的高水位值(例如 4.6 GiB high watermark)。超过高水位时,RabbitMQ 可能会暂停处理消息以防止过载。
  5. Disk Space (磁盘空间)
    • 当前 RabbitMQ 节点使用的磁盘空间量。
    • 绿色部分表示磁盘可用空间(例如 11 GiB)。
    • 右侧数字表示低水位值(例如 48 MiB low watermark)。如果磁盘可用空间小于低水位值,RabbitMQ 会停止接受新消息。
  6. Uptime (运行时间)
    • 当前节点从启动到现在的运行时间,格式为 时:分:秒(例如 7m 3s 表示已运行 7 分钟 3 秒)。
  7. Cores (核心数)
    • 当前节点使用的 CPU 核心数(例如 128)。
    • 核心数量可能与系统分配的资源有关。
  8. Info (信息)
    • 包括节点的运行状态、类型或其他信息标志。
    • basic 表示基本信息。
    • 其他标志(如 rss)可能与内存管理有关。
  9. Reset Stats (重置统计数据)
    • 按下 This Node 按钮可以重置该节点的统计数据。
    • 按下 All Nodes 按钮可以重置集群中所有节点的统计数据。

通过这些列,您可以直观地查看和监控 RabbitMQ 节点的资源使用和运行状态,便于判断节点是否运行正常。



卸载RabbitMQ

先停止RabbitMq服务

systemctl stop rabbitmq-server

查看并卸载rabbitmq安装的相关列表

查看命令:

yum list | grep rabbitmq

卸载命令(直接执行即可):

yum -y remove rabbitmq-server.noarch

查看并卸载erlang安装的相关软件包

查看命令:

yum list | grep erlang

卸载命令(直接执行即可):

yum -y remove erlang-*

查找并删除erlang相关文件

whereis erlang
[root@Centos7 ~]# whereis erlang
erlang: /usr/lib64/erlang

删除上面查出的erlang相关文件:

[root@Centos7 ~]# rm -rf /usr/lib64/erlang

然后卸载完成。


http://www.ppmy.cn/server/146162.html

相关文章

任意文件读取漏洞(CVE-2024-7928)修复

验证CVE-2024-7928问题是否存在可以使用如下方法&#xff1a; https://域名/index/ajax/lang?lang..//..//目录名/文件名&#xff08;不带后缀&#xff09; 目录名是该项目的一个目录&#xff0c;这里目录位置为nginx设置站点目录为基准&#xff0c;网上两层目录。 文件名…

蒙特卡洛方法(Monte Carlo,MC)

目录 1 序言 2 Monte Carlo法计算积分 3 最优化计算Monte Carlo法 1 序言 蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的&#xff0c;“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场&#xff0c;这个方法是一类基于概率的方法的统称。是一种应用随机数来进行…

小程序 - 婚礼邀请函

小程序页面和样式练习 - 婚礼邀请函小程序开发笔记 目录 婚礼邀请函 准备工作 加载静态资源 项目初始化 标签栏的配置 各页面导航栏标题配置 全局导航栏样式配置 公共样式的编写 项目内容 邀请函页面内容 邀请函页面样式 照片页面内容 照片墙页面样式 美好时光页…

【Java基础入门篇】前言

Java基础入门篇 本系列内容主要针对Java基础知识&#xff0c;总共包含四大部分内容&#xff1a; 变量、数据类型和运算符控制语句和递归算法面向对象和JVM底层分析数组和排序 学习需要具备&#xff1a; IDEA编译器 JDK1.8版本 写在前面 在Java入门的最开始&#xff0c;我们需…

C++设计模式(工厂模式)

一、介绍 1.动机 在软件系统中&#xff0c;经常面临着创建对象的工作&#xff0c;这些对象有可能是一系列相互依赖的对象&#xff1b;由于需求的变化&#xff0c;需要创建的对象的具体类型经常变化&#xff0c;同时也可能会有更多系列的对象需要被创建。 如何应对这种变化&a…

【k8s深入理解之 Scheme 补充-7】理解无版本资源、有版本资源、元数据信息等联系和区别

代码 注意 无版本资源 —— 也是一种资源&#xff0c;可以理解为公共资源&#xff0c;用于记录或查询&#xff08;如 Status 或 APIGroup 等&#xff09; 由于 k8s 发展原因&#xff0c;一般放置在 核心组v1 版本种&#xff08;Group为空&#xff0c;版本为 v1&#xff09;&am…

maven 工具 clean、compile、package、install、deploy 常用命令使用区别

在 Maven 中&#xff0c;clean, compile, 和 deploy 是常用的生命周期阶段命令&#xff0c;它们各自有不同的用途和含义。下面是这些命令的详细解释&#xff1a; 1. mvn clean 含义&#xff1a; clean 阶段用于清理项目构建过程中生成的文件。 作用&#xff1a; 删除 target …

Could not locate device support files.

报错信息&#xff1a;Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题&#xff1a;xcode15升级到xcode16之后&#xff0c;13.…