Linux环境RabbitMQ部署

RabbitMQ的部署有很多坑,有时候项目要求搭建个MQ测试环境,没有经验的话会浪费很长时间。记录下来,以备不时之需。

目前RabbitMQ最新版本已经迭代到3.10.7,部署过程可能已有区别。本文仅供参考。

版本

RabbitMQ是Erlang语言编写的,所以在安装RabbitMQ之前,需要先安装Erlang.

其中RabbitMQ和Erlang版本必须要匹配,否则不能运行,具体参考RabbitMQ Erlang Version Requirements

部分对照表如下:

RabbitMQ min Erlang max Erlang
3.9.0~3.9.7 23.2 24
3.8.16~3.8.23 23.2 24
3.8.9~3.8.15 22.3 23
3.8.4~3.8.8 21.3 23
3.8.0~3.8.3 21.3 22
3.7 19.3 20.3
3.6.15 19.3 20.3
3.6.11~3.6.14 R16B03 20.1
3.6.4~3.6.10 R16B03 19.3
3.6.0~3.6.3 R16B03 18.3

本文选择的版本是RabbitMQ 3.6.9, 对应Erlang 19.1,Linux版本是CentOS 7.7


安装Erlang

下载

手动下载

进入官网erlang.org,先点击右侧选择对应的Erlang版本,再点击下载源码

下载Erlang

wget下载

一样的链接

1
wget https://erlang.org/download/otp_src_19.1.tar.gz

总之官网下载很慢,建议找其它来源。


安装

解压

创建/usr/local/software目录,将otp_src_19.1.tar.gz解压到这个目录下

1
tar zxvf otp_src_19.1.tar.gz

准备环境

安装Erlang编译所依赖的环境

1
yum install make gcc gcc-c++ build-essential openssl openssl-devel unixODBC unixODBC-devel kernel-devel m4 ncurses-devel

表示编译环境已准备好

编译

创建/usr/local/erlang目录,作为Erlang编译目录。否则默认编译到/usr/local目录下,不方便

1
mkdir -p /usr/local/erlang

编译Erlang,--prefix参数表示编译到/usr/local/erlang目录下,--without-javac表示不需要java编译器编译

1
2
cd otp_src_19.1/
./configure --prefix=/usr/local/erlang --without-javac

表示编译完成

安装

1
make && make install

表示安装完成

配置

配置Erlang环境变量,vim /etc/profile,加入

1
2
3
export ERLANG_HOME=/usr/local/erlang

export PATH=${ERLANG_HOME}/bin:${PATH}

source /etc/profile使配置生效

创建软链

/usr/local/bin/目录下创建软链,方便在任何地方调用

1
ln -s /usr/local/erlang/bin/erl /usr/local/bin/erl

创建软链

任意位置测试,Erlang安装成功

1
erl

退出(halt,中断)

1
halt().

软链生效


安装RabbitMQ

下载

手动下载

1.进入官网rabbitmq,点击右下角More update

image-20220817113837885

2.往下翻到3.6.9(或者自己需要的版本),点击GitHub,现在安装包都是交给GitHub托管

image-20220817114022853

3.进入GitHub,往下翻,找到适配自己的系统的安装包。这里是rabbitmq-server-generic-unix-3.6.9.tar.xz,点击下载即可

image-20220817114310336

wget下载

一样的链接

1
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_9/rabbitmq-server-generic-unix-3.6.9.tar.xz

安装

解压

同样解压到/usr/local/software目录

1
tar xvf rabbitmq-server-generic-unix-3.6.9.tar.xz

配置

vim /etc/profile,配置环境变量

1
2
3
export RABBITMQ_HOME=/usr/local/software/rabbitmq_server-3.6.9

export PATH=${RABBITMQ_HOME}/sbin:${PATH}

source /etc/profile使配置生效

开启界面管理

开启管理界面插件,便于web页面访问RabbitMQ

1
./sbin/rabbitmq-plugins enable rabbitmq_management

表示开启成功

允许默认用户访问

此时启动后浏览器访问http://localhost:15672,guest/guest不能直接登录。

因为从3.3.0开始禁止guest用户从非localhost登录

vim ebin/rabbit.app,删除<<"guest">>,重启即可

image-20211016163749331

启动/停止

后台启动

1
./sbin/rabbitmq-server -detached

停止

1
2
# 停止
./sbin/rabbitmqctl stop

问题

服务无法启动

服务器重启后,用了数字主机名,mq就起不来。

image-20211008151544862

原因

host解析失败。

解决

vi etc/rabbitmq/rabbitmq-env.conf

加上

1
NODENAME=rabbit@localhost

页面无法访问

mq启动后,端口正常,页面http://ip:15672无法访问

解决

vi etc/rabbitmq/rabbitmq.config.example

加上一下配置,重启服务即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%% -*- mode: erlang -*-
%% ----------------------------------------------------------------------------
%% RabbitMQ Sample Configuration File.
%%
%% See http://www.rabbitmq.com/configure.html for details.
%% ----------------------------------------------------------------------------
[
{rabbit,
[%%
%% Network Connectivity
%% ====================
%%

%% By default, RabbitMQ will listen on all interfaces, using
%% the standard (reserved) AMQP port.
%%
{tcp_listeners, [5672]},
{loopback_users, ["admin"]},
……
]}
].

参考资料

  1. Rabbitmq修改主机名后配置
  2. RabbitMQ超详细安装教程
文章作者: SongGT
文章链接: http://www.songguangtao.xyz/2022/08/17/11.RabbitMQ部署/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SongGuangtao's Blog
大哥大嫂[微信打赏]
过年好[支付宝打赏]