rabbit安装

一、RabbitMQ简单介绍

RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

在目前分布式的大环境下,成为非常常用的消息队列,以下详细说明怎么在centos7 上安装部署rabbitmq,并列举简单的维护,方便运维同学能更好的维护rabbitmq的正常运行。由于一般生产环境,不管是erlang还是 rabbitmq都不能随便进行版本升级,每次升级都是要谨慎的,所以这里推荐都使用源码安装,这样就固定了版本,不会出现通过yum安装的话,不小心升级了版本导致服务故障等的问题。当然yum安装会更简单,这里就不做介绍,有兴趣的参考官方文档即可。

 

二、Rabbit安装

1、安装准备

版本对照

安装之前,需要去官网查看一下rabbitmq版本对erlang版本的一个支持情况,官网地址:http://www.rabbitmq.com/which-erlang.html

 

 

 

 

这里,我们安装的erlang是最新的22.2版本,所以,rabbitmq也要安装最新的3.8.2。

 

Rabbit安装包下载

在官网上,直接下载该版本的安装包,为了方便安装,最好直接使用编译好的二进制文件包,即开即用,不用进行复杂的yum配置等。具体可以参考官方文档:http://www.rabbitmq.com/install-generic-unix.html

 

 

 

erlang安装包下载

rabbitmq是erlang语言编写的,安装rabbitmq之前,需要先安装erlang,这里用erlang的源码进行安装,erlang安装包官网下载地址:http://erlang.org/download/

 

 

 

把这两个安装包都保存到linux的系统中,准备安装。

 

2、erlang安装

#解压到:/usr/local/server
tar -zxvf otp_src_22.2.tar.gz -C /usr/local/server
​
#这里要新建一个erlang文件夹,因为erlang编译安装默认是装在/usr/local下的bin和lib中,这里我们将他统一装到/usr/local/server/erlang中,方便查找和使用。
mkdir /usr/local/server/erlang
​
# 在编译之前,必须安装以下依赖包
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
​
#进入解压的otp_src_22.2中
cd /usr/local/server/otp_src_22.2/
​
#配置erlang的安装路径
./configure --prefix=/usr/local/server/erlang
​
#直接执行make && make install 进行编译安装
make && make install

 

 

安装后,在 /usr/local/server/erlang 中就会出现如下 :

 

 

 

# 配置环境变量,添加下列配置
vi /etc/profile
​
# ERLANG_HOME=/usr/local/server/erlang
# export PATH=$PATH:$ERLANG_HOME/bin
# export ERLANG_HOME
​
#刷新环境变量
source /etc/profile

 

 

测试是否安装成功:

#查看是否安装完成,输入如下:
erl

 

 

 

 

在里面输入halt().命令退出来(那个点号别忘记)

 

3、RabbitMQ安装

(1)解压安装

#解压安装包到 /usr/local/server/
tar -xvf rabbitmq-server-generic-unix-3.8.2.tar.xz -C /usr/local/server/
​
#修改环境变量
vi /etc/profile
​
#添加配置
export PATH=$PATH:/usr/local/server/rabbitmq_server-3.8.2/sbin
​
#刷新环境变量
source /etc/profile

 

 

(2)rabbit.config添加

默认rabbitmq是没有配置文件的,需要去官方github上,复制一个配置文件模版过来。添加rabbit.config 文件,官网样例地址,并复制rabbitmq.conf.example官方提供的样例文件。

 

 

 

 

这里我把复制的内容保存到Rabbit的安装目录/etc/rabbitmq下,如:/usr/local/server/rabbitmq_server-3.8.2/etc/rabbitmq

 

 

 

 

(3)服务启动准备

#添加web管理插件
rabbitmq-plugins enable rabbitmq_management
​
#启动rabbit服务
rabbitmq-server -detached
​
#防火墙端口(5672和15672端口)
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload   #重启防火墙

 

 

(4)外机访问配置

上面,启用了rabbitmq的管理插件,会有一个web管理界面,默认监听端口15672,则可以访问web界面: http://192.168.126.99:15672/

 

 

 

使用默认的用户 guest / guest (此也为管理员用户)登陆,会发现无法登陆,报错:User can only log in via localhost。那是因为默认是限制了guest用户只能在本机登陆,也就是只能登陆localhost:15672。可以通过修改配置文件rabbitmq.conf,取消这个限制: loopback_users这个项就是控制访问的,如果只是取消guest用户的话,只需要loopback_users.guest = false ,服务重启后就可以登入。

 

 

 

注意:

{loopback_users, [<<"guest">>]}

这个是erlang格式的原配置,后面是一个列表,可以自定义添加多个用户。是用来定义需要被限制登录的用户。默认是只有guest这一个用户。我们这里只需要设置loopback_users.guest = false 就可以解除guest的限制了。

 

 

到此,RabbitMq就安装好了

 

三、常用命令

#服务启动停止:
​
rabbitmq-server -detached   #启动
​
service rabbitmq-server restar  #重启
​
rabbitmqctl stop    #停止
​
rabbitmqctl status  #查看状态
​
​
#插件管理:
​
rabbitmq-plugins list   #插件列表 
​
rabbitmq-plugins enable {XXX}   #启动插件(XXX为插件名)
​
rabbitmq-plugins disable {XXX}  #停用插件
​
​
#用户管理:
​
rabbitmqctl add_user {username} {password}  #添加用户
​
rabbitmqctl delete_user {username}  #删除用户 
​
rabbitmqctl change_password {username} {newpassword}    #修改密码
​
#设置用户角色,user有5种 tags :
#   management :访问 management plugin;
#   policymaker :访问 management plugin 和管理自己 vhosts 的策略和参数;
#   monitoring :访问 management plugin 和查看所有配置和通道以及节点信息;
#   administrator :一切权限;
#   None :无配置
rabbitmqctl set_user_tags {username} {tag}  
​
rabbitmqctl list_users  #列出用户
​
​
#权限管理
​
rabbitmqctl list_permissions    #列出所有用户权限
​
rabbitmqctl list_user_permissions {username}    #查看制定用户权限
​
rabbitmqctl clear_permissions [-p vhostpath] {username} #清除用户权限
​
rabbitmqctl set_permissions [-p vhostpath] {username} conf write read   #设置用户权限
#   conf: 一个正则匹配哪些资源能被该用户访问 
#   write:一个正则匹配哪些资源能被该用户写入 
#   read:一个正则匹配哪些资源能被该用户读取

 

 

 

posted @ 2020-03-26 21:31  hzzz1024  阅读(481)  评论(0编辑  收藏  举报