zoukankan      html  css  js  c++  java
  • Linux下rabitMq的部署(源码安装)

    简版yum安装:https://www.jianshu.com/p/46c22834aad5

    一、环境安装


    1,安装预环境

    通过yum安装以下组件,运行命令:

    [root@rabbitmqserver erlang]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

     也可yum安装:yum -y install erlang【yum安装的有问题】

    2,下载erlang的源代码文件并解压缩

    clipboard

    运行如下命令解压。

    [root@rabbitmqserver softwares]# tar -xvf otp_src_19.3.tar.gz

    然后,运行如下命令重命名文件夹为erlang。

    [root@rabbitmqserver softwares]# mv otp_src_19.3 ./erlang

    clipboard

    3,配置安装

    首先是./configure,检查编译环境并配置安装路径,运行如下命令:

    [root@rabbitmqserver erlang]# ./configure --prefix=/usr/local/erlang --without-javac

    然后,make,对源代码进行编译,运行如下命令:

    [root@rabbitmqserver erlang]# make

    最后,make install,开始安装,运行如下命令:

    [root@rabbitmqserver erlang]# make install

    4,设置环境变量

    运行以下命令编辑/etc/profile文件。

    [root@rabbitmqserver erlang]# vim /etc/profile

    在末尾追加以下内容。

    clipboard

    保存,然后运行以下命令使环境变量立即生效。

    [root@rabbitmqserver erlang]# source /etc/profile

    5,验证是否安装成功

    运行如下命令,验证erlang是否安装成功。

    [root@rabbitmqserver erlang]# erl

    clipboard

     

    二、安装rabbitmq-server


     

    方法一:

    1、下载tar包源码安装;

    安装在/usr/local目录下

     $ tar zxvf rabbitmq-server-generic-unix-3.6.15.tar.gz   

    $ mv rabbitmq_server-3.6.15 rabbitmq

    配置环境变量,下面的path和erlang配置在了一起。

    $ cd rabbitmq   进入到sbin命令下,执行rabbitmq-server  可以看到下面表示已经开启web监控。

    如果没有启动web监控,执行下面的命令。

    [root@rabbitmqserver rabbitmq]# rabbitmq-plugins enable rabbitmq_management,就可以进行监控了。

    安装完插件后,再启动

    开启web监控之后,我们就可以正式启动rabbitmq了。

    启动rabbitmq有以下两种方法。

    第一种方法是,直接运行rabbitmq-server命令。

    clipboard

    但是这种方式,一旦终端退出后,rabbitmq服务就停止了,所以不推荐这么做。

    启动;

    rabbitmq-server -detached 后台启动

    Rabbitmq-server 直接启动,如果你关闭窗口或者需要在改窗口使用其他命令时应用就会停止

     关闭:rabbitmqctl stop

    加入启动服务:运行service rabbitmq-server xxx命令。

    首先将rabbitmq-server加入到开机自启动服务中,运行以下命令:

    [root@rabbitmqserver bin]# chkconfig rabbitmq-server on

    然后再使用下面的service命令。

    service rabbitmq-server start #启动

    service rabbitmq-server stop #停止

    service rabbitmq-server restart #重启

    service rabbitmq-server status #查看状态

    service rabbitmq-server etc #查看有哪些命令可以使用

    最佳实践是第二种方法。

     

    注意事项

    1,rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm时报以下错误?

    error: Failed dependencies: erlang >= R16B-03 is needed by rabbitmq-server-3.6.6-1.el6.noarch socat is needed by rabbitmq-server-3.6.6-1.el6.noarch

    解决方案:http://blog.csdn.net/yunfeng482/article/details/72853983

    2,运行service rabbitmq-server start一直无法启动,提示'/usr/lib/rabbitmq/bin/rabbitmq-server: line 50: erl: command not found'?

    解决方法:

    是因为环境变量不同,导致无法找到相应命令,按照指引将erlang的erl软连接到/usr/bin目录下,运行以下命令。

    [root@rabbitmqserver bin]# ln -s /usr/erlang/bin/erl /usr/bin/erl

    三、登录查看


    1、新建一个用户名为admin,密码为admin的用户,并授予管理员(administrator)权限

    [root@localhost sbin]# rabbitmqctl add_user  admin  admin
    [root@localhost sbin]# rabbitmqctl set_user_tags admin administrator
    
    

    2、通过浏览器访问地址:http://自己的ip:15672

     
    image.png

    3、设置权限

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

    注释:主要是set_permissions的使用,先看下命令的格式:

    set_permissions [-p vhost] {user} {conf} {write} {read}
    

    需要注意以下几点的理解:
    1.这里的权限,只是针对一般用户的访问权限,注意和角色的区分。举个例子来说,非管理用户(普通用户),角色设置为none,然后在这里配置conf、write、read的权限。
    2.conf、write、read采用正则表达式,这里的正则主要是针对exchange和queue。主要2种特殊的表达式:
    ^$:表示完全不匹配(即没有权限)

    .*:表示匹配所有(即所有权限)



    四、RabbitMQ用户角色及权限控制



    1.RabbitMQ的用户角色分类:
    none、management、policymaker、monitoring、administrator
    2.RabbitMQ各类角色描述:
    none
    不能访问 management plugin

    management
    用户可以通过AMQP做的任何事外加:
    列出自己可以通过AMQP登入的virtual hosts  
    查看自己的virtual hosts中的queues, exchanges 和 bindings
    查看和关闭自己的channels 和 connections
    查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。

    policymaker 
    management可以做的任何事外加:
    查看、创建和删除自己的virtual hosts所属的policies和parameters

    monitoring  
    management可以做的任何事外加:
    列出所有virtual hosts,包括他们不能登录的virtual hosts
    查看其他用户的connections和channels
    查看节点级别的数据如clustering和memory使用情况
    查看真正的关于所有virtual hosts的全局的统计信息

    administrator   
    policymaker和monitoring可以做的任何事外加:
    创建和删除virtual hosts
    查看、创建和删除users
    查看创建和删除permissions
    关闭其他用户的connections

    3.创建用户并设置角色:
    可以创建管理员用户,负责整个MQ的运维,例如:
    $sudo rabbitmqctl add_user  user_admin  passwd_admin  
    赋予其administrator角色:
    $sudo rabbitmqctl set_user_tags user_admin administrator  

    可以创建RabbitMQ监控用户,负责整个MQ的监控,例如:
    $sudo rabbitmqctl add_user  user_monitoring  passwd_monitor  
    赋予其monitoring角色:
    $sudo rabbitmqctl set_user_tags user_monitoring monitoring  

    可以创建某个项目的专用用户,只能访问项目自己的virtual hosts
    $sudo rabbitmqctl  add_user  user_proj  passwd_proj  
    赋予其monitoring角色:
    $sudo rabbitmqctl set_user_tags user_proj management  

    创建和赋角色完成后查看并确认:
    $sudo rabbitmqctl list_users  

    4.RabbitMQ权限控制
    默认virtual host:"/"
    默认用户:guest 
    guest具有"/"上的全部权限,仅能有localhost访问RabbitMQ包括Plugin,建议删除或更改密码。可通过将配置文件中loopback_users置孔来取消其本地访问的限制:
    [{rabbit, [{loopback_users, []}]}]

    用户仅能对其所能访问的virtual hosts中的资源进行操作。这里的资源指的是virtual hosts中的exchanges、queues等,操作包括对资源进行配置、写、读。配置权限可创建、删除、资源并修改资源的行为,写权限可向资源发送消息,读权限从资源获取消息。比如:
    exchange和queue的declare与delete分别需要exchange和queue上的配置权限
    exchange的bind与unbind需要exchange的读写权限
    queue的bind与unbind需要queue写权限exchange的读权限
    发消息(publish)需exchange的写权限
    获取或清除(get、consume、purge)消息需queue的读权限
    对何种资源具有配置、写、读的权限通过正则表达式来匹配,具体命令如下:
    set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
    其中,<conf> <write> <read>的位置分别用正则表达式来匹配特定的资源,如'^(amq.gen.*|amq.default)$'可以匹配server生成的和默认的exchange,'^$'不匹配任何资源

    需要注意的是RabbitMQ会缓存每个connection或channel的权限验证结果、因此权限发生变化后需要重连才能生效。

    为用户赋权:
    $sudo rabbitmqctl  set_permissions -p /vhost1  user_admin '.*' '.*' '.*'  
    该命令使用户user_admin具有/vhost1这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
    查看权限:
    $sudo rabbitmqctl list_user_permissions user_admin  
    Listing permissions for user "user_admin" ...  
    /vhost1<span style="white-space:pre"> </span>.*<span style="white-space:pre"> </span>.*<span style="white-space:pre"> </span>.*  

    $sudo rabbitmqctl list_permissions -p /vhost1  
    Listing permissions in vhost "/vhost1" ...  
    user_admin<span style="white-space:pre">  </span>.*<span style="white-space:pre"> </span>.*<span style="white-space:pre"> </span>.* 

  • 相关阅读:
    微人事项目-mybatis-持久层
    通过外键连接多个表
    springioc
    Redis 消息中间件 ServiceStack.Redis 轻量级
    深度数据对接 链接服务器 数据传输
    sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取
    sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
    sql server 远程备份 bak 删除
    冒泡排序
    多线程 异步 beginInvoke EndInvoke 使用
  • 原文地址:https://www.cnblogs.com/wuzm/p/11423480.html
Copyright © 2011-2022 走看看