最近又需要用到 MQ,因为考虑到 RocketMQ 的延迟队列时间不能随意控制,这一还是选择了 RabbitMQ,这里记录一下安装步骤
首先我们需要先安装 erlang,RabbitMQ 是依赖这个语言环境的
bash
# 编译 Erlang 必备依赖,防止后面 erlang 编译不成功
yum install -y gcc gcc-c++ make wget ncurses-devel openssl-devel unixODBC-devel libcurl-devel zlib-devel
# 切换目录,我们安装到指定的地方
cd /usr/local/src
# 下载语言安装包
wget https://github.com/erlang/otp/releases/download/OTP-25.3.2/otp_src_25.3.2.tar.gz
# 解压
tar -zxvf otp_src_25.3.2.tar.gz
# 进入目录
cd otp_src_25.3.2
# 配置
./configure --prefix=/usr/local/erlang
# 编译
make -j$(nproc)
# 安装
make install
# 设置环境变量
export ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:/usr/local/rabbitmq/sbin:$PATH
# 验证版本
erl -version
看到下面这样的就是成功了
bash
(base) [root@ecm-74de otp_src_25.3.2]# erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 13.2.2
接下来安装 RabbitMQ
bash
# 切换目录
cd /usr/local/src
# 下载安装包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.16/rabbitmq-server-generic-unix-3.11.16.tar.xz
# 解压
tar -xvf rabbitmq-server-generic-unix-3.11.16.tar.xz
# 移动到指定目录
mv rabbitmq_server-3.11.16 /usr/local/rabbitmq
# 创建数据目录,放到其它挂载盘
mkdir -p /data/rabbitmq/{mnesia,log,tmp}
# 配置mq路径
mkdir -p /usr/local/rabbitmq/etc/rabbitmq
# 创建一个配置文件
vim /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf
# 把下面的内容放进去,记得保存
# 允许远程管理
loopback_users.none = true
listeners.tcp.default = 5672
management.listener.port = 15672
management.listener.ip = 0.0.0.0
# 一样的配置一下环境变量,创建一个文件
vim /etc/profile.d/rabbitmq.sh
# 把下面的内容放进去,记得保存
# RabbitMQ 和 Erlang 路径
export PATH=/usr/local/erlang/bin:/usr/local/rabbitmq/sbin:$PATH
# 刷新一下环境
source /etc/profile
# 安装延迟队列查询
# 先进入插件目录
cd /usr/local/rabbitmq/plugins
# 下载插件,下载完注意检查一下,这个文件正常应该是40多KB
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.11.1/rabbitmq_delayed_message_exchange-3.11.1.ez
# 启用插件
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
到这里就都安装好了,接下来我们启动它,配置启动服务
bash
# 创建服务文件
vim /etc/systemd/system/rabbitmq.service
# 把下面的内容放进去
[Unit]
Description=RabbitMQ broker
After=network.target epmd.service
Wants=network.target
[Service]
Type=simple
User=root
Environment=RABBITMQ_USE_LONGNAME=true
Environment=RABBITMQ_NODENAME=rabbit@ecm-74de
Environment=RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
Environment=RABBITMQ_LOG_BASE=/data/rabbitmq/log
Environment=RABBITMQ_ERLANG_COOKIE=GPIAEBTOKICIOJLCRTIU
# 指定完整路径启动和停止
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop
# 把 PATH 也加上,保证 systemd 能找到 erl 等命令
Environment=PATH=/usr/local/erlang/bin:/usr/local/rabbitmq/sbin:/usr/bin:/bin
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
上面的配置里面有个 ecm-74de,注意这是我服务器的名称,可以用下面命令查看一下自己的
bash
hostname -f
加入到开机自启里面
bash
# 重新加载 systemd
systemctl daemon-reload
# 设置开机自启
systemctl enable rabbitmq
# 启动服务
systemctl start rabbitmq
# 查看状态
systemctl status rabbitmq -l
这样就是启动成功
bash
(base) [root@ecm-74de plugins]# systemctl status rabbitmq -l
● rabbitmq.service - RabbitMQ broker
Loaded: loaded (/etc/systemd/system/rabbitmq.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2026-01-15 14:41:36 CST; 688ms ago
Process: 22300 ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop (code=exited, status=69)
Main PID: 22348 (rabbitmq-server)
Tasks: 36
Memory: 69.4M
CGroup: /system.slice/rabbitmq.service
├─22348 /bin/sh /usr/local/rabbitmq/sbin/rabbitmq-server
├─22353 /usr/local/erlang/lib/erlang/erts-13.2.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -B i -- -root /usr/local/erlang/lib/erlang -bindir /usr/local/erlang/lib/erlang/erts-13.2.2/bin -progname erl -- -home /root -- -pa -noshell -noinput -s rabbit boot -boot start_sasl -syslog logger [] -syslog syslog_error_logger false -kernel prevent_overlapping_partitions false
├─22359 erl_child_setup 65536
└─22468 /usr/local/erlang/lib/erlang/erts-13.2.2/bin/beam.smp -- -root /usr/local/erlang/lib/erlang -bindir /usr/local/erlang/lib/erlang/erts-13.2.2/bin -progname erl -- -home /root -- -boot no_dot_erlang -sname epmd-starter-566993386 -noshell -noinput -s erlang halt
Jan 15 14:41:36 ecm-74de systemd[1]: Started RabbitMQ broker.
然后我们创建一个用户
bash
# 创建用户,密码自己设
rabbitmqctl add_user admin StrongPassword123
# 给用户管理员权限
rabbitmqctl set_user_tags admin administrator
# 给用户设置所有虚拟主机的权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
访问 http://127.0.0.1:15672(换成自己ip),登录一下试试,可能需要开放防火墙端口,页面端口是 15672 ,后面如果要用程序连接还需要开放 5672 端口
最后记得修改默认用户的密码,防止万一端口什么的被人爆破
bash
# 修改 guest 用户密码为你想要的新密码
rabbitmqctl change_password guest 新密码