RabbitMQ之安装

  RabbitMQ是一个消息代理。它的核心原理非常简单:接收和发送消息。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ就扮演着邮箱、邮局以及邮递员的角色。

 

Docker-compose:

version: "3"
services:
    rabbitmq:
      image: rabbitmq:management-alpine
      container_name: rabbitmq
      environment:
        - RABBITMQ_DEFAULT_USER=root
        - RABBITMQ_DEFAULT_PASS=123456
      restart: always
      ports:
        - "15672:15672"
        - "5678:5672"
      volumns:
        - "./data:/var/lib/rabbitmq"    
      logging:
        driver: "json-file"
        options:
          max-size: "200k"
          max-file: "10"

 

 

Windows:

  1. 下载并安装erlang

    RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。

    根据本机位数选择erlang下载版本。

 

     下载完成之后,进行安装(一路next),记住安装的路径并设置环境变量(电脑->属性->环境变量->path) 路径定位到bin(C:\Program Files\erl10.3\bin)

    完成之后,可以通过命令进行验证

    说明安装成功

  2.下载并安装RabbitMQ

    选择版本进行下载

    正常软件安装流程.在cmd命令下(C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.7.13\sbin)执行命令

rabbitmq-plugins.bat enable rabbitmq_management

    打开目录,双击rabbitmq-server.bat

   

  此时可以打开地址:http://localhost:15672

  默认的用户名和密码都是guest

 

 

   3.安装PHP相应扩展

    根据自己的机器型号与PHP版本下载相应扩展

 

    之后将php_amqp.dll复制到php/ext中并在配置文件中添加配置项:

[amqp]
extension=php_amqp.dll

    然后将rabbitmq.1.dll复制到php根目录(E:\xampp\php) , 同时修改Apache配置文件httpd.conf,添加如下代码:

#rabbitmq
LoadFile "E:/xampp/php/rabbitmq.1.dll"

 

     重启Apache,查看是否已经加载了amqp模块

 

  Linux

1. 更新基本系统

安装任何软件包之前,建议使用以下命令更新软件包和存储库

yum -y update

 

2. 安装Erlang

由于RabbitMQ是基于Erlang(面向高并发的语言)语言开发,所以在安装RabbitMQ之前,需要先安装Erlang。在本教程中我们将安装最新版本的Erlang到服务器中。 Erlang在默认的YUM存储库中不可用,因此您将需要安装EPEL存储库。 运行以下命令相同。

yum -y install epel-release

yum -y update

 

安装Erlang

yum -y install erlang socat

 

您现在可以使用以下命令检查Erlang版本。

erl -version

 

您将得到如下输出:

[root@liptan-pc ~]# erl -version
Erlang (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.10.4

 

2. 安装RabbitMQ

RabbitMQ为预编译并可以直接安装的企业Linux系统提供RPM软件包。 唯一需要的依赖是将Erlang安装到系统中。 我们已经安装了Erlang,我们可以进一步下载RabbitMQ。 通过运行下载Erlang RPM软件包。

2.1 下载RabbitMQ

下载RabbitMQ

wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm

 

如果你没有安装wget ,可以运行yum -y install wget 。 您可以随时找到最新版本的RabbitMQ下载页面的链接。

2.2 安装RabbitMQ

通过运行导入GPG密钥:

rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

 

运行RPM安装RPM包:

rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm

 

RabbitMQ现已经安装在系统上。

 

 

为了避免解决依赖问题, 官方推荐使用yum包来进行安装

[YUM]

1)导入签名

## primary RabbitMQ signing key
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
## modern Erlang repository
rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
## RabbitMQ server repository
rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey

2)添加yum包文件/etc/yum.repos.d/rabbitmq.repo

# In /etc/yum.repos.d/rabbitmq.repo

##
## Zero dependency Erlang
##

[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

##
## RabbitMQ server
##

[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_server-source]
name=rabbitmq_server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

3)安装

yum update -y

yum install socat logrotate -y

yum install erlang rabbitmq-server -y

 

 

 

 

 

3. 使用RabbitMQ

运行

systemctl start rabbitmq-server

 

开机自启

systemctl enable rabbitmq-server

 

检查状态

systemctl status rabbitmq-server

 

4. 访问Web控制台

4.1 启动web控制台

启动RabbitMQ Web管理控制台,方法是运行:

rabbitmq-plugins enable rabbitmq_management

 

通过运行以下命令,将RabbitMQ文件的所有权提供给RabbitMQ用户:

chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/

 

4.2 创建用户

现在,您将需要为RabbitMQ Web管理控制台创建管理用户。 运行以下命令相同。

rabbitmqctl add_user admin StrongPassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”

 

将管理员更改为管理员用户的首选用户名。 确保将StrongPassword更改为非常强大的密码。

要访问RabbitMQ的管理面板,请使用您最喜爱的Web浏览器并打开以下URL。

http://Your_Server_IP:15672/

 

5.管理界面介绍

第一次访问需要登录,默认的账号密码为:guest/guest

5.1.主页

  • connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况
  • channels:通道,建立连接后,会形成通道,消息的投递获取依赖通道。
  • Exchanges:交换机,用来实现消息的路由
  • Queues:队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列。

端口:

5.2.添加用户

上面的Tags选项,其实是指定用户的角色,可选的有以下几个:

  • 超级管理员(administrator)

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

  • 监控者(monitoring)

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

  • 策略制定者(policymaker)

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

  • 普通管理者(management)

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

  • 其他

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

5.3.创建虚拟主机(Virtual Hosts)

为了让各个用户可以互不干扰的工作,RabbitMQ添加了虚拟主机(Virtual Hosts)的概念。其实就是一个独立的访问路径,不同用户使用不同路径,各自有自己的队列、交换机,互相不会影响。

创建好虚拟主机,我们还要给用户添加访问权限:

点击添加好的虚拟主机:

进入虚拟主机设置界面:

 

 


 

1.默认安装完成之后, 只有一个账号guest/guest  但是不允许远程登录

创建用户登录:

rabbitmqctl add_user admin admin.112233
指定账号密码



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


rabbitmqctl set_user_tags admin administrator

 

用户操作:

新增用户
rabbitmqctl add_user Username Password

删除用户
rabbitmqctl delete_user Username

修改密码
rabbitmqctl change_password Username NewPassword

查看用户列表
rabbitmqctl list_users

 

 

用户角色

按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。

(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  hncscwc  monitoring  policymaker

 

用户权限

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

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

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

查看用户权限
rabbitmqctl  list_permissions  [-p  VHostPath]

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

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

 

posted @ 2019-03-23 15:37  X-Wolf  阅读(248)  评论(0编辑  收藏  举报