RabbitMQ安装教程(基于centos7)

1. 安装依赖环境

yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz

rpm包下载地址

2. 安装Erlang

因为RabbitMQ是用Erlang语言开发的,所以在安装RabbitMQ之前我们先要安装这个语言

RabbitMQ与Erlang的兼容关系详见:https://www.rabbitmq.com/which-erlang.html

所用资源包地址:资源文件

erlang-18.3-1.el7.centos.x86_64.rpm 
socat-1.7.3.2-5.el7.lux.x86_64.rpm
rabbitmq-server-3.6.5-1.noarch.rpm

更高版本下载地址 :

erlang-23.0.2-1.el7.x86_64.rpm下载地址:

https://github.com/rabbitmq/erlang-rpm/releases/download/v23.0.2/erlang-23.0.2-1.el7.x86_64.rpm

rabbitmq-server-3.8.4-1.el7.noarch.rpm下载地址:

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm

:这个版本如果觉得老的话,可以去官网下载,切记不同RabbitMQ会依赖更高的erlang,官网上有详细的介绍。RabbitMQ需要的依赖:socat和logrotate,logrotate操作系统中已经存在了,只需要安装socat就可以了。socat也可以使用yum install socat进行下载。

# 安装
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm

如果出现如下错误

说明gblic 版本太低。我们可以查看当前机器的gblic 版本

strings /lib64/libc.so.6 | grep GLIBC 

 

当前最高版本2.12,需要2.15.所以需要升级glibc

  • 使用yum更新安装依赖

    sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y

  •  下载rpm包

    wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-utils-2.17-55.el6.x86_64.rpm

  • 安装rpm包

    sudo rpm -Uvh *-2.17-55.el6.x86_64.rpm --force --nodeps 

  • 安装完毕后再查看glibc版本,发现glibc版本已经到2.17了

    strings /lib64/libc.so.6 | grep GLIBC 

3. 安装RabbitMQ 

# 安装
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm(推荐使用yum进行安装)

# 安装
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

 安装rpm出现warning: socat-1.7.3.2-1.1.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key I

        在rpm 语句后面加上 --force --nodeps 即原本为 rpm -ivh *.rpm 现在改成 rpm -ivh *.rpm --force --nodeps就可以了。 nodeps的意思是忽视依赖关系。因为各个软件之间会有多多少少的联系。有了这两个设置选项就忽略了这些依赖关系,强制安装或者卸载。参考文章

4. 开启管理界面及配置

# 开启管理界面
rabbitmq-plugins enable rabbitmq_management
# 修改默认配置信息
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app 
# 比如修改密码、配置等等,例如:loopback_users 中的 <<"guest">>,只保留guest

5. 启动

service rabbitmq-server start # 启动服务
service rabbitmq-server stop # 停止服务
service rabbitmq-server restart # 重启服务 

或者下列方式启动

systemctl start rabbitmq-server

rabbitmq-server

rabbitmq-server -detached  # 后台启动

注意:新安装的rabbitmq的用户名和密码都是guest并且,默认只允许localhost登录,因此我们需要添加一个新用户。

# 添加用户
rabbitmqctl add_user root 123456

# 给用户添加权限,给root用户在虚拟主机"/"上的配置、写、读的权限
rabbitmqctl set_permissions root -p / ".*" ".*" ".*"

# 给用户设置标签
rabbitmqctl set_user_tags root administrator

用户的标签和权限: 

TagCapabilities
(None)没有访问management插件的权限
management可以使用消息协议做任何操作的权限,加上:
  1. 可以使用AMQP协议登录的虚拟主机的权限
  2. 查看它们能登录的所有虚拟主机中所有队列、交换器和绑定的权限
  3. 查看和关闭它们自己的通道和连接的权限
  4. 查看它们能访问的虚拟主机中的全局统计信息,包括其他用户的活动
policymaker

所有management标签可以做的,加上:

     在它们能通过AMQP协议登录的虚拟主机上,查看、创建和删除策略以及虚拟主机参数的权限

