用户权限要求
RabbitMQ RPM 软件包需要 sudo
权限才能安装和管理。 在 sudo
不可用的环境中,请考虑使用通用二进制生成。
1、所需环境及软件包:
Erlang
在安装 RabbitMQ 之前,您必须安装受支持的 Erlang/OTP版本。 标准的Red Hat,Fedora,CentOS存储库提供了通常过时的Erlang版本,不能用于运行最新的RabbitMQ版本。
在基于 RPM 的发行版上,现代 Erlang 有三种替代来源:
- RabbitMQ团队生产一个剥离的软件包 向下仅提供运行所需的组件 RabbitMQ.这是推荐的选项。
- openSUSE 为 openSUSE Leap 生产 Erlang 包
- Erlang 解决方案生产的软件包通常合理地达到 日期并涉及安装可能过多的依赖项列表
RabbitMQ 软件包
该软件包通过 PackageCloud 上的 Yum 存储库分发。rabbitmq-server 包含在 Fedora 中。然而 包含的版本通常落后于 RabbitMQ 版本。 建议您使用packagecloud中的百胜存储库。
检查 fedoraproject的详细信息,了解服务器的版本 可用于哪些版本的发行版。
2、安装过程
官方文档中主要有以下两种方法可以安装这些 RPM:
- 在 Cloudsmith.io 或 PackageCloud 上使用 Yum 存储库(强烈建议使用此选项)安装软件包
- 下载软件包并使用 rpm 安装它。此选项需要手动安装所有包依赖项。
这里只说一种方式的安装过程(packagecloud.io)
运行安装脚本
Erlang
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
RabbitMQ
## Uses a PackageCloud-provided Yum repository setup script.
## Always verify what is downloaded before piping it to a privileged shell!
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
以上两步如果操作成功,那么我们可以在**/etc/yum.repos.d
文件夹中看到以下文件
rabbitmq_erlang.repo
rabbitmq_rabbitmq-server.repo
为 RabbitMQ 和 Modern Erlang 添加 Yum 存储库
使用Yum存储库,必须使用.repo文件(例如rabbitmq.repo) 添加到 /etc/yum.repos.d/ 目录下。文件的内容会略有不同 发行版之间(例如 CentOS Stream 9、CentOS Stream 8 或 OpenSUSE)。
更新 Yum 包元数据:
yum update -y
yum -q makecache -y --disablerepo='*' --enablerepo='rabbitmq_erlang' --enablerepo='rabbitmq_server'
接下来从标准存储库安装依赖项:
## install these dependencies from standard OS repositories
yum install socat logrotate -y
最后,安装现代 Erlang 和 RabbitMQ:
## install RabbitMQ and zero dependency Erlang from the above repositories,
## ignoring any versions provided by the standard repositories
yum install --repo rabbitmq_erlang --repo rabbitmq_server-noarch erlang rabbitmq-server
注意:如果yum install 命令中没有--repo
指令 直接将--repo rabbitmq_erlang --repo rabbitmq_server-noarch
删除执行!执行结束出现complete
命令就以为着安装完成。
3、Package Version locking in Yum(官方文档查询解决办法)
Package Version locking in Yum插件可以 用于防止意外的软件包升级。使用它会带来离开的风险 系统在更新方面落后,包括重要的错误修复 和安全补丁。
4、运行Rabbit 服务器
以管理员身份启动和停止像往常一样使用服务器,例如使用service:
/sbin/service rabbitmq-server start
/sbin/service rabbitmq-server status
/sbin/service rabbitmq-server stop
实际上Centos7中直接使用Systemctl即可 systemctl start|stop|status 服务名
。
5、 启用插件rabbitmq_prometheus启动web
关闭mq服务
systemctl stop rabbitmq-server
启用插件
rabbitmq-plugins enable rabbitmq_prometheus
启动mq服务
systemctl start rabbitmq-server
注(使用查看系统进行查看mq进行所开启端口等信息):netstat -ntlp | grep PID
不知道PID,可使用systemctl status rabbitmq-server
查看PID。可使用lsof
命令辅助。
最后如果使用虚拟机进行测试,请关闭防火墙
systemctl stop firewalld
setenface 0
或者在不进行关闭防火墙的方式下,对指定端口进行放行
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --permanent --add-port=15672/tcp
放行后还需要 重载下
firewall -cmd --reload
ok,最后访问http://IP:15672
即可(用户名密码都为guest)。在虚拟机本地使用guest账户进行登录没有问题,但是我们使用其他局域网内机器登录则显示User can only log in via localhost
,这是因为账户所拥有权限问题,所以需要进行通过MQ创建一个权限更高的用户。
6、授权用户
添加一个新的用户,创建账号
#rabbitmqctl add_user [用户名] [密码]
rabbitmqctl add_user admin admin
设置用户角色,用户级别:
administrator
可以登录控制台、查看所有信息、可以对rabbitmq
进行管理.monitoring
监控者登录控制台,查看所有信息policymaker
策略制定者登录控制台,指定策略managment
普通管理员登录控制台
rabbitmqctl set_user_tags admin administrator
设置用户权限
#set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
#用户 user_admin 具有/vhost 这个 virtual host 中所有资源的配置、写、读权限当前用户和角色
列出用户列表
rabbitmqctl list_users
紧接着,访问http://IP:15672
利用刚才注册的admin账户进行登录即可。同时可以利用admin账户进行其他用户的创建。
7、补充(配置)
在大多数系统上,节点应该能够以所有默认值启动和运行。 请参阅配置指南以了解更多信息 和生产清单,以获取其他指南 开发环境。
注意:节点设置为以系统用户 rabbitmq 身份运行。 如果节点数据库或日志的位置发生更改, 文件和目录必须归此用户所有。
RabbitMQ 节点绑定到端口(开放服务器 TCP 套接字)以接受客户端和 CLI 工具连接。 其他进程和工具(如 SELinux)可能会阻止 RabbitMQ 绑定到端口。当这种情况发生时, 节点将无法启动。
CLI 工具、客户端库和 RabbitMQ 节点也打开连接(客户端 TCP 套接字)。 防火墙可以阻止节点和 CLI 工具相互通信。 确保以下端口可访问:
- 4369:epmd,RabbitMQ 节点和 CLI 工具使用的对等发现服务
- 5672、5671:由不带 TLS 的 AMQP 0-9-1 和 1.0 客户端使用
- 25672:用于节点间和 CLI 工具通信(Erlang 分发服务器端口) 并且从动态范围分配(默认情况下仅限于单个端口, 计算为 AMQP 端口 + 20000)。除非这些端口上的外部连接确实是必要的(例如 群集使用联合身份验证或在子网外部的计算机上使用 CLI 工具), 这些端口不应公开。有关详细信息,请参阅网络指南。
- 35672-35682:CLI 工具(Erlang 分发客户端端口)用于与节点通信 并从动态范围(计算为服务器分发端口 + 10000 到 服务器分发端口 + 10010)。有关详细信息,请参阅网络指南。
- 15672:HTTP API 客户端、管理 UI 和 rabbitmqadmin(仅当启用了管理插件时)
- 61613、61614:不带 TLS 和带 TLS 的 STOMP 客户端(仅当启用了 STOMP 插件时)
- 1883、8883:没有 TLS 和带有 TLS 的 MQTT 客户端(如果启用了 MQTT 插件)
- 15674:通过 WebSockets 执行 STOMP 客户端(仅当启用了 Web STOMP 插件时)
- 15675:基于 WebSockets 的 MQTT 客户端(仅当启用了 Web MQTT 插件时)
- 15692:普罗米修斯指标(仅当启用了prometheus-plugs时)
可以将 RabbitMQ 配置为使用不同的端口和特定的网络接口。
参考连接
rabbitmq/erlang - 软件包 ·包云 (packagecloud.io)
安装在基于 RPM 的 Linux 上(RedHat Enterprise Linux、CentOS、Fedora、openSUSE) — 兔子MQ (rabbitmq.com)