ubuntu 下 rabbitmq 的安装教程

示例说明

RabbitMQ 作为基于 Erlang 语言开发的消息队列系统,所以说需要提前安装 erlang。

erlang 与 rabbitmq 的版本关系请参考: https://www.rabbitmq.com/docs/which-erlang

本示例的使用环境是 ubuntu 24.04,安装示例使用 erlang 26.2.2RabbitMQ 3.13.7

erlang 26.2.2 的下载、编译和安装

安装说明

erlang 的最新版下载页面: https://www.erlang.org/downloads 。历史版本可以从右边的 “All releases” 中选择。

页面上已经有编译好安装包;例如, Ubuntu 22.04 安装 erlang 26.2.2 的链接如下:
https://binaries2.erlang-solutions.com/ubuntu/pool/contrib/e/esl-erlang/esl-erlang_26.2.2-1~ubuntu~jammy_amd64.deb

本示例使用源码编译安装,源码地址: https://github.com/erlang/otp/tags
erlang 26.2.2 的源码下载链接: https://github.com/erlang/otp/releases/download/OTP-26.2.2/otp_src_26.2.2.tar.gz

安装依赖

1$ sudo apt update
2
3$ sudo apt install build-essential openssl libncurses5-dev

编译安装

下载源码到任意目录,然后在终端进行如下操作:

1$ tar -zxf otp_src_26.2.2.tar.gz -C /app/downloads/erlang
2
3$ cd /app/downloads/erlang/otp_src_26.2.2
4
5$ ./configure --prefix=/app/programs/otp_26.2.2 --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
6
7$ make
8
9$ sudo make install

添加到环境变量

1$ echo -e '\n#Erlang' | sudo tee -a /etc/profile
2
3$ echo -e 'export ERLANG_HOME=/app/programs/otp_26.2.2' | sudo tee -a /etc/profile
4
5$ echo -e 'export PATH=$PATH:$ERLANG_HOME/bin' | sudo tee -a /etc/profile
6
7$ source /etc/profile

RabbitMQ 3.13.7 的下载、安装、和运行

下载 rabbitmq

下载地址: https://github.com/rabbitmq/rabbitmq-server/releases

说明:

  • Linux 环境选择类似 rabbitmq-server-generic-unix-XXXXXX.tar.xz 的安装包
  • “generic-unix”代表通用Linux版,在任意Linux下都可以正常使用。
  • “latest-toolchain”内部包含了最新工具链(编译器、链接器、库…)的包,通常用于开发者。
  • 上面的这两个都是官方通过gcc编译过的,无需再次编译了,可直接使用。

我们直接在页面 https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.13.7 下载 rabbitmq-server-generic-unix-3.13.7.tar.xz 就可以了。

下载后解压的任意目录即可。

安装 RabbitMQ

1$ tar -xJf rabbitmq-server-generic-unix-3.13.7.tar.xz -C /app/programs
2
3$ cd /app/programs/rabbitmq_server-3.13.7
4
5# 数据、日志的目录
6$ mkdir -p data/{mnesia,log}

配置 RabbitMQ

运行 vim etc/rabbitmq/rabbitmq-env.conf,修改内容如下:

1#配置数据文件存放位置
2RABBITMQ_MNESIA_BASE=/app/programs/rabbitmq_server-3.13.7/data/mnesia
3#配置日志文件存放位置
4RABBITMQ_LOG_BASE=/app/programs/rabbitmq_server-3.13.7/data/log
5#端口设置,默认为5672
6RABBITMQ_NODE_PORT=5672
7#节点名称,linux 默认节点名为 rabbit@$hostname
8#如果是集群,确保节点名称唯一
9RABBITMQ_NODENAME=rabbit

添加到环境变量

1$ echo -e '\n#RabbitMQ' | sudo tee -a /etc/profile
2
3$ echo -e 'export RABBITMQ_HOME=/app/programs/rabbitmq_server-3.13.7' | sudo tee -a /etc/profile
4
5$ echo -e 'export PATH=$PATH:$RABBITMQ_HOME/sbin' | sudo tee -a /etc/profile
6
7$ source /etc/profile

rabbitmq 服务的启动和停止

 1运行RabbitMQ服务
 2$ rabbitmq-server -detached
 3
 4查看服务运行状态及端口
 5$ rabbitmqctl status
 6
 7查看可用插件
 8$ rabbitmq-plugins list
 9
10启动Web管理插件
11$ rabbitmq-plugins enable rabbitmq_management
12
13停止rabbitMQ服务
14$ rabbitmqctl stop

打开浏览器输入 http://localhost:15672 ,默认用户名密码:guest/guest,就可以看到管理界面了。
注意:此时rabbitmq只能通过localhost访问,并用guest登录,远程使用guest登录不了,需要创建新的用户,并给用户设置相应权限的角色。

RabbitMQ 有如下角色:

  • 超级管理员(administrator)
  • 监控者(monitoring)
  • 策略制定者(policymaker)
  • 普通管理者(management)
  • 其他

RabbitMQ 的用户管理

 1# 查看rabbitmq下面的所有用户
 2$ rabbitmqctl list_users
 3
 4# 增加普通用户(admin是我新增的用户名,123456是我设定的密码)
 5$ rabbitmqctl add_user admin 123456 
 6
 7# 密码重置(重置用户名是admin的密码为admin)
 8$ rabbitmqctl change_password admin admin
 9
10# 分配角色(为admin这个用户分配超级管理员角色)
11$ rabbitmqctl set_user_tags admin administrator    
12
13# 赋予用户对所有虚拟主机的访问权限
14$ rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
15
16# 删除一个用户(删除一个用户名为root的用户)
17$ rabbitmqctl delete_user root

安装 rabbitmq 延迟插件

rabbitmq_delayed_message_exchange 是常用的延迟队列插件。
下载页面: https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/tags
由于该插件也是Erlang 语言开发的,也有注意版本的兼容关系。我们这里下载 rabbitmq_delayed_message_exchange v3.13.0
具体的下载页面: https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/v3.13.0

 1# 下载
 2$ wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez
 3
 4# 复制到插件目录
 5$ unzip rabbitmq_delayed_message_exchange-3.13.0.ez -d /app/programs/rabbitmq_server-3.13.7/plugins
 6
 7# 启用插件
 8$ rabbitmq-plugins enable rabbitmq_delayed_message_exchange
 9
10# 关闭插件
11$ rabbitmq-plugins disable rabbitmq_delayed_message_exchange