zoukankan      html  css  js  c++  java
  • CentOS7下安装RabbitMQ

    一:安装Erlang运行环境,毕竟RabbitMQ是erlang开发的:yum install -y erlang.x86_64;(不过如果用yum安装其实应该是会自动安装依赖项的)

    二:安装RabbitMQ,yum install -y rabbitmq-server.noarch;(安装服务,后面还要有对应客户端去和服务沟通)

    三:安装好后通过whereis rabbitmq查看rabbitmq安装在哪(似乎就是用来搜索用的),我的是/usr/lib/rabbitmq /etc/rabbitmq;否则是配置文件目录;

    通过cd /usr/lib/rabbitmq/bin;然后通过./rabbitmqctl status查看rabbitmq的服务状态,这一步是unable to connect xxx,毕竟我们刚安装还没启动呢;

    四:操作RabbitMq

    1.启动服务:在bin目录下执行./rabbitmq-server -detached(-detached后台启动,类似redis的daemon)(rabbitmq-server是一个shell脚本);

    补充:可以看一下自己安装后的.erlang.cookie文件在哪,如果在~/目录下可以创建硬链接到rabbitmq根目录下(mv没用,cp没用),与我而言就是/usr/lib/rabbitmq目录;

    注意,如果你是以有家目录的用户启动则此文件在家目录下否则在rabbitmq根目录下;.erlang.cookie要使其own为启动用户且赋予600的权限,然后客户端工具的调用start stop status方法也该是这个用户(因为调用时.erlang.cookie值会作为参数一部分)

    2.查看rabbitmq服务状态,注意要用同一个账户,即服务用root那么客户端也用root,命令为:./rabbitmqctl status;然后主要看:epmd reports:的输出;

    3.停止rabbitmq,./rabbitmqctl stop

    4.然后启用插件(方便管理mq):./rabbitmq-plugins enable rabbitmq_management;配置linux 端口 15672 网页管理  5672 AMQP端口;然后访问http://localhost:15672就可以管理了;默认用户guest 密码guest

    n)但是这个guest用户只能本机访问,可以vim /etc/rabbitmq/rabbitmq.config将loopback_users, []}的注释%%删除,注意后面的,也要删除否则rabbitmq无法启动;

    (注意,如果不需要外部访问15672/tcp端口那么是不需要防火墙开启端口的,但是这里因为需要在另一台主机上用guest访问,故需要开启15672端口,如果另一台主机要用到此消息中间件那么也要开启5672端口供外部主机使用producer或consumer功能;)

    ,当开启了loopback_users,[]..和端口后外部主机就可以通过guest用户管理了;


    n)也可以添加一个自己的超级用户来管理:1.rabbitmqctl add_user silentdoer password;

    2.rabbitmqctl set_user_tags hxb administrator,注意可以给一个用户设置多个tag用空格分开;(新的用户仍然需要开启端口,除非只是本机用)
    第一个是创建silentdoer用户和设置密码;第二个是为用户赋予权限;第三个是为用户赋予角色为administrator(guest也是administrator),角色有6f种:初始状态(无任何角色),none,management,policymaker,monitoring,administrator最高;

    3.rabbitmqctl set_permissions -p "/" silentdoer ".*" ".*" ".*";(三个.*分别对应ConfP  WriteP  ReadP,即设置silentdoer在/这个vhost里拥有所有的配置权限,所有的写权限和所有的读权限,主要是对exchange和queue的操作,每个账户管理一个vhost,但是一个vhost可以有多个管理者)(一般而言,创建用户后最好先赋予其tag,之后才是权限)

    none tag的用户一般就是普通的生产者和消费者;而对于初始状态通过./rabbitmqctl list_users查看它的角色是[],即空,可以理解为它当下无法做任何事;

    none用户无法访问management plugin;而角色越高是能包括上一级角色的权限的??(据说是待测,如果是的话多角色似乎就没软用了)

    administrator是可以负责整个MQ的运维,不只是管理某个vhost或某个node(进程),上面的一个用户管理一个vhost不准确,应该说none和management的只能操作-管理一个vhost;

    n)rabbitmqctl delete_user admin用来删除一个用户;

    n)rabbitmqctl change_password admin admin123修改admin账户的密码为admin123;

    n)rabbitmqctl  list_users查看当前用户列表;

    n)查看(指定hostpath)所有用户的权限信息

    rabbitmqctl  list_permissions  [-p  VHostPath](如:-p "/")

    n)查看指定用户的权限信息

    rabbitmqctl  list_user_permissions  User

    n) 清除用户的权限信息

    rabbitmqctl  clear_permissions  [-p VHostPath]  User(暂时理解,是因为一个user只能管理一个vhost故vhost参数可以省略)

    n)rabbitmqctl list_vhosts

    n)rabbitmqctl add_vhost <VHostPath> (尖括号表示必须,中括号表示可选,如[-p VHostPath])

    n)rabbitmqctl delete_vhost <VHostPath>(/这个vhost不能删除)

    n)rabbitmqctl list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]

    n)rabbitmqctl list_queues    [-p <VHostPath>] [<QueueInfoItem> ...]

    n)list_bindings  [-p <VHostPath>] 

    n)list_connections [<ConnectionInfoItem> ...]

    n)list_consumers

    n)list_channels

    n)list_parameters

    n)list_policies

    n)cluster_status


    补充:创建用户后可以不给用户配置任何角色/tag,和不设置任何权限;这里角色可以暂时理解为管理者的角度,即后台用户;而权限则是针对于producer和comsumer的角度,因此配置角色可以不设置vhost,因为它不一定要去生产/消费,而permission则是要配置vhost,毕竟它是作为producer或consumer它需要对具体的vhost进行操作;

    补充:rabbitmqctl和rabbitmq-server均要在root权限下运行;
    补充:安装好后还可以通过service rabbitmq-server start|stop|status来操作rabbitmq服务(其它命令则用rabbitmqctl来执行),它其实是systemctl类型的服务,在/usr/lib/systemd/system里有对应的rabbitmq-server.service文件;

    注意可以改名为rabbitmq.service不然名字太长了,然后记得systemctl enable rabbitmq.service;

  • 相关阅读:
    log4j日志配置
    map和java对象的转换方法
    阿里巴巴的json使用时的一些转换方法
    HttpClient发送Post和Get请求
    IT网站导航
    python学习
    git解决冲突
    协程
    Python实现协程
    异步任务神器 和定时任务Celery
  • 原文地址:https://www.cnblogs.com/silentdoer/p/8728385.html
Copyright © 2011-2022 走看看