RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
二、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:一个正则匹配哪些资源能被该用户读取