ubuntu20.04安装rabbitmq

前言

以前写过几篇rabbitmq的博客:

  • 安装rabbitmq
  • RabbitMQ集群搭建
  • RabbitMQ死信队列管理
    不过都是基于centos的,而且已经时隔两年了。现在回想当初玩RabbitMQ,其实也是没有想明白要怎么使用MQ这个技术组件。最近有机会重新折腾,趁着转战ubuntu的机会,重新整理相关内容。可能也会涉及更多的内容。

docker安装单机版

sudo docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

是的,上面的命令就完成了rabbitmq的安装及启动。要么说,docker时隔好东西呀。
不过呢,这个指令是前台启动的指令,也就是帮助我们完成一个安装rabbitmq的hello world吧。
解释一下:

  • -it: 这其实是两个参数:-i 打开DTDIN,用户控制台交互;-t 分配tty设备,可以支持终端登录
  • -rm: 容器停止后自动删除容器。所以,如果你通过ctrl+c退出,则
  • -name rabbitmq :给这个容器命名。
  • -p: 我们看到有两个-p,后面跟的分别是5672:5672和15672:15672。这个配置的是容器的两个端口与本地端口的映射。其中5672是mq的运行端口,15672是mq的web管理界面的端口。管理界面的默认用户名密码是:guest/guest
  • rabbitmq:3.9-management:使用的容器实例,我本地是没有的,它会自动去hub上查找并下载。

但是这明显不是我们要的。鉴于目前没有什么特殊的功能要求,我们只对镜像做调整:

  • 后台启动:-d
  • 开机启动:开机启动由两点进行保障。第一是docker服务开机启动,第二是docker服务启动后自动启动镜像,通过添加参数–restart=always来保证。
  • 关闭后不自动销毁:去除-rm参数

最后的指令为:

sudo docker run -d --restart=always --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

至此,docker安装rabbitmq单机版搞定。

安装包安装

安装

参考官方说明:官方说明
为了让用户可以安装到最新的rabbitmq,官方提供了Cloudsmith和PackageCloud两个镜像,并分别提供了相关的安装引导。以下是提供的Cloudsmith安装脚本

#!/usr/bin/sh

sudo apt-get install curl gnupg apt-transport-https -y

## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Cloudsmith: modern Erlang repository
curl -1sLf https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Cloudsmith: RabbitMQ repository
curl -1sLf https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg > /dev/null

## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main

## Provides RabbitMQ
##
deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu focal main
EOF

## Update package indices
sudo apt-get update -y

## Install Erlang packages
sudo apt-get install -y erlang-base \
                        erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                        erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                        erlang-runtime-tools erlang-snmp erlang-ssl \
                        erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

安装成功

基础操作

启动rabbitmq

sudo systemctl start rabbitmq-server

设置开机启动

sudo systemctl enable rabbitmq-server

启用可视化界面

启用可视化界面

sudo rabbitmq-plugins enable rabbitmq_management

输入默认账号: guest 密码: guest,但只允许通过localhost进行访问。我们创建一个新账号用来管理。

sudo rabbitmqctl add_user admin admin
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
sudo rabbitmqctl list_permissions

最后一行可以看到新的admin账号已经添加进去了。admin的密码如果需要别的,可以在第一个指令的最后一个参数那里进行修改。

修改配置文件

默认rabbitmq是没有创建它的配置文件的。它的默认位置是在/etc/rabbitmq。我们可以创建一个空的配置文件

sudo vim /etc/rabbitmq/rabbitmq.conf

加入如下配置

loopback_users.guest=false

重启你的rabbitmq服务。这个时候,如果你可以通过远程界面登录guest帐号了。上面的配置是让guest账号可以远程登录

启用MQTT

进入docker

sudo docker exec -it rabbitmq bash

启用插件

rabbitmq-plugins enable rabbitmq_mqtt

默认mqtt插件是不可以匿名访问的,但是硬件不一定支持使用用户名密码。所以,我们添加如下配置

mqtt.allow_anonymous = true
mqtt.default_user = mqtt
mqtt.default_pass = mqtt

上述配置的意思是,mqtt允许匿名访问(默认不允许),默认使用用户名mqtt,默认密码为mqtt
这时,你使用MQTT.fx客户端不设置用户名密码即可连接到rabbitmq了。

上一篇:spring AOP面向切面编程学习笔记


下一篇:06 Linux下Shell介绍