monitoring所有management能做的,加上:
  1. 列出所有的虚拟主机,包括列出不能使用消息协议访问的虚拟主机的权限
  2. 查看其他用户连接和通道的权限
  3. 查看节点级别的数据如内存使用和集群的权限
  4. 查看真正的全局所有虚拟主机统计数据的权限
administrator所有policymaker和monitoring能做的,加上:
  1. 创建删除虚拟主机的权限
  2. 查看、创建和删除用户的权限
  3. 查看、创建和删除权限的权限
  4. 关闭其他用户连接的权限

 设置配置文件

cd /usr/share/doc/rabbitmq-server-3.6.5/

cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

注意: 

  • rabbitmq默认的安装位置在 /usr/lib/rabbitmq 目录下
  • rabbitmqctl 命令可以完成许多操作,如果想要了解参数详情可以再后面加上 rabbitmqctl help ,若果我们想要了解rabbitmqctl 某个参数的具体介绍可以加上 rabbitmqctl help <command>
  • rabbitmq-server 不能使用help命令进行查看,要查看可以携带的具体参数,可以使用 man rabbitmq-server   进行查看

RabbitMQ常用操作命令

# 前台启动Erlang VM和RabbitMQ
rabbitmq-server

# 后台启动
rabbitmq-server -detached

# 停止RabbitMQ和Erlang VM
rabbitmqctl stop

# 查看所有队列
rabbitmqctl list_queues

# 查看所有虚拟主机
rabbitmqctl list_vhosts

# 在Erlang VM运行的情况下启动RabbitMQ应用
rabbitmqctl start_app
rabbitmqctl stop_app

# 查看节点状态
rabbitmqctl status

# 查看所有可用的插件
rabbitmq-plugins list

# 启用插件
rabbitmq-plugins enable <plugin-name>

# 停用插件
rabbitmq-plugins disable <plugin-name>

# 添加用户
rabbitmqctl add_user username password

# 列出所有用户:
rabbitmqctl list_users

# 删除用户:
rabbitmqctl delete_user username

# 清除用户权限:
rabbitmqctl clear_permissions -p vhostpath username

# 列出用户权限:
rabbitmqctl list_user_permissions username

# 修改密码:
rabbitmqctl change_password username newpassword

# 设置用户权限:
rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*"

# 创建虚拟主机:
rabbitmqctl add_vhost vhostpath

# 列出所以虚拟主机:
rabbitmqctl list_vhosts

# 列出虚拟主机上的所有权限:
rabbitmqctl list_permissions -p vhostpath

# 删除虚拟主机:
rabbitmqctl delete_vhost vhost vhostpath

# 移除所有数据,要在 rabbitmqctl stop_app 之后使用:
rabbitmqctl reset

# 通用参数
General Options

The following options are accepted by most or all commands.

short            | long          | description
-----------------|---------------|--------------------------------
-?               | --help        | displays command help
-n <node>        | --node <node> | connect to node <node>
-l               | --longnames   | use long host names
-t               | --timeout <n> | for commands that support it, operation timeout in seconds
-q               | --quiet       | suppress informational messages
-s               | --silent      | suppress informational messages
                                 | and table header row
-p               | --vhost       | for commands that are scoped to a virtual host,
                 |               | virtual host to use
                 | --formatter   | alternative result formatter to use
                                 | if supported: json, pretty_table, table, csv, erlang
                                   not all commands support all (or any) alternative formatters.

6. 配置虚拟主机及用户

6.1、用户角色

RabbitMQ在安装好后,可以访问`http://ip地址:15672;其自带了guest/guest的用户名和密码;如果需要创建自定义用户;那么也可以登录管理界面后,如下操作:

角色说明

1、 超级管理员(administrator)

可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

2、 监控者(monitoring)

可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

3、 策略制定者(policymaker)

可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

4、 普通管理者(management)

仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

5、 其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

6.2、Virtual Hosts配置

        像mysql拥有数据库的概念并且可以指定用户对库和表等操作的权限。RabbitMQ也有类似的权限管理;在RabbitMQ中可以虚拟消息服务器Virtual Host,每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 相当于mysql的db。Virtual Name一般以/开头。

 6.2.1. 创建Virtual Hosts

 6.2.2. 设置Virtual Hosts权限

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值