1、安装Erlang依赖
采用官网的rpm包的形式进行安装,不采用yum(由系统进行自动安装 可能因为版本低的问题而出现一系列问题)

erlang依赖 rpm包下载地址https://github.com/rabbitmq/erlang-rpm/releases

刚开始安装rpm,需要参考rabbitmq的服务安装版本 这里采用rabbitmq-server-3.7.7版本,所以通过官网可知需要的erlang版本需要大于19.3,否则在安装rabbitMQ的时候会出现erlang版本过低的情况

安装erlang rpm

#使用rpm命令来安装
rpm -ivh erlang-20.3-1.el7.centos.x86_64.rpm

1.1)检查Erlang是否安装成功

[root@localhost ~]# erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 9.3
[root@localhost ~]#

安装erlang 可能会出现

警告:rabbitmq-server-3.7.7-1.el7.noarch.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 6026dfca: NOKEY
错误:依赖检测失败:
erlang >= 19.3 被 rabbitmq-server-3.7.7-1.el7.noarch 需要
socat 被 rabbitmq-server-3.7.7-1.el7.noarch 需要
所以还需要安装socat

#使用liunx来提供的yum 安装socat
yum -y install socat

2、安装RabbitMQ服务
      安装rabbitMQ

#安装rabbit-server服务
rpm -ivh rabbitmq-server-3.7.7-1.el7.noarch.rpm
rabbitMQ的相关文件所在位置

1、相关命令 :/usr/lib/rabbitmq/bin/

2、相关的日志:/var/log/rabbitmq/

3、相关的配置 : /etc/rabbitmq/

4、 设置的用户权限等元数据信息:/var/lib/rabbitmq/mnesia/

3、设置用户角色权限等信息

$ chkconfig rabbitmq-server on # 添加开机启动RabbitMQ服务
$ /sbin/service rabbitmq-server start # 启动服务
$ /sbin/service rabbitmq-server status # 查看服务状态
$ /sbin/service rabbitmq-server stop # 停止服务

# 查看当前所有用户
$ rabbitmqctl list_users

# 查看默认guest用户的权限
$ rabbitmqctl list_user_permissions guest

# 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
$ rabbitmqctl delete_user guest

# 添加新用户
$ rabbitmqctl add_user username password

# 设置用户tag(角色新)
$ rabbitmqctl set_user_tags username administrator

# 赋予用户默认vhost的全部操作权限
$ rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

# 查看用户的权限
$ rabbitmqctl list_user_permissions username

#开放端口
vi /etc/sysconfig/iptables

#端口配置生效
service iptables save

service iptables restart

#关闭防火墙
service iptables stop
 开启web ui (一定要添加新的用户,因为默认的用户不能支持远程访问)

#开启web访问页面
$ rabbitmq-plugins enable rabbitmq_management

#关闭插件
rabbitmq-plugins disable rabbitmq_management
4、更改端口号
   客户端远程连接的默认端口为5672 webUI的端口号为15672 为了安全现在更改端口号。

修改/etc/rabbitmq/rabbitmq.config 如果没有则可以通过官方网站获取到https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.config.example (官方推荐的配置文件设置 )

将其放到自己的/etc/rabbitmq/ 并更改为rabbitmq.config, 按照自己的业务需求设置相关配置。

%% {tcp_listeners, [{"127.0.0.1", 5672},
%% {"::1", 5672}]},

[
{rabbit,
[
%%更改客户端的监听端口
{tcp_listeners,[xxxx]}
]
},
{ rabbitmq_management,
[
%%更改web UI 界面的访问端口
{listener,[{port,xxxx}]}
]
}
].

重启服务,生效

5、rabbitMQ的基础知识介绍
1、RabbitMQ的相关名词
   生产者  路由(交换器) 队列( 从路由到队列的过程称为绑定)  消费者 
   消息丢失 消息确认 消息重发
   
   交换器:根据路由键将消息从交换器到队列 有4种类型
      1、direct 通过路由键 精确匹配 例如 路由键为rabbitMQ.hello,通过该路由只能匹配到对应的名为rabbitMQ.hello
      2、fanout  广播形式 所有与该fannout绑定的队列都会收到相关消息
      3、topic   topic在direct的基础上的扩展(个人理解),既可以支持模糊匹配,也可以支持精确匹配
      4、headers(匹配AMOP的header 不常用)      
2、RabbitMQ的好处
    异步 解耦 削峰 提交系统的可用性
