查看系统版本

# LSB是 Linux Standard Base的缩写, lsb_release命令 用来显示LSB和特定版本的相关信息,安装 lsb
yum install -y redhat-lsb

# 查看服务器系统版本
[root@lee ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:        7.9.2009
Codename:       Core

官方说明

RabbitMQ官方仓库的版本兼容性说明 提出:

从 3.8.16 开始,RabbitMQ 支持 Erlang 24

Erlang 24 依赖于 OpenSSL 1.1,它在 CentOS 7 上不可用

因此 如果服务器系统是 CentOS7 建议使用 Erlang 23.x 和 3.8.16 之前版本的 RabbitMQ

切记不要安装最新版的 Erlang,一定要看文档,哪怕是英文的,需要安装服务器系统支持的版本。

安装Erlang环境

wget --content-disposition "https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm?distro_version_id=140"

RPM 安装

# 获取 erl rpm 包
cd /usr/local/soft/
wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
# RPM 编译
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
# 安装
yum install erlang

异常 ① <font style="color:rgb(0, 0, 0);">epel-release is needed by erlang-solutions-1.0-1.noarch</font>

# 安装 epel-release
yum install epel-release
# 更新yum
yum update

源码安装

更新linux依赖

yum install -y make gcc gcc-c++ m4 openssl openssl-devel ncurses-devel unixODBC unixODBC-devel java java-devel socat

确认 RabbitMQ 和 Erlang 版本关系

RabbitMQ为Erlang语言开发,因此Centos 上必须先具备Erlang环境(类似于JDK环境一样)

RabbitMQ必须和对应的Erlang版本对应, 对应关系如下:

(更多的版本对应关系,请参考官方 RabbitMQ Erlang Version Requirements)

Erlang 官网下载并上传至服务器

下载地址 : https://www.erlang.org/downloads (截止 2023.01.28 最新版本为 25.2.1)

<font style="color:rgb(0, 0, 0);">服务器 wget 下载</font>

# 指定下载到 /usr/local/soft/
cd /usr/local/soft/
wget https://github.com/erlang/otp/releases/download/OTP-23.3.4.18/otp_src_23.3.4.18.tar.gz

编译环境 gcc

# 编译环境 gcc
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel glibc-devel xmlto perl wget socat

# (可选)由于erlang依赖wxWidgets,需要先安装wxWidgets, 而wxWidgets依赖gtk2-devel与binutils-devel 
yum install ncurses ncurses-devel gcc gcc-c++ camke make kernel-devel m4 ncurses-devel openssl-devel gtk2-devel binutils-devel
( 可选 ) 下载安装 wxWidgets
# 安装依赖
yum -y install unixODBC unixODBC-devel
# 新版本erl 24需要用到c++17 需要安装下面工具
yum install centos-release-scl -y
yum install unixODBC-devel
yum install mesa-libGLU-devel-9.0.1-1.ky10.aarch64
yum install mesa-libGLU-devel
yum install mesa * 
yum install freeglut* 
yum install devtoolset-7 -y

# 下载
cd /usr/local/soft/
# (如果wget很慢以致失败的话,用Windows点击下载再传到linux系统机器上)
wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.5/wxWidgets-3.0.5.tar.bz2
# 安装 bz2 解压缩工具
yum -y install bzip2
# 解压
tar xvf wxWidgets-3.0.5.tar.bz2
# 配置
cd wxWidgets-3.0.5/
./configure --with-opengl --with-gtk --enable-unicode --prefix=/usr/local/wxWidgets
# 编译(编译时间较长,请耐心等待)
make && make install

解压文件

# 进入目录、解压
cd /usr/local/soft/
tar -zxvf otp_src_23.3.4.18.tar.gz

配置安装路径

cd /usr/local/soft/otp_src_23.3.4.18
# 创建存放erlang环境的文件夹
mkdir /usr/local/erlang
# 进入 otp_src_23.2.7.4 配置安装路径,prefix 指定安装目录
./configure --prefix=/usr/local/erlang
异常① No OpenGL headers found, wx will NOT be usable (若已安装 wxWidgets,可忽略)

执行编译

# 执行编译(过程比较久,耐心等待)
make && make install

配置环境变量

vim /etc/profile
在文件最后加入一行
export PATH=$PATH:/usr/local/erlang/bin

环境变量生效
source /etc/profile

查看erl版本

erl -version

安装成功!

安装RabbitMQ

截止 2023.01.28 官网最新版本为 3.11.7

下载地址 : https://www.rabbitmq.com/download.html

安装 RabbitMQ 前需安装Erlang环境**, 根据 rabbitMQ 官方文档 指出**

下载安装包

wget https://packagecloud.io/rabbitmq/rabbitmq-server
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.15/rabbitmq-server-generic-unix-3.8.15.tar.xz

解压

# 解压到 /usr/local/soft/
cd /usr/local/soft/
tar -xvf rabbitmq-server-generic-unix-3.8.15.tar.xz -C /usr/local/
# 修改文件夹名
/usr/local/
mv rabbitmq_server-3.8.15 rabbitmq-3.8.15

配置RabbitMQ环境变量

vim  /etc/profile

在文件最后加入一行

export PATH=$PATH:/usr/local/rabbitmq-3.8.15/sbin

服务器开放端口

<font style="color:rgb(243, 50, 50);">RabbitMQ 服务端口默认为 5672,web端口是 </font><font style="color:rgb(243, 50, 50);">15672</font>

为了避免后续踩坑,服务器开启 **15672 和 **5672 端口

AMQP - connection timed out

开启RabbitMQ Web界面管理插件

默认情况下,是没有安装web端的客户端插件, 请在服务器上开放 15672 端口

# 开启管理页面插件
cd /usr/local/rabbitmq-3.8.15/sbin/
./rabbitmq-plugins enable rabbitmq_management

启动、停止命令

cd /usr/local/rabbitmq-3.8.15/sbin
#启动命令,该命令ctrl+c后会关闭服务
./rabbitmq-server

#在后台启动rabbit
./rabbitmq-server -detached

#关闭服务
./rabbitmqctl stop

#关闭服务(kill)找到rabbitmq服务的pid【不推荐使用】
ps -ef | grep rabbitmq
kill -9 ****

默认 guest 帐号只能在RabbitMQ安装服务器上登录

添加远程用户

用户角色简述:

administrator:可以登录控制台、查看所有信息、并对rabbitmq进行管理

monToring:监控者;登录控制台,查看所有信息

policymaker:策略制定者;登录控制台指定策略

managment:普通管理员;登录控制

# 进入RabbitMQ 安装目录
cd /usr/local/rabbitmq-3.8.15/sbin

# 添加用户
# rabbitmqctl add_user 用户名 密码
./rabbitmqctl add_user rabbituser 123123

# 分配用户标签
# rabbitmqctl set_user_tags User Tag
# [administrator]:管理员标签
./rabbitmqctl set_user_tags rabbituser administrator

至此,搭建完成!

常见问题

① Add exchange 时提示 Access refused.

用户缺少权限,给用户授权

cd /usr/local/rabbitmq-3.8.15/sbin
# 例: 给 yourusername 的用户授予可读写所有资源
./rabbitmqctl set_permissions -p / yourusername ".*" ".*" ".*"

拓展命令

RabbitMQ常用命令

启动脚本

[Unit]
Description=RabbitMQ broker
After=syslog.target network.target

[Service]
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/erlang/bin"
Environment="HOME=/usr/local/rabbitmq_server-3.9.14/"
Environment="LIB=/usr/local/erlang/lib:/usr/lib:/usr/local/rabbitmq_server-3.9.14/var/lib"

Type=notify
LimitNOFILE=65536
LimitNPROC=65535
WorkingDirectory=/var/lib/rabbitmq
ExecStart=/usr/local/rabbitmq_server-3.9.14/sbin/rabbitmq-server 
ExecStop=/usr/local/rabbitmq_server-3.9.14/sbin/rabbitmqctl stop
ExecStop=/bin/sh -c "while ps -p $MAINPID >/dev/null 2>&1; do sleep 1; done"
Restart=always
NotifyAccess=all
TimeoutStartSec=3600

[Install]
WantedBy=multi-user.target

参考链接