Centos/Ubuntu RabbitMQ通用二进制unix安装

RabbitMQ 版本下载列表

RabbitMQ 版本与 Erlang/OTP 兼容矩阵链接

RabbitMQ 版本列表

1 Erlang/OTP 安装

Erlang/OTP 下载网页链接

本次示例安装 RabbitMQ v3.13.6 版本二进制安装,Erlang/OTP 26.2.5.2 源码下载链接,若是 github 下载过慢,可以使用 Github 代理加速 下载。

1.1 Erlang/OTP 下载

wget https://gitproxy.click/https://github.com/erlang/otp/releases/download/OTP-26.2.5.2/otp_src_26.2.5.2.tar.gz

# 解压并进入 otp 源码目录
tar -zxf otp_src_26.2.5.2.tar.gz
cd otp_src_26.2.5.2

1.2 安装编译依赖

Centos安装依赖

yum install -y gcc gcc-c++ make epel-release
yum install -y ncurses-devel openssl-devel unixODBC-devel wxGTK3-devel libxslt fop autoconf

Ubuntu安装依赖

apt-get install -y build-essential autoconf m4 libncurses5-dev libwxgtk3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils openjdk-8-jdk-headless

1.3 配置编译选项

./configure \
  --prefix=/usr/local/erlang \
  --enable-threads \
  --enable-smp-support \
  --enable-kernel-poll \
  --enable-hipe \
  --with-ssl \
  --without-javac \
  --enable-dirty-schedulers \
  --enable-dynamic-ssl-lib

关键选项说明:

  • --prefix:指定安装路径

  • --with-ssl:启用 SSL 支持(RabbitMQ 必需)

  • --enable-kernel-poll:提升网络性能

  • --without-javac:跳过 Java 编译(减少依赖)

1.4 编译并安装

# 使用所有 CPU 核心加速编译
make -j$(nproc)
make install

1.5 配置环境变量

echo 'export PATH=$PATH:/usr/local/erlang/bin' | tee /etc/profile.d/erlang.sh
source /etc/profile.d/erlang.sh

验证安装:

[root@rabbitmq01 ~]$ erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 14.2.5.2

2 RabbitMQ 通用 Unix 包安装(推荐)

RabbitMQ 仍提供跨 Linux 发行版的 Generic UNIX 压缩包,适用于 CentOS 和Ubuntu发行版。

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.6/rabbitmq-server-generic-unix-3.13.6.tar.xz


# 解压到 /usr/local/ 目录
tar -Jxf rabbitmq-server-generic-unix-3.13.6.tar.xz -C /usr/local/
# 改名为 rabbitmq
mv /usr/local/rabbitmq_server-3.13.6/ /usr/local/rabbitmq

cd /usr/local/rabbitmq/

2.2 配置环境变量

echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' | sudo tee /etc/profile.d/rabbitmq.sh
source /etc/profile.d/rabbitmq.sh

2.2.1 创建专用用户和数据目录

sudo useradd -r -d /var/lib/rabbitmq -s /bin/false rabbitmq
sudo mkdir -p /var/{lib,log,run}/rabbitmq
sudo chown -R rabbitmq:rabbitmq /var/{lib,log,run}/rabbitmq
sudo chown -R rabbitmq:rabbitmq /usr/local/rabbitmq

2.3.2 配置环境变量

创建配置文件 /etc/rabbitmq/rabbitmq-env.conf

sudo mkdir -p /etc/rabbitmq

sudo tee /etc/rabbitmq/rabbitmq-env.conf << EOF
RABBITMQ_NODENAME=rabbit@$(hostname -s)
RABBITMQ_MNESIA_BASE=/var/lib/rabbitmq/mnesia
RABBITMQ_LOG_BASE=/var/log/rabbitmq
RABBITMQ_PID_FILE=/var/run/rabbitmq/pid
RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf
ENABLED_PLUGINS_FILE=/etc/rabbitmq/enabled_plugins
EOF

2.3.3 高级配置

sudo tee /etc/rabbitmq/rabbitmq.conf << EOF
# 监听地址和端口
listeners.tcp.default = 5672

# 管理界面配置
management.tcp.port = 15672
management.tcp.ip = 0.0.0.0

# 禁用 guest 用户远程访问(生产环境建议)
loopback_users.guest = false

# 内存和磁盘警告阈值
vm_memory_high_watermark.relative = 0.6
disk_free_limit.absolute = 2GB
EOF

2.3.3 高级配置

sudo tee /etc/rabbitmq/rabbitmq.conf << EOF
# 监听地址和端口
listeners.tcp.default = 5672

# 管理界面配置
management.tcp.port = 15672
management.tcp.ip = 0.0.0.0

# 禁用 guest 用户远程访问(生产环境建议)
loopback_users.guest = false

# 内存和磁盘警告阈值
vm_memory_high_watermark.relative = 0.6
disk_free_limit.absolute = 2GB
EOF

2.4 配置 systemed 服务

sudo tee /etc/systemd/system/rabbitmq-server.service << EOF
[Unit]
Description=RabbitMQ Generic UNIX Service V3.13.6
After=network.target

[Service]
Type=forking
User=rabbitmq
Group=rabbitmq
UMask=0027
LimitNOFILE=65536
Environment="PATH=/usr/local/erlang/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="HOME=/var/lib/rabbitmq"
Environment="RABBITMQ_MNESIA_BASE=/var/lib/rabbitmq/mnesia"
Environment="RABBITMQ_LOG_BASE=/var/log/rabbitmq"
Environment="RABBITMQ_PID_FILE=/var/run/rabbitmq/pid"
Environment="RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf"
Environment="RABBITMQ_CONF_ENV_FILE=/etc/rabbitmq/rabbitmq-env.conf"
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server -detached
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

2.5 安装后需配置

2.5.1 创建管理员用户

rabbitmqctl add_user admin yourpassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

若是操作遇到如下问题:

Error: unable to perform an operation on node 'rabbit@rabbitmq01'. Please see diagnostics information and suggestions below.

DIAGNOSTICS
===========

attempted to contact: [rabbit@localhost]

rabbit@localhost:
  * connected to epmd (port 4369) on localhost
  * epmd reports: node 'rabbit' not running at all
                  no other nodes on localhost
  * suggestion: start the node

Current node details:
 * node name: 'rabbitmqcli-509-rabbit@localhost'
 * effective user's home directory: /var/lib/rabbitmq
 * Erlang cookie hash: 3mVoEeREVMiFlXrG74TIaQ==

执行如下命令:

# 停止 RabbitMQ 服务
sudo systemctl stop rabbitmq-server

# 清除旧有 Mnesia 数据库
sudo rm -rf /var/lib/rabbitmq/mnesia/*

#删除所有cookie文件
find / -name  .erlang.cookie  | xargs rm -rf
# 修改 cookie(所有集群节点必须相同)
sudo openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' > /var/lib/rabbitmq/.erlang.cookie
sudo cat /var/lib/rabbitmq/.erlang.cookie > /root/.erlang.cookie 
sudo cat /var/lib/rabbitmq/.erlang.cookie > /usr/local/rabbitmq/.erlang.cookie
sudo sudo chmod 600 /usr/local/rabbitmq/.erlang.cookie
chmod 600 /root/.erlang.cookie 
chmod 600 /var/lib/rabbitmq/.erlang.cookie

# 启动 RabbitMQ
sudo systemctl start rabbitmq-server

或者在家目录更新 cookie 值

cat /var/lib/rabbitmq/.erlang.cookie > .erlang.cookie

2.5.2 启用管理插件

rabbitmq-plugins enable rabbitmq_management

Comment