Rabbitmq单机搭建
安装RabbitMQ
安装依赖
yum install -y make gcc gcc-c++ m4 openssl openssl-devel
yum install -y ncurses-devel unixODBC unixODBC-devel java java-devel socat
安装Erlang
Erlang RPM包下载地址:https://packagecloud.io/rabbitmq/erlang
下载成功后,到下载的文件资源目录执行以下命令
yum localinstall erlang-22.3.4.10-1.el7.x86_64.rpm
安装成功后,可以以下运行命令来查看你安装的erl版本
erl -version
安装RabbitMQ
RabbitMQ RPM包下载地址:https://github.com/rabbitmq/rabbitmq-server/releases
当你下载完成后,你需要运行下面的命令来将key导入
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
使用 yum 进行本地安装,运行命令
yum localinstall rabbitmq-server-3.8.8-1.el7.noarch.rpm
当安装完成后,你可以使用命令来启动 rabbitmq 服务器:
systemctl start rabbitmq-server
然后我们就可以添加web管理插件了
# 添加web管理插件
rabbitmq-plugins enable rabbitmq_management
安装好web管理插件后记得重启rabbitmq-server
我们通过IP:端口(http://172.16.93.128:15672)的形式,就可以访问RabbitMQ的Web管理界面了
默认情况下,访问RabbitMQ服务的用户名和密码都是"guest",这个账户有限制,默认只能通过本地网络(如localhost)访问,远程网络访问受限,使用默认的用户 guest / guest (此也为管理员用户)登陆,会发现无法登陆,报错:User can only log in via localhost。那是因为默认是限制了guest用户只能在本机登陆,也就是只能登陆localhost:15672。所以在实现生产和消费消息之前,需要另外添加一个用户,并设置相应的访问权限
添加新用户,用户名为"root",密码为"root"
rabbitmqctl add_user root root
为root用户设置所有权限
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
设置用户为管理员角色
rabbitmqctl set_user_tags root administrator
我们通过该用户就可以访问了
RabbitMQ常用命令
服务启动与停止
# 启动
systemctl start rabbitmq-server
# 停止
systemctl stop rabbitmq-server
# 查看状态
systemctl status rabbitmq-server
插件管理
# 插件列表
rabbitmq-plugins list
# 启动插件(XXX为插件名)
rabbitmq-plugins enable XXX
# 停用插件(XXX为插件名)
rabbitmq-plugins disable XXX
用户管理
# 添加用户
rabbitmqctl add_user username password
# 删除用户
rabbitmqctl delete_user username
# 修改密码
rabbitmqctl change_password username newpassword
# 设置用户角色
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: 一个正则匹配哪些资源能被该用户读取