ubuntu 下 rabbitmq 的安装教程
示例说明
RabbitMQ 作为基于 Erlang 语言开发的消息队列系统,所以说需要提前安装 erlang。
erlang 与 rabbitmq 的版本关系请参考: https://www.rabbitmq.com/docs/which-erlang
本示例的使用环境是 ubuntu 24.04,安装示例使用 erlang 26.2.2 和 RabbitMQ 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
评论