Centos7 安装 erlang rabbitmq

时间:2023-03-08 17:29:21

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
Centos7 安装 erlang rabbitmq
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
Centos7 安装 erlang rabbitmq

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