单节点RabbitMQ3.11安装
- RabbitMQ Support Timeline(Release Series)
- RabbitMQ Latest Release On Github
- Zero-dependency Erlang RPM for RabbitMQ(Releases On Github)
DANGER
- 当 hostname 被设置为 IP 地址(如
10.1.0.102
)后,RabbitMQ启动失败,并报错 "unable to perform an operation on node 'rabbit@10'"。请参考 TTD 中关于服务器标识命名的规范,正确设置 hostname,以避免类似问题。 - 在生产环境中修改主机名会导致严重问题:RabbitMQ依赖节点名称进行身份识别,主机名变更将导致原有节点失效,进而引发服务启动失败。同时,与之关联的CLI工具也将因节点信息不匹配而无法正常使用。为确保系统稳定性,生产环境严禁执行主机名变更操作。
TIP
若因修改主机名导致 RabbitMQ 命令行工具无法正常使用,可通过以下步骤修复:将服务端的认证文件 /var/lib/rabbitmq/.erlang.cookie 复制并覆盖客户端使用的 ~/.erlang.cookie 文件即可。
一、安装必要的库(yum)
yum -y install socat ncurses-compat-libs
二、在openEuler上安装Erlang
版本说明
根据RabbitMQ官网的版本要求,RabbitMQ 3.11 最高支持的 Erlang/OTP 版本为 25.3.x。截止 2025 年 2 月 3 日,该版本的最新稳定版本为 erlang-25.3.2.16-1。
虽然在安装过程中使用了 erlang-27.2.1-1,且未发现任何问题,但仍应遵循官方要求,按照推荐版本进行安装。
更详细的说明,请查看RabbitMQ介绍
0x01.安装 RPM 包
cd /usr/local/src
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v25.3.2.16/erlang-25.3.2.16-1.el8.x86_64.rpm
rpm -ivh erlang-25.3.2.16-1.el8.x86_64.rpm
0x02.验证是否安装成功
erl
输出如下内容
Erlang/OTP 25 [erts-13.2.2.12] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]
Eshell V13.2.2.12 (abort with ^G)
1>
0x03.查看版本号
How to get Erlang's release version number from a shell?
erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().' -noshell
输出如下内容
25.3.2.16
三、通用二进制构建
Generic Binary Build("Generic UNIX Build")
TIP
- 所有源码包下载到 /usr/local/src 中
- 软件安装到 /usr/local 中,并以软件名及主次版本号命名,如 rabbitmq_server3.11
0x01.添加用户
groupadd rabbitmq
useradd -g rabbitmq rabbitmq -s /sbin/nologin
0x02.创建目录
mkdir -p /var/lib/rabbitmq
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq
0x02.安装rabbitmq-server
cd /usr/local/src
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.28/rabbitmq-server-generic-unix-3.11.28.tar.xz
tar xvf rabbitmq-server-generic-unix-3.11.28.tar.xz
mv /usr/local/src/rabbitmq_server-3.11.28 /usr/local/rabbitmq_server3.11
修改目录权限
chown -R rabbitmq:rabbitmq /usr/local/rabbitmq_server3.11
0x03.配置环境变量
# 添加搜索路径到配置文件
echo 'PATH=$PATH:/usr/local/rabbitmq_server3.11/sbin
export PATH' >> /etc/profile
# 刷新环境变量
source /etc/profile
0x04.查看版本号
rabbitmqctl version
输出如下内容
3.11.28
四、使用Systemd管理进程
TIP
- 主机操作系统(如物理机或虚拟机)使用,不推荐在容器中使用
0x01.编辑service文件
vim /etc/systemd/system/rabbitmq-server.service
添加如下内容
以下内容是参考 rpm 方式安装 rabbitmq 时自动生成的 rabbitmq-server.service
[Unit]
Description=RabbitMQ Messaging Server
After=syslog.target network.target
[Service]
Type=simple
User=rabbitmq
Group=rabbitmq
Environment="HOME=/var/lib/rabbitmq"
WorkingDirectory=/usr/local/rabbitmq_server3.11
ExecStart=/usr/local/rabbitmq_server3.11/sbin/rabbitmq-server
ExecStop=/usr/local/rabbitmq_server3.11/sbin/rabbitmqctl stop
[Install]
WantedBy=multi-user.target
0x02.重新加载systemctl配置
systemctl daemon-reload
0x03.启动并设置开机自启
systemctl enable rabbitmq-server --now
Systemctl指令
systemctl status rabbitmq-server #查看服务
systemctl start rabbitmq-server #启动服务
systemctl stop rabbitmq-server #停止服务
systemctl restart rabbitmq-server #重启服务
systemctl enable rabbitmq-server #开启开机自启服务
systemctl disable rabbitmq-server #关闭开机自启服务
五、User Management
https://www.rabbitmq.com/rabbitmqctl.8.html#User_Management
密码说明
密码长度需不少于12位的随机字符串,且必须包含大小写字母、数字及特殊符号。约定特殊符号不包含!
。
创建管理员
rabbitmqctl add_user admin <password>
设置管理员角色
rabbitmqctl set_user_tags admin administrator
为管理员用户进行添加 /(vhost)中所有资源的配置、写、读权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
查看管理员
rabbitmqctl list_users
六、rabbitmqctl常用命令
0x01.查看服务状态
rabbitmqctl status
0x02.查看管理员用户列表
rabbitmqctl list_users
0x03.修改管理员用户密码
rabbitmqctl change_password $user_name $user_passwd
七、Management UI Plugin
https://rabbitmq.com/management.html
rabbitmq-plugins enable rabbitmq_management
默认的访问地址:http://{ip}:15672,账号及口令参照《创建管理用户》
WARNING
- 如果无法访问,可以尝试关闭防火墙。
- 使用默认的账号(guest)、口令(guest)登录会提示 “User can only log in via localhost”,。
八、安装延迟队列插件
具体安装方法可参考RabbitMQ延迟队列插件安装。
九、常见错误
- error: Failed dependencies
在 Centos7 系统上执行rpm -ivh erlang-25.3.2-1.el7.x86_64.rpm
失败,错误信息如下:libtinfo.so.5()(64bit) is needed by erlang-25.3.2-1.el7.x86_64
解决方法
yum -y install ncurses-compat-libs
------ >>>>>> 此处为分割线 <<<<<< ------
附录一、在Centos7上安装Erlang
WARNING
Starting with Erlang 24, the minimum required version is an equivalent of OpenSSL is 1.1. What about CentOS 7 and derivatives?
如需升级OpenSSL,可参考升级OpenSSL到1.1.1*
0x01.安装 RPM 包
cd /usr/local/src
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v25.3.2/erlang-25.3.2-1.el7.x86_64.rpm
rpm -ivh erlang-25.3.2-1.el7.x86_64.rpm
0x02.验证是否安装成功
erl
输出如下内容
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]
Eshell V13.2.2 (abort with ^G)
1>
0x03.查看版本号
How to get Erlang's release version number from a shell?
erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().' -noshell
输出如下内容
25.3.2