rabbitMQ安装【转】
由于RabbitMQ是基于Erlang语言开发,所以在安装RabbitMQ之前,需要先安装Erlang。
Erlang的安装方式大概有两种:
(1) Erlang Solution安装(推荐)
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install erlang
(2) 从EPEL源安装(这种方式安装的Erlang版本可能不是最新的,有时候不能满足RabbitMQ需要的最低版本)
yum install epel-release
yum install erlang
安装RabbitMQ:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
下载完成后安装:
yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm
安装时如果遇到下面的依赖错误:
Error: Package: socat-1.7.2.3-1.el6.x86_64 (epel) Requires: libreadline.so.5()(64bit)
可以尝试先执行:
yum install socat
RabbitMQ的一些基本操作:
# 添加开机启动RabbitMQ服务
systemctl enable rabbitmq-server.service
# 查看服务状态
systemctl status rabbitmq-server.service
# 启动服务
systemctl start rabbitmq-server.service
# 停止服务
systemctl stop rabbitmq-server.service
# 查看当前所有用户
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
更多关于
rabbitmqctl
的使用,可以参考帮助手册。开启web管理接口
如果只从命令行操作RabbitMQ,多少有点不方便。幸好RabbitMQ自带了web管理界面,只需要启动插件便可以使用。
rabbitmq-plugins enable rabbitmq_management
访问: http://localhost:15672
配置RabbitMQ
关于RabbitMQ的配置,可以下载RabbitMQ的配置文件模板到
/etc/rabbitmq/rabbitmq.config
, 然后按照需求更改即可。
关于每个配置项的具体作用,可以参考官方文档。开启用户远程访问
默认情况下,RabbitMQ的默认的
guest
用户只允许本机访问, 如果想让guest
用户能够远程访问的话,只需要将配置文件中的loopback_users
列表置为空即可,如下:{loopback_users, []}
另外关于新添加的用户,直接就可以从远程访问的,如果想让新添加的用户只能本地访问,可以将用户名添加到上面的列表, 如只允许
admin
用户本机访问。{loopback_users, ["admin"]}
restart …
查看日志位置
systemctl status rabbitmq-server.service
这里可以看到log文件的位置,转到文件位置,打开文件:
这里显示的是没有找到配置文件,我们可以自己创建这个文件:
cd /etc/rabbitmq/
vim rabbitmq.config
编辑内容如下:
[{rabbit, [{loopback_users, []}]}].
这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。
保存配置后重启服务:
systemctl stop rabbitmq-server.service
systemctl start rabbitmq-server.service
此时就可以从外部访问了,但此时再看log文件,发现内容还是原来的,还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用:
rm rabbit\@mythsky.log
service rabbitmq-server stop
service rabbitmq-server start
注意:记得要开放5672和15672端口 (iptables版本)
/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
WEB UI:
设置权限
rabbitmqctl add_vhost admin
rabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"
注释:主要是set_permissions的使用,先看下命令的格式:
set_permissions [-p vhost] {user} {conf} {write} {read}
需要注意以下几点的理解:
1.这里的权限,只是针对一般用户的访问权限,注意和角色的区分。举个例子来说,非管理用户(普通用户),角色设置为none,然后在这里配置conf、write、read的权限。
2.conf、write、read采用正则表达式,这里的正则主要是针对exchange和queue。主要2种特殊的表达式:
^$:表示完全不匹配(即没有权限)
.*:表示匹配所有(即所有权限)
常用命令
add_user <UserName> <Password>
delete_user <UserName>
change_password <UserName> <NewPassword>
list_users
add_vhost <VHostPath>
delete_vhost <VHostPath>
list_vhostsset_permissions [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>
clear_permissions [-p <VHostPath>] <UserName>
list_permissions [-p <VHostPath>]
list_user_permissions <UserName>
list_queues [-p <VHostPath>] [<QueueInfoItem> ...]
list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]
list_bindings [-p <VHostPath>]
list_connections [<ConnectionInfoItem> ...]