centos7 rpm 离线安装 rabbitmq

参考文章:

rabbitmq官网

在linux下安装配置rabbitMQ详细教程

linux安装RabbitMQ

1.首先安装erlang基础包

这里可以看到不同版本rabbitmq对erlang版本的要求:

http://www.rabbitmq.com/which-erlang.html

这里可以下载支持rabbitmq的erlang rpm安装包

https://github.com/rabbitmq/erlang-rpm/releases

安装erlang基础包

[root@VMTest soft]# rpm -ivh erlang-21.2.2-1.el7.centos.x86_64.rpm

2.离线下载rpm安装包

下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/

这里下载:

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm

安装

[root@VMTest soft]# rpm -ivh rabbitmq-server-3.7.9-1.el7.noarch.rpm

安装时如果遇到下面的依赖错误

error: Failed dependencies:
socat is needed by rabbitmq-server-3.7.9-1.el7.noarch

可以尝试先执行

[root@VMTest soft]# yum install socat

安装rabbitmq

[root@VMTest soft]# rpm -ivh rabbitmq-server-3.7.9-1.el7.noarch.rpm

3.rabbitmq服务的启停

[root@VMTest soft]# service rabbitmq-server status 
[root@VMTest soft]# service rabbitmq-server start
[root@VMTest soft]# service rabbitmq-server stop
[root@VMTest soft]# service rabbitmq-server restart

#ps centos7
[root@VMTest soft]# systemctl status rabbitmq-server
[root@VMTest soft]# systemctl start  rabbitmq-server
[root@VMTest soft]# systemctl stop   rabbitmq-server
[root@VMTest soft]# systemctl restart rabbitmq-server

# 添加开机启动RabbitMQ服务
[root@VMTest ~]# chkconfig rabbitmq-server on  

运行命令service rabbitmq-server status可以看到包含rabbitmq的log存储位置的信息输出:

Jan 04 11:05:26 VMTest rabbitmq-server[32790]: ##########  Logs: /var/log/rabbitmq/[email protected]

4.修改rabbitmq配置文件rabbitmq.config

简单的rabbitmq配置可无需配置文件,只有需要定制复杂应用时,才需要用到配置文件。

从默认docs目录复制配置文件样例:

[root@VMTest ~]# cp /usr/share/doc/rabbitmq-server-3.5.3/rabbitmq.config.example /etc/rabbitmq.config

常用配置如下:

tcp_listerners    #设置rabbimq的监听端口,默认为[5672]。
disk_free_limit   #磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative, 1.0},即与内存相关联1:1,也可定制为多少byte.
vm_memory_high_watermark    #设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。
hipe_compile     #将部分rabbimq代码用High Performance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlang vm segfaults,应关掉。
force_fine_statistics    #该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。
frame_max     #包大小,若包小则低延迟,若包则高吞吐,默认是131072=128K。
heartbeat     #客户端与服务端心跳间隔,设置为0则关闭心跳,默认是600秒。

其它可参考:http://www.rabbitmq.com/configure.html#configuration-file

更新配置后,需要重启服务!

默认情况下,RabbitMQ的默认的guest用户只允许本机访问, 如果想让guest用户能够远程访问的话,只需要将配置文件中的loopback_users列表置为空即可,如下:

{loopback_users, []}

另外关于新添加的用户,直接就可以从远程访问。

如果想让新添加的用户只能本地访问,可以将用户名添加到上面的列表, 例如,只允许admin用户本机访问:

{loopback_users, ["admin"]}

---------------------------------------------------------

使用到的配置:

在指定目录下,创建rabbitmq配置文件

[root@VMTest ~]# cd /etc/rabbitmq/
[root@VMTest ~]# vi rabbitmq.config

编辑添加以下内容:

[{rabbit, [{loopback_users, []}]}].
# 这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,
# 这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

编辑完成,重启服务即可生效。

5.开启web管理接口

RabbitMQ自带了web管理界面,只需要启动插件便可以使用:

[root@VMTest ~]# rabbitmq-plugins enable rabbitmq_management

然后通过浏览器访问

http://localhost:15672   

输入用户名和密码访问web管理界面了。(默认用户名: guest, 密码:  guest)

6.rabbitmq常用命令行操作

# 查看当前所有用户
[root@VMTest ~]# rabbitmqctl list_users
 
