前提
本文介绍RabbitMQ安装的环境是CentOS7版本的Linux云服务器。
官网:https://www.rabbitmq.com/
RabbitMQ的安装
由于RabbitMQ是使用Erlang语言开发的,所以我们在安装RabbitMQ之前需要在服务器中安装Erlang语言的环境。在Linux中执行下面命令:
yum install -y epecurl -s
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
在执行完上面语句后,我们就可以安装RabbitMQ了,也是比较简单的执行命令:
yum install rabbitmq-server
最后使用下面这个命令启动RabbitMQ,
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
最后用下面这条命令,检查RabbitMQ的执行状态
systemctl status rabbitmq-server.service
当Active状态为active(running)的时候说明成功了,可以参考下图:
需要注意的是,使用命令“systemctl enable rabbitmq-server.service”就意味着,服务器系统重启的时候会自动启动RabbitMQ。
如果不想这样,就跳过这一句即可,这样你在关闭与服务器的会话的时候,RabbitMQ的服务自己就会被关闭了
RabbitMQ管理界面的启用
在安装RabbitMQ后,我们还需要启动一个可视化的管理服务,以便于我们后续在浏览器中能访问并管理RabbitMQ
只需要执行下面的命令就可以开启了
rabbitmq-plugins enable rabbitmq_managemen
开启后重启一下服务
systemctl restart rabbitmq-server
管理服务界面的预览图将在下面修改端口介绍后进行查看
RabbitMQ端口号意义说明
- 5672:RabbitMQ的通讯端口
- 25672:RabbitMQ的节点间的CLI通讯端口
- 15672:RabbitMQHTTP_API的端口,管理员用户才能访问,用于管理RabbitMQ,需要启动Management插件。
- 1883,8883:MQTT插件启动时的端口。
- 61613、61614:STOMP客户端插件启用的时候的端口。
- 15674、15675:基于webscoket的STOMP端口和MOTT端口
修改RabbitMQ端口
问题:为什么要修改端口?
回答:在云服务器中,当我们需要开发某个端口时,需要到控制台的防火墙(腾讯云)或者安全组(阿里云)中去进行开放,但是开放就意为着,所有人都可以对你这个端口进行访问(前提是他们知道你这个端口开发的情况下),但是这时候就会遇到一个问题,像我们这些知名的端口号例如3306、6379、5672、8080端口等,都是被大部分人所知道的,不法分子只要拿着你的ip:端口的方式就能访问到服务,所以就会有一个不安全的情况出现,比如说,不法分子顺着你的端口摸到你服务器里面去搞破坏,这样你的服务器可能就要面临重载(我身边的朋友都遇到了),所以我们必须修改了端口号再放出去,虽然也有风险,但是起码较为更安全了,所以修改端口非常有必要!!!
如果要修改RabbitMQ的服务端口,那么我们需要到 /etc/rabbitmq目录下找到 rabbitmq.config,如下图所示:
在开始修改前,我们先对这个文件进行备份,防止出现问题后,没办法恢复配置文件了,执行下面命令对该文件进行一个复制备份:
cp rabbitmq.config rabbitmq.config.default
使用vim编辑器打开rebbitmq.config,效果如图所示:
打开后,我们可以发现有许多东西都是注释状态的,所以删掉是没有关系的,需要注意的是:里面的配置文件数据格式是JSON格式的,所以我们在后面修改端口的时候也要格外的注意。
接下来就把里面的内容全部删除掉就好了,直接粘贴上下面的这些配置信息,粘贴完后记得检测一下!!!
[
{
rabbit,
[{
tcp_listeners,[{"0.0.0.0",端口号}]
}]
},
{
rabbitmq_management,
[{
listener,
[
{port,端口号},
{ip,"0.0.0.0"},
{ssl,false}
]
}]
}].
tcp_listeners是RabbitMQ的服务启动端口
listener是RabbitMQ的管理服务界面的启动端口
这样就修改完成了,接下了就是重新启动服务的问题了,执行命令
systemctl restart rabbitmq-server.service
检测是否启动成功:
systemctl status rabbitmq-server.service
出现Running就说明成功了
访问RabbitMQ管理服务页面
通过 IP:管理服务端口号来对管理页面进行访问,成功会出现下面这个登录页面:
默认账号和密码都是:guest
登录出现下面这个页面说明登录成功了
RabbitMQ中五种的角色
我们可以在RabbitMQ里面有五种不同的角色,如下:
none
不能访问management plugin
management
- 列出自己可以通过AMQP登入的虚拟机
- 查看自己的虚拟机节点 virtual hosts的queues,exchanges和bindings- 信息
- 查看和关闭自己的channels和connections
- 查看有关自己的虚拟机节点virtual hosts的统计信息。包括其他用户在这个节点virtual hosts中的活动信息。
Policymaker
- 列出自己可以通过AMQP登入的虚拟机
- 查看自己的虚拟机节点 virtual hosts的queues,exchanges和bindings信息
- 查看和关闭自己的channels和connections
- 查看有关自己的虚拟机节点virtual hosts的统计信息。包括其他用户在这个节点virtual hosts中的活动信息。
Monitoring
- 列出自己可以通过AMQP登入的虚拟机
- 查看自己的虚拟机节点 virtual hosts的queues,exchanges和bindings信息
- 查看和关闭自己的channels和connections
- 查看有关自己的虚拟机节点virtual hosts的统计信息。包括其他用户在这个节点virtual hosts中的活动信息。
Administrator
- 最高权限
- 可以创建和删除virtual hosts
- 可以查看,创建和删除users
- 查看创建permisssions
- 关闭所有用户的connections
添加管理用户角色命令:
rabbitmqctl add_user 账号 密码
rabbitmqctl set_user_tags 账号 administrator
rabbitmqctl change_password Username Newpassword 修改密码
rabbitmqctl delete_user Username 删除用户
rabbitmqctl list_users 查看用户清单
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" 为用户设置administrator角色
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"