如何在本地和线上安装和配置RabbitMQ
文章目录
- 一. 本地
- 1.1 安装
- 1.2 访问
- 1.3 配置
- 1.4 运行
- 二. 线上
- 2.1 服务器安装 RabbitMQ
- 2.1.1 安装 DNF
- 2.1.2 安装 RabbitMQ
- 2.1.3 登录 web 管理界面
- 2.1.4 创建用户
- 2.1.5 禁用默认用户远程访问
- 2.1.6 配置
- 2.1.7 运行启动
- 2.2 宝塔面板安装 RabbitMQ
- 2.2.1 安装 RabbitMQ
- 2.2.2 登录 web 管理界面
- 2.2.3 创建用户
- 2.2.4 禁用默认用户远程访问
- 2.2.5 配置
- 2.2.6 运行启动
- 三. 初始化 RabbitMQ
- 3.1 本地
- 3.2 线上
- 四. 启动项目
- 五. 异常
一. 本地
1.1 安装
安装 Erlang + RabbitMQ,先安装 Erlang
。
- Erlang 。https://www.erlang.org
- 依赖安装完毕,就可以安装 RabbitMQ 了。(安装 RabbitMQ 直接双击 exe 程序即可安装)https://www.rabbitmq.com/docs/install-windows
- 去查看系统服务,按[win + R],输入命令
services.msc
。找到 RabbitMQ 服务,右键Start
,状态为正在运行,搞定。 - 安装rabbitmq-plugins(插件管理)。
windows 系统所有的脚本全是 bat 文件,这个命令不能直接运行;所以要给这条命令加上 .bat,然后复制这条命令。
rabbitmq-plugins.bat enable rabbitmq_management
找到安装 RabbitMQ 路径的位置,进入sbin目录
,这里面都是 RabbitMQ 的执行脚本。
- rabbitmq-server.bat:操作 RabbitMQ 服务器相关的命令。
- rabbitmq-plugins.bat:用来安装 RabbitMQ 的插件。
在目录栏上输出cmd
,打开命令提示符;以管理员身份运行。
将命令粘贴到此处,回车,显示已经启动了,并配置了一些插件。
这里显示要重新启动后才生效,输入以下命令。
# 关闭服务
net stop rabbitmqnet stop rabbitmq
# 开启服务
net start rabbitmq
1.2 访问
访问 http://localhost:15672,打开本地 web 管理页面;默认用户名密码都是 guest(文档有说明),点击Login
。
文档还有说明端口访问的端口号,15672 是监控面板的 UI;
ps.里面的 5672、15672 很重要,我们的应用程序之间就是通过 5672 端口来和 RabbitMQ 做链接的,就像 redis 的6379,es 的 9200是一样的。
登录 RabbitMQ 的管理页面。
就能看见 RabbitMQ 的管理页面。
1.3 配置
rabbitmq:
host: localhost
password: guest
username: guest
port: 5672
virtual-host: /
listener:
direct:
acknowledge-mode: manual
username和 password是guest是默认的。
virtual-host: /
1.4 运行
二. 线上
下面几个常用端口是需要放行的
- 3306 MySQL
- 6379 Redis
- 15672 RabbitMQ web 面板
- 5672 RabbitMQ
- 22 端口 SSH
- 443 HTTPS
- 80 HTTP
2.1 服务器安装 RabbitMQ
2.1.1 安装 DNF
yum install epel-release
语句执行后,输入y即可。
yum install dnf
语句执行后,输入y即可。
安装成功
2.1.2 安装 RabbitMQ
- 指定仓库
sudo dnf install -y https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm
- 安装
rabbitmq
默认会安装erlang
sudo dnf install -y rabbitmq-server-3.3.5-34.el7
- 开启 web 管理页面
sudo rabbitmq-plugins enable rabbitmq_management
- 启动 RabbitMQ
sudo systemctl start rabbitmq-server
- 查看运行状态
systemctl status rabbitmq-server
- 设置开机自启动
sudo systemctl enable rabbitmq-server
2.1.3 登录 web 管理界面
访问http://服务器IP:15672;打开服务器web 管理页面;默认账号、密码都是 guest
;要是报错就自己再仔细看看是不是输入错误了。
2.1.4 创建用户
**注意:**如果你打算在自己的服务器上部署 RabbitMQ,你必须知道在默认设置下,使用 guest 账号是无法访问的。为何会这样呢?原因在于系统安全性的需求。如果你想从远程服务器访问管理面板,你需要创建一个新的管理员账号,不能使用默认的 guest 账号,否则会被系统拦截,导致无法访问或登录。
设置。云服务器中输入下面的命令。云服务器或者tabby中输入下面命令即可。
添加新用户
rabbitmqctl add_user 'username' '2a55f70a841f18b97c3a7db939b7adc9e34a0f1b'
删除新用户
rabbitmqctl delete_user 'username'
新建虚拟主机
rabbitmqctl add_vhost my_vhost
新增加的用户赋予权限。
# First ".*" for configure permission on every entity
# Second ".*" for write permission on every entity
# Third ".*" for read permission on every entity
rabbitmqctl set_permissions -p "custom-vhost" "username" ".*" ".*" ".*"
2.1.5 禁用默认用户远程访问
点击右侧的 User guest,会发现该用户拥有管理员权限,但这仅限于本地访问。如果你直接上线并使用默认的管理员权限,你可以想象可能出现的问题。比如,攻击者可能会扫描你服务器的端口,并不断尝试用 guest 账号登录。一旦找到一个开放的端口并用 guest 登录,攻击者就可以入侵你的服务器,然后在消息队列中不断添加消息,填满你的服务器硬盘。因此,为了安全,系统默认关闭了 guest 账号的远程访问权限,这也是官方出于安全考虑的措施。
关闭允许 guest
用户远程访问,为了安全。
2.1.6 配置
# rabbitmq 信息
rabbitmq:
host: *******
password: ***
username: *
port: 5672
listener:
direct:
acknowledge-mode: manual
等到部署到服务器上的时候
• host 服务器 IP 或者 域名
• port 端口默认 5672
• password 密码
• username 账号
2.1.7 运行启动
2.2 宝塔面板安装 RabbitMQ
下面几个端口是需要放行的
- 3306 MySQL
- 6379 Redis
- 15672 RabbitMQ web 面板
- 5672 RabbitMQ
- 22 端口 SSH
- 443 HTTPS
- 80 HTTP
2.2.1 安装 RabbitMQ
- 安装。宝塔面板安装rabbitmq。
- 宝塔面板、服务器同时开放5672、15672的端口。
面板的管理员权限中更改管理员用户名和密码
2.2.2 登录 web 管理界面
- 访问http://服务器IP:15672;打开服务器web 管理页面。
- 账号、密码是 上面的管理员用户名和密码;要是报错就自己再仔细看看是不是输入错误了。
- 切忌不要使用新创建用户的用户名和密码;无法登录。
2.2.3 创建用户
**注意:**如果你打算在自己的服务器上部署 RabbitMQ,你必须知道在默认设置下,使用 guest 账号是无法访问的。为何会这样呢?原因在于系统安全性的需求。如果你想从远程服务器访问管理面板,你需要创建一个新的管理员账号,不能使用默认的 guest 账号,否则会被系统拦截,导致无法访问或登录。
- 创建用户
- 允许远程连接
执行好之后添加好的用户 Can access virtual hosts
那一栏就不会是黄颜色的了。
2.2.4 禁用默认用户远程访问
点击右侧的 User guest,会发现该用户拥有管理员权限,但这仅限于本地访问。如果你直接上线并使用默认的管理员权限,你可以想象可能出现的问题。比如,攻击者可能会扫描你服务器的端口,并不断尝试用 guest 账号登录。一旦找到一个开放的端口并用 guest 登录,攻击者就可以入侵你的服务器,然后在消息队列中不断添加消息,填满你的服务器硬盘。因此,为了安全,系统默认关闭了 guest 账号的远程访问权限,这也是官方出于安全考虑的措施。
关闭允许 guest
用户远程访问,为了安全。
2.2.5 配置
# rabbitmq 信息
rabbitmq:
host: *******
password: ***
username: *
port: 5672
listener:
direct:
acknowledge-mode: manual
等到部署到服务器上的时候
• host 服务器 IP 或者 域名
• port 端口默认 5672
• password 密码
• username 账号
2.2.6 运行启动
三. 初始化 RabbitMQ
3.1 本地
执行完需要 初始化的 Main 方法
执行完这两个 初始化的 Main 方法之后,打开本地 web 管理页面;发现队列中有多出来的初始化队列即可。
3.2 线上
配置Host、Usernamen、Password、Port;Port如果是默认的5672可以不配置。
其余初始化和本地一样。
四. 启动项目
- 启动MainApplication。
- 直接点击
Enable annotation processing
- 访问接口文档
五. 异常
如果说你首次执行比bi项目,想要使用消息队列功能的话
启动项目时,有下面的异常:
org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[bi_queue]
原因:这个队列还没声明,需要跑一段代码声明,跑一次就行了
先要初始化自己创建队列
执行main方法后,再次执行项目即可。
直接点击 Enable annotation processing
然后访问接口文档。