CentOS7安装RabbitMQ

Stella981
• 阅读 632

1. 安装步骤

# rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
# rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc

# vim /etc/yum.repos.d/rabbitmq.repo
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1

# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.17/rabbitmq-server-3.7.17-1.el7.noarch.rpm
# yum install rabbitmq-server-3.7.17-1.el7.noarch.rpm 

注意:rabbitmq-server对erlang版本有要求,可以先安装rabbitmq,若无法安装,可以查看提示中要求的erlang版本信息进行下载,然后先安装erlang,再安装rabbitmq

下载erlang地址:https://www.erlang-solutions.com/resources/download.html
# wget https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/esl-erlang_22.0.7-1~centos~7_amd64.rpm
# yum install esl-erlang_22.0.7-1~centos~7_amd64.rpm



systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service
systemctl stop rabbitmq-server.service
chkconfig rabbitmq-server on


安装web管理插件,使用15672端口
rabbitmq-plugins enable rabbitmq_management

rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。 如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(/etc/rabbitmq/rabbitmq.config)中设置loopback_users为[]。

# vim /etc/rabbitmq/rabbitmq.config
[{rabbit, [{loopback_users, []}]}].

若修改主机hosts文件,导致rabbitmq-server无法启动等,报错信息如下:rabbitmq-server: ERROR: epmd error for host mqserver: timeout (timed out),此时删除目录的所有文件,再次启动就可以了。目录:/var/lib/rabbitmq/mnesia

若不想使用guest用户登陆的话,可以添加新用户进行操作:

# rabbitmqctl add_user mq 123456
# rabbitmqctl set_user_tags mq administrator
# rabbitmqctl set_permissions -p "/" mq ".*" ".*" ".*"
# cat /etc/rabbitmq/rabbitmq.config
[{rabbit,[{tcp_listeners,[5672]},{loopback_users,["mq"]}]}].

2. 设置RabbitMQ远程ip登录

由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq。 这里我们以创建个test帐号,密码123456为例,创建一个账号并支持远程ip访问。

创建账号

rabbitmqctl add_user test 123456

设置用户角色

rabbitmqctl set_user_tags test administrator

设置用户权限

rabbitmqctl set_permissions -p "/" test ".*" ".*" ".*"

设置完成后可以查看当前用户和角色(需要开启服务)

rabbitmqctl list_users

这时你就可以通过其他主机的访问RabbitMQ的Web管理界面了,访问方式,浏览器输入:serverip:15672。其中serverip是RabbitMQ-Server所在主机的ip。

2.1 RabbitMQ常用操作

1、用户管理 用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。 (1) 新增一个用户 rabbitmqctl add_user Username Password

(2) 删除一个用户 rabbitmqctl delete_user Username

(3) 修改用户的密码 rabbitmqctl change_password Username Newpassword

(4) 查看当前用户列表 rabbitmqctl list_users

2.2 用户角色

按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。 (1) 超级管理员(administrator) 可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。 (2) 监控者(monitoring) 可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等) (3) 策略制定者(policymaker) 可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。与administrator的对比,administrator能看到这些内容。 (4) 普通管理者(management) 仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。 (5) 其他 无法登陆管理控制台,通常就是普通的生产者和消费者。

设置用户角色的命令为: rabbitmqctl set_user_tags User Tag

User为用户名, Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)。 也可以给同一用户设置多个角色,例如 rabbitmqctl set_user_tags username monitoring policymaker

2.3 用户权限

用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。

例如: 将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。详细请参考官方文档中"How permissions work"部分。

相关命令为: (1) 设置用户权限 rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP

(2) 查看(指定hostpath)所有用户的权限信息 rabbitmqctl list_permissions [-p VHostPath]

(3) 查看指定用户的权限信息 rabbitmqctl list_user_permissions User

(4) 清除用户的权限信息 rabbitmqctl clear_permissions [-p VHostPath] User

# 在rabbitmq的内部数据库添加用户;
add_user <username> <password>  
 
# 删除一个用户;
delete_user <username>  
 
# 改变用户密码(也是改变web管理登陆密码);
change_password <username> <newpassword>  
 
# 清除用户的密码,该用户将不能使用密码登陆,但是可以通过SASL登陆如果配置了SASL认证;
clear_password <username>
 
# 设置用户tags;
set_user_tags <username> <tag> ...
 
# 列出用户;
list_users  
 
# 创建一个vhosts;
add_vhost <vhostpath>  
 
# 删除一个vhosts;
delete_vhost <vhostpath>  
 
# 列出vhosts;
list_vhosts [<vhostinfoitem> ...]  
 
# 针对一个vhosts给用户赋予相关权限;
set_permissions [-p <vhostpath>] <user> <conf> <write> <read>  
 
# 清除一个用户对vhosts的权限;
clear_permissions [-p <vhostpath>] <username>  
 
# 列出哪些用户可以访问该vhosts;
list_permissions [-p <vhostpath>]  
 
# 列出该用户的访问权限;
list_user_permissions <username>  
 
set_parameter [-p <vhostpath>] <component_name> <name> <value>
clear_parameter [-p <vhostpath>] <component_name> <key>
list_parameters [-p <vhostpath>]

# 列出所有插件
rabbitmq-plugins list
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
翼
3年前
js 数组 转为树形结构
需要转换为树形的数组vardata{"orderById":null,"platformCommissionProportion":1,"name":"添加剂","pid":13,"id":26
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这