3、RabbitMq的使用场景
    1、Mq是跨越进程的通信方式,可以使用在两个应用程序进行交互的上面
    2、解决耗时的问题,例如用户注册的时候,需要复杂的后续操作,即在将用户的信息保存到数据库后,
       需要给用户发送短信提醒,发送邮箱提醒等等(后面的操作可以放到消息中),加快用户注册的响应时间
    3、将系统进行解耦,便于系统分布式部署
4、消息队列可靠性、解耦、实时消息通信    
    1、消息队列如何保证可靠性:通过消息确认机制,
         在每一次消息发送环节都会进行消息确认,生产者向消息队列传递消息成功后消息队列会向生产者发送消息确认
        同理消费者获取到消息,也会向消息队列发送确认
       2、多个应用程序不会直接相互连接,而是与消息队列建立联系
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

4.用户管理

4.1)查看用户列表

[root@localhost ~]# rabbitmqctl list_users
Listing users ...
guest [administrator]
[root@localhost ~]#

4.2)添加用户

rabbitmqctl add_user 用户名 密码

[root@localhost ~]# rabbitmqctl add_user admin 123456
Adding user "admin" ...
[root@localhost ~]#

4.3)删除用户

rabbitmqctl delete_user 用户名

[root@localhost ~]# rabbitmqctl delete_user admin
Deleting user "admin" ...
[root@localhost ~]#

4.4)修改用户密码

rabbitmqctl change_password 用户名 新密码

[root@localhost ~]# rabbitmqctl change_password admin 666666
Changing password for user "admin" ...
[root@localhost ~]#

5.角色管理

5.1)角色说明

none(普通用户)
没有控制台操作权限。 management(普通管理员)
可以查看当前用户的queues, exchanges和bindings。
可以查看和关闭当前用户的channels和connections。
可以查看当前用户的virtual hosts的统计信息。 policymaker(策略管理员)
具有management权限及查看、创建和删除当前用户的policies和parameters。 monitoring(监控管理员)
具有management权限
查看所有virtual hosts及全局的统计信息
查看所有用户的connections和channels
查看所有节点数据,如clustering和memory使用情况 administrator(超级管理员)
具有policymaker、monitoring权限
查看、创建、删除所有virtual hosts
查看、创建、删除所有users
查看、创建、删除所有permissions
可以关闭所有用户的connections
none(普通用户)
没有控制台操作权限。 management(普通管理员)
可以查看当前用户的queues, exchanges和bindings。
可以查看和关闭当前用户的channels和connections。
可以查看当前用户的virtual hosts的统计信息。 policymaker(策略管理员)
具有management权限及查看、创建和删除当前用户的policies和parameters。 monitoring(监控管理员)
具有management权限
查看所有virtual hosts及全局的统计信息
查看所有用户的connections和channels
查看所有节点数据,如clustering和memory使用情况 administrator(超级管理员)
具有policymaker、monitoring权限
查看、创建、删除所有virtual hosts
查看、创建、删除所有users
查看、创建、删除所有permissions
可以关闭所有用户的connections

5.2)查看用户角色

rabbitmqctl list_users 用户名

[root@localhost ~]# rabbitmqctl list_users
Listing users ...
admin [administrator]
guest [administrator]
[root@localhost ~]#

5.3)设置用户角色

rabbitmqctl set_user_tags admin 角色名称(支持同时设置多个角色)

[root@localhost ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
[root@localhost ~]#

6.权限管理

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

6.1)查看用户权限

rabbitmqctl list_user_permissions 用户名

[root@localhost ~]# rabbitmqctl list_user_permissions guest
Listing permissions for user "guest" ...
/ .* .* .*
[root@localhost ~]#

6.2)设置用户权限

rabbitmqctl set_permissions -p 虚拟主机名称 用户名 <conf> <write> <read>

[root@localhost ~]# rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
Setting permissions for user "admin" in vhost "/" ...
[root@localhost ~]#

7.虚拟主机管理

为什么需要虚拟主机(vhost)?因为RabbitMQ只能在虚拟主机的粒度上进行权限控制。每个vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器和绑定等。

7.1)查看虚拟主机

[root@localhost ~]# rabbitmqctl list_vhosts
Listing vhosts ...
/
[root@localhost ~]#

7.2)添加虚拟主机

rabbitmqctl add_vhost 虚拟主机名称

[root@localhost ~]# rabbitmqctl add_vhost coreSystem
Adding vhost "coreSystem" ...
[root@localhost ~]#

7.3)删除虚拟主机

rabbitmqctl delete_vhost 虚拟主机名称

[root@localhost ~]# rabbitmqctl delete_vhost coreSystem
Deleting vhost "coreSystem" ...
[root@localhost ~]#