# 查看默认guest用户的权限
[root@VMTest ~]# rabbitmqctl list_user_permissions guest
 
# 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
[root@VMTest ~]# rabbitmqctl delete_user guest
 
# 添加新用户
[root@VMTest ~]# rabbitmqctl add_user username password
[root@VMTest ~]# rabbitmqctl add_user guest 123abc
 
# 修改密码
[root@VMTest ~]# rabbitmqctl change_password Username 'Newpassword'
[root@VMTest ~]# rabbitmqctl change_password guest '123abc'

# 设置用户tag
[root@VMTest ~]# rabbitmqctl set_user_tags username administrator
#例如:
[root@VMTest ~]# rabbitmqctl set_user_tags guest administrator
 
# 赋予用户默认vhost的全部操作权限
[root@VMTest ~]# rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
#例如:
[root@VMTest ~]# rabbitmqctl set_permissions -p / guest".*" ".*" ".*"
 
# 查看用户的权限
[root@VMTest ~]# rabbitmqctl list_user_permissions username
#例如:
[root@VMTest ~]# rabbitmqctl list_user_permissions guest

7.rabbitmq用户角色及权限控制

1.RabbitMQ的用户角色分类:
  none、management、policymaker、monitoring、administrator

2.RabbitMQ各类角色描述:
  a. none
  不能访问 management plugin

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

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

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

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

8.创建用户并设置角色

#创建管理员用户,负责整个MQ的运维:
[root@VMTest ~]# rabbitmqctl add_user user_admin passwd_admin  
#赋予其administrator角色:
[root@VMTest ~]# rabbitmqctl set_user_tags user_admin administrator  

#创建RabbitMQ监控用户,负责整个MQ的监控:
[root@VMTest ~]# rabbitmqctl add_user user_monitoring passwd_monitor  
#赋予其monitoring角色:
[root@VMTest ~]# rabbitmqctl set_user_tags user_monitoring monitoring  

#创建某个项目的专用用户,只能访问项目自己的 virtual hosts
[root@VMTest ~]# rabbitmqctl add_user user_proj passwd_proj  
#赋予其monitoring角色:
[root@VMTest ~]# rabbitmqctl set_user_tags user_proj management  

#创建和赋角色完成后查看并确认:
[root@VMTest ~]# rabbitmqctl list_users 

9.rabbitmq权限控制

 权限说明1:

默认virtual host:"/"
默认用户:guest 
guest具有"/"上的全部权限,仅能有localhost访问RabbitMQ包括Plugin,建议删除或更改密码。

可通过将配置文件中loopback_users置空来取消其本地访问的限制:
[{rabbit, [{loopback_users, []}]}]

 权限说明2:

#用户仅能对其所能访问的virtual hosts中的资源进行操作。
#这里的资源指的是virtual hosts中的exchanges、queues等, 操作包括对资源进行配置、写、读。

#配置权限可创建、删除、资源并修改资源的行为, 写权限可向资源发送消息, 读权限从资源获取消息。
#比如:
#1. exchange和queue的declare与delete分别需要exchange和queue上的配置权限
#2. exchange的bind与unbind需要exchange的读写权限
#3. queue的bind与unbind需要queue写权限exchange的读权限
#4. 发消息(publish)需exchange的写权限
#5. 获取或清除(get、consume、purge)消息需queue的读权限

#6. 对何种资源具有配置、写、读的权限通过正则表达式来匹配, 具体命令如下:
  [root@VMTest ~]# set_permissions [-p ]    
  #其中,   的位置分别用正则表达式来匹配特定的资源, 
  #如'^(amq\.gen.*|amq\.default)$'可以匹配server生成的和默认的exchange, '^$'不匹配任何资源

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

 权限的赋权和查看:

#为用户赋权:
[root@VMTest ~]# rabbitmqctl  set_permissions -p /vhost1  user_admin '.*' '.*' '.*'  
#该命令使用户user_admin具有/vhost1这个virtual host中所有资源的配置、写、读权限以便管理其中的资源

#查看权限:
[root@VMTest ~]# rabbitmqctl list_user_permissions user_admin  
Listing permissions for user "user_admin" ...  
/vhost1 .* 
.* .*  

[root@VMTest ~]# rabbitmqctl list_permissions -p /vhost1  
Listing permissions in vhost "/vhost1" ...  
user_admin  .* 
.* .* 

 

你可能感兴趣的:(消息队列,rabbitMq)