8.web后台管理

8.1)启用后台管理插件

[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch started 3 plugins.
[root@localhost ~]#

8.2)登录

浏览器输入:http://服务器Ip:15672/

Centos7 安装 erlang rabbitmq的更多相关文章

  1. centos7 安装erlang rabbitMQ

    环境: 虚拟机 centos7 minimal 一.安装Erlang 1.安装依赖 yum install build-essential openssl openssl-devel unixODBC ...

  2. Centos7 安装配置 Rabbitmq Cluster

    Rabbitmq介绍 RabbitMQ是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能.健壮以及可伸缩性出名的 ...

  3. Centos7安装部署Rabbitmq教程

    依赖关系: 版本依赖一定要提前看清楚. RabbitMQ相关版本依赖关系查看 https://www.rabbitmq.com/which-erlang.html 可以看到要求版本Erlang21.3 ...

  4. Centos 6.4 安装erlang&rabbitmq

    1. 安装 erlang 1.1 准备工作,先安装依赖库 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-d ...

  5. 编译安装Erlang+RabbitMQ

    楔子 由于国内信创越来越火,客户现场也开始使用国产操作系统替换CentOS之类的开源操作系统,最近做实施的同事找到我,说现场是ARM架构的操作系统编译安装RabbitMQ一直提示无法启动也没有日志文件 ...

  6. Centos7安装erlang以及RabbitMQ Centos启动rabbitmq

    本文使用版本:  rabbitmq-server-3.8.3-1.el7.noarch.rpm   Centos7  erlang  22.3.1 在线安装 yum install esl-erlan ...

  7. linux(CentOS7)中安装erlang(20.3)以及rabbitmq(3.7.9)的步骤以及一些注意事项

    首先下载安装包,之后先安装erlang,安装erlang需要很多依赖,所以一步步来: 首先 wxWidgets会报错,这个不是必须的,可以不安装,不影响 然后需要安装一些必须的依赖: yum inst ...

  8. linux centos7 erlang rabbitmq安装

    最终的安装目录为/opt/erlang 和 /opt/rabbitmq wget http://erlang.org/download/otp_src_21.0.tar.gztar zxvf otp_ ...

  9. Erlang&RabbitMQ服务安装配置

    RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良 ...

随机推荐

  1. java中六个时间类的使用和区别

    java.util.Date java.sql.Date   java.sql.Time   java.sql.Timestamp java.text.SimpleDateFormat java.ut ...

  2. angularjs探秘<二>表达式、指令、数据绑定

    距离第一篇笔记好久了,抽空把angular的笔记梳理梳理. ng-init:初始化指令,这里可以声明变量,且变量不用指定数据类型(类似js中的var用法). 数值变量与字符串相加默认做字符串拼接运算. ...

  3. General error: 24374 OCIStmtFetch: ORA-24374: define not done before fetch or execute and fetch

    问题 $sql='insert into "test"("id") values(4)'; $res=$this->conn->query($sql ...

  4. uva-10132-排序

    题意: 有很多文件,碎成了俩片,问,原来的文件是什么,如果有多个答案,任意一个答案就行,输入2N个字符串,拼接成N个文件. 直接排序,正确的答案一定是某个长度最短的和某个最长的连在一起. #inclu ...

  5. Android悬浮窗及其拖动事件

    主页面布局很简单,只有一个RelativelyLayout <?xml version="1.0" encoding="utf-8"?> <R ...

  6. SecureCRT方向键不可用

    SecureCRT方向键不可用,没有反应 选项--会话选项--终端--仿真

  7. Spring.net介绍及MVC中应用

    Spring.net两大核心内容: IOC(控制反转) 传统的面相对象思维模式是对象A依赖对象B,对象B的实例化和调用都在对象A中发生,一旦对象B中发生变化,对象A也要随之变化,这样使得程序间行程了紧 ...

  8. oracle登陆认证方式

    转自:http://blog.itpub.net/14359/viewspace-683064/ 案例: 1,发现此时操作系统认证不成功: C:\Users\Administrator.WIN-201 ...

  9. 一次ssh远程不能登录的排查

    原创文件,欢迎阅读,禁止转载. 今天发现一台主机不能远程了,ssh连接不上了. 排查过程是这样的:1. ping没问题. 2. 通过telnet看端口是否开启.[user@localhost ~]$ ...

  10. cordova-config.xml配置应用图标

    1. <icon src="res/icon/ios/browser.png"/> 2.规格: iphone平台一般要求3种规格的图片:1x.2x.3x,也是就Icon ...