大家好,我是袁庭新。今天介绍在不同操作系统中如何搭建RabbitMQ开发环境?
在使用RabbitMQ之前必须预先安装配置,参考RabbitMQ官网说明,RabbitMQ支持多平台安装,例如Linux、Windows、macOS、Docker等。不同架构的芯片对应的RabbitMQ安装包是有区别的。目前市场上主流的芯片架构有:X86架构、ARM架构、RISC-V架构和MIPS架构这四种。
例如,在Linux系统中,如果想查看CentOS版本信息,可以通过以下命令来获取。
[root@localhost ~]# uname -r
5.11.12-300.el7.aarch64
[root@localhost ~]# cat /proc/version
Linux version 5.11.12-300.el7.aarch64 (root@centos7.9) (gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3), GNU ld version 2.30-55.el7.2) #1 SMP Thu Aug 19 09:02:08 UTC 2021
[root@localhost ~]# uname -a
Linux node2 5.11.12-300.el7.aarch64 #1 SMP Thu Aug 19 09:02:08 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
这里,我们以CentOS 7.X系统(ARM架构和X86架构)和Windows系统环境为例,介绍RabbitMQ的安装配置过程。
1.安装Erlang
1.1 Erlang语言介绍
Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。
最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适合构建分布式、实时软并行计算系统。
Erlang运行时环境是一个虚拟机,有点像Java的虚拟机,这样代码一经编译,同样可以随处运行。
RabbitMQ安装包依赖于Erlang语言包的支持,所以需要先安装Erlang语言包,再安装RabbitMQ安装包。
下表提供了当前支持的RabbitMQ发布系列的Erlang兼容性矩阵。下载Erlang时需要注意版本兼容性问题,请参考官方文档(Erlang Version Requirements | RabbitMQ)。
在RabbitMQ发布的所有版本中,支持CentOS 7.X的最高一个版本是rabbitmq-server-3.10.0-1.el7.noarch。
1.2 ARM架构的CentOS虚拟机中安装Erlang
1.下载ARM架构版本的Erlang安装包。可以通过访问以下两个网址下载ARM架构版的Rrlang安装包,这里以下载otp_src_23.3.4.11.tar.gz版本的安装包为例。
2.将下载的安装包otp_src_23.3.4.11.tar.gz拷贝到CentOS 7的/opt目录下。
# Mac系统使用scp命令将Erlang安装包上传至CentOS系统
scp /Users/yuanxin/Downloads/otp_src_23.3.4.11.tar.gz root@192.168.230.131:/opt
3.安装依赖环境。安装的过程需要消耗一定的时间需耐心等待安装"完毕!"的提示。
[root@localhost opt]# yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz glibc-devel xmlto perl gtk2-devel binutils-devel
4.解压Erlang安装包。
[root@localhost opt]# tar -zxvf otp_src_23.3.4.11.tar.gz
5.配置Erlang安装目录。
# 进入Erlang源码编译目录
[root@localhost opt]# cd otp_src_23.3.4.11
# 创建Erlang安装目录
[root@localhost otp_src_23.3.4.11]# mkdir /opt/erlang
# 设置安装目录
[root@localhostmake otp_src_23.3.4.11]# ./configure --prefix=/opt/erlang
6.编译、安装Erlang。注意,make命令执行的时间可能比较长,需耐心等待编译完成。
[root@user otp_src_23.3.4.11]# make
[root@user otp_src_23.3.4.11]# make install
7.打开/etc/profile配置文件,将编译安装的Erlang加入环境变量。
[root@user otp_src_23.3.4.11]# vim /etc/profile
8.在/etc/profile文件的末尾添加如下的ERLANG_HOME安装路径。
# ERLANG_HOME
export ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin
9.使配置文件生效并使用erl命令查看Erlang的版本信息。
[root@user otp_src_23.3.4.11]# source /etc/profile
[root@user otp_src_23.3.4.11]# erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 11.2.2.10
1.3 X86架构的CentOS虚拟机中安装Erlang
1.安装Erlang
1.下载erlang-23.3.4.11-1.el7.x86_64.rpm版本的Erlang安装包。Erlang安装包下载地址:rabbitmq/erlang - Packages · packagecloud。
2.使用wget命令下载Erlang安装包,这里我们将Erlang安装包下载到/opt目录下。
[root@localhost opt]# wget --content-disposition "https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm?distrio_version_id=140"
3.安装Erlang。
[root@localhost opt]# rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
4.输入"y",回车继续安装,等待安装完成。
Is this ok [y/s/N]: y
5.输入"erl"命令,如果显示版本号说明Erlang安装成功。
erl
2.依赖检测失败问题解决
如果在安装Erlang时提示"错误:依赖检测失败"解决方案见下。如果Erlang安装过程中未提示该问题请忽略此步骤。
1.如果在安装Erlang时报如下错误。
[root@localhost opt]# rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
警告:erlang-23.3.4.11-1.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 6026dfca: NOKEY
错误:依赖检测失败:
libc.so.6(GLIBC_2.10)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.11)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.14)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.15)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.2.5)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.3)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.3.2)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.3.4)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.4)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.7)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libc.so.6(GLIBC_2.8)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libdl.so.2(GLIBC_2.2.5)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libm.so.6(GLIBC_2.2.5)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libpthread.so.0(GLIBC_2.12)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libpthread.so.0(GLIBC_2.2.5)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libpthread.so.0(GLIBC_2.3.2)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
librt.so.1(GLIBC_2.2.5)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
libutil.so.1(GLIBC_2.2.5)(64bit) 被 erlang-23.3.4.11-1.el7.x86_64 需要
2.在命令后面添加--nodeps --force参数。该命令的作用是,不再分析包之间的依赖关系而直接安装。
[root@localhost opt]# rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm --nodeps --force
警告:erlang-23.3.4.11-1.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 6026dfca: NOKEY
准备中... ################################# [100%]
软件包 erlang-23.3.4.11-1.el7.x86_64 是针对 different 构架的
3.安装依赖环境。安装的过程需要消耗一定的时间需耐心等待安装"完毕!"的提示。
[root@localhost opt]# yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz glibc-devel xmlto perl gtk2-devel binutils-devel
1.4 Windows系统安装Erlang
1.下载Erlang
1.访问Erlang官网(https://www.erlang.org),点击【Get Erlang/OPT 24】按钮,进入到下载页面。
2.在Erlang下载页面选择【Download Windows installer】-【Download 64-bit Installer】选项,下载64位的Erlang安装包。
2.安装Erlang
1.双击otp_win64_24.3.3.exe安装包,进入选择组件窗口,保持选项默认,直接点击【Next】下一步。
2.在选择安装位置窗口,自定义Erlang安装配置。例如,安装在D:\ProgramSoftware\erl-24.3.3目录下。
3.在选择开始菜单文件夹窗口,保持默认,点击【Install】按钮进行安装。
4.等待Erlang的安装完成,整个安装过程可能需要持续三分钟左右。
5.安装完成后,点击【Close】按钮,关闭窗口。至此,Erlang语言包的安装完成。
3.配置Erlang
1.在【高级系统设置】-【环境变量】-【系统变量】选项下,创建ERLANG_HOME变量名,并对此变量名指定Erlang的安装路径作为变量值(注意:在安装Erlang语言包时,会在系统变量下会自动增加一个变量名为ERLANG_HOME的变量配置,它的配置路径是Erlang选择安装的具体路径,无须手动修改。如果此变量已自动生成,无需重复配置)。
2.双击【系统变量】-【Path】选项,在Path变量中添加Erlang安装目录下的bin目录的配置。
%ERLANG_HOME%\bin
4.检测Erlang
1.在开始菜单找到【Erlang】选项,点击启动Erlang;如果显示如下界面,则表示Erlang安装配置成功。
2.或者在【命令提示符】窗口,输入erl命令,查看Erlang版本号;再输入halt().退出erl命令操作。
2.安装Socat
ARM架构的CentOS虚拟机中在安装Erlang时,默认已经安装了Socat,因此无需重复安装Socat。 而X86架构的CentOS虚拟机中在安装Erlang时,默认没有安装Socat,因此需要手动安装Socat。
2.1 Socat简介
Socat是Linux下的一个多功能的网络工具,名字来由是"Socket CAT"。其功能与有瑞士军刀之称的Netcat类似,可以看做是Netcat的加强版。
Socat的主要特点就是在两个数据流之间建立通道,且支持众多协议和链接方式。如IP、TCP、UDP、IPv6、PIPE、EXEC、System、Open、Proxy、Openssl、Socket等。Socat的官方网站:socat。
2.2 Socat安装
1.我们可以通过访问以下两个网址下载Socat安装包。这里以下载socat-1.7.3.2-5.el7.lux.x86_64.rpm版本的安装包为例进行讲解。
2.将下载的socat-1.7.3.2-5.el7.lux.x86_64.rpm安装包拷贝到/opt目录。
scp /Users/yuanxin/Downloads/socat-1.7.3.2-5.el7.lux.x86_64.rpm root@192.168.230.131:/opt
3.安装Socat,执行如下命令进行安装。
[root@localhost opt]# rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
4.安装完成后,查看Socat的版本信息,结果显示如下。
[root@localhost opt]# yum info socat
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.bfsu.edu.cn
可安装的软件包
名称 :socat
架构 :aarch64
版本 :1.7.3.2
发布 :2.el7
大小 :279 k
源 :base/7/aarch64
简介 : Bidirectional data relay between two data channels ('netcat++')
网址 :http://www.dest-unreach.org/socat
协议 : GPLv2
描述 : Socat is a relay for bidirectional data transfer between two independent data
: channels. Each of these data channels may be a file, pipe, device (serial line
: etc. or a pseudo terminal), a socket (UNIX, IP4, IP6 - raw, UDP, TCP), an
: SSL socket, proxy CONNECT connection, a file descriptor (stdin etc.), the GNU
: line editor (readline), a program, or a combination of two of these.
3.安装RabbitMQ
3.1 ARM架构的CentOS虚拟机中安装RabbitMQ
1.下载ARM架构版本的RabbitMQ安装包。访问Releases · rabbitmq/rabbitmq-server · GitHub地址,这里我们选择rabbitmq-server-generic-unix-3.10.0.tar.xz版本的RabbitMQ进行下载。
2.拷贝rabbitmq-server-generic-unix-3.10.0.tar.xz安装包到/opt目录。
# 1.Windows系统使用Xftp工具或者lrzsz工具将RabbitMQ安装包上传至CentOS系统
# 2.Mac系统使用scp命令将RabbitMQ安装包上传至CentOS系统
scp /Users/yuanxin/Downloads/rabbitmq-server-generic-unix-3.10.0.tar.xz root@192.168.230.131:/opt
3.解压RabbitMQ安装包。由于下载的安装包为xz文件,先将xz解压为tar,然后再解压缩tar文件。
[root@localhost opt]# xz -d rabbitmq-server-generic-unix-3.10.0.tar.xz
[root@localhost opt]# tar -xvf rabbitmq-server-generic-unix-3.10.0.tar
4.打开/etc/profile配置文件,配置RabbitMQ环境变量。
[root@localhost opt]# vim /etc/profile
5.将RabbitMQ安装路径加入环境变量。
#RABBITMQ_HOME
export RABBITMQ_HOME=/opt/rabbitmq_server-3.10.0
export PATH=$PATH:$RABBITMQ_HOME/sbin
6.使配置文件生效并使用erl命令查看Erlang的版本信息。
[root@localhost opt]# source /etc/profile
7.启动RabbitMQ管理插件。为了更加方便地管理RabbitMQ,需要启动RabbitMQ的管理插件。
[root@localhost opt]# rabbitmq-plugins enable rabbitmq_management
3.2 X86架构的CentOS虚拟机中安装RabbitMQ
1.下载rabbitmq-server-3.10.0-1.el7.noarch.rpm版本的RabbitMQ安装包。RabbitMQ安装包下载地址rabbitmq/rabbitmq-server - Packages · packagecloud。
2.使用wget命令下载RabbitMQ安装包,这里我们将RabbitMQ安装包下载到/opt目录下。
[root@localhost opt]# wget --content-disposition "https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.10.0-1.el7.noarch.rpm/download.rpm?distro_version_id=140"
3.安装RabbitMQ。
[root@localhost opt]# rpm -ivh rabbitmq-server-3.10.0-1.el7.noarch.rpm
4.输入"y",回车继续安装,等待安装完成。
Is this ok [y/s/N]: y
5.启动RabbitMQ管理插件。为了更加方便地管理RabbitMQ,需要启动RabbitMQ的管理插件。
[root@localhost opt]# rabbitmq-plugins enable rabbitmq_management
3.3 Windows系统安装RabbitMQ
1.下载RabbitMQ
1.访问RabbitMQ官网(http://rabbitmq.com),点击【Get Started】选项。
2.选择【Download + Installation】选项,进入RabbitMQ下载页面。
3.在该页面中可以选择第一个推荐(recommended)的rabbitmq-sever-3.9.14.exe(3.9.14版本是在编写此教程时最新的稳定版本)进行下载。
4.找到直接下载(Direct Downloads)选项,然后点击rabbitmq-sever-3.9.14.exe进行下载。
2.安装RabbitMQ
1.双击rabbitmq-server-3.9.14.exe安装包,打开选择组件窗口,保持选项默认,直接点击【Next】下一步。
2.在选择安装位置窗口,自定义RabbitMQ安装配置。例如,安装在D:\ProgramSoftware\RabbitMQ Server目录下。然后点击【Install】进行安装。
3.等待RabbitMQ的安装完成,整个安装过程可能需要持续三分钟左右。
4.安装完成后,点击【Next】按钮进入下一步操作。
5.完成RabbitMQ安装后,点击【Finish】按钮,完成操作。
3.配置RabbitMQ
1.在【高级系统设置】-【环境变量】-【系统变量】选项下,创建RABBITQM_SERVER变量名,并对此变量名指定RabbitMQ的安装路径作为变量值。
2.双击【系统变量】-【Path】选项,在Path变量中添加RabbitMQ安装目录下的sbin配置。
%RABBITQM_SERVER%\sbin
4.启动RabbitMQ管理插件
为了更加方便地管理RabbitMQ,需要启动RabbitMQ的管理插件。
1.首先,将目录切换到RabbitMQ中的sbin目录下。
cd D:\ProgramSoftware\RabbitMQ Server\rabbitmq_server-3.9.14\sbin
也可点击开始菜单中的【RabbitMQ Command Prompt (sbin dir)】菜单选项,直接切换到sbin目录下。
2.执行以下命令,启动RabbitMQ管理插件。
rabbitmq-plugins enable rabbitmq_management
3.4 基于Docker安装RabbitMQ
如果你想基于Docker来安装RabbitMQ,使用下面的命令即可。
docker run \
-e RABBITMQ_DEFAULT_USER=yuanxin \
-e RABBITMQ_DEFAULT_PASS=123456 \
-v mq-plugins:/plugins \
--name rabbitmq \
--hostname rabbitmq \
-p 15672:15672 \
-p 5672:5672 \
--network yuantingxin \
-d \
rabbitmq:3.10.0-management
4.RabbitMQ基本操作
4.1 RabbitMQ常用命令
RabbitMQ服务操作常用的命令见下表。
|---------------------------|---------------------------------|
| 命令 | 作用 |
| rabbitmq-server | 直接启动,如果关闭窗口或需要在该窗口使用其他命令时应用就会停止 |
| rabbitmq-server -detached | 后台启动 |
| rabbitmq-server start | 启用服务 |
| rabbitmq-server restart | 重启服务 |
| rabbitmqctl status | 查看状态 |
| rabbitmqctl stop | 停止服务 |
1.进入到rabbitmq_server-3.10.0/sbin/目录下,然后以后台方式启动RabbitMQ服务。
[root@localhost opt]# cd rabbitmq_server-3.10.0/sbin/
[root@localhost sbin]# ./rabbitmq-server -detached
2.查看RabbitMQ的进程信息。
[root@user opt]# ps -ef | grep rabbitmq
root 700 18314 0 20:38 pts/1 00:00:00 grep --color=auto rabbitmq
4.2 RabbitMQ可视化效果展示
RabbitMQ主要端口号介绍见下表。
|--------|--------------------------|
| 端口 | 描述 |
| 5672 | RabbitMQ提供给编程语言客户端连接的端口号 |
| 15672 | RabbitMQ可视化管理端口号 |
| 25672 | RabbitMQ集群的端口号 |
1.在RabbitMQ安装的宿主机上通过浏览器访问http://localhost:15672地址,查看RabbitMQ的相关信息。
2.首次登录RabitMQ可视化管理页面时需要进行用户登录,RabbitMQ安装过程中默认提供了用户名和密码均为guest的用户,可以使用该账户进行登录。登录成功后会进入RabbitMQ可视化管理页面的首页。
在RabbitMQ可视化管理页面中,显示出了RabbitMQ的版本、用户信息等信息。管理面板的菜单介绍见下表。
|-------------|------------------------|
| 模块 | 描述 |
| Overview | 概览 |
| Connections | 查看连接情况 |
| Channels | 信道(通道)情况 |
| Exchanges | 交换机(路由)情况,默认提供了四类七个交换机 |
| Queues | 消息队列情况 |
| Admin | 管理员列表 |
3.直接关闭CentOS 7的防火墙,操作命令见下。
#关闭防火墙
systemctl stop firewalld
#开机禁用
systemctl disable firewalld
#查看状态
systemctl status firewalld
4.如果使用其他客户端主机访问RabbitMQ可视化管理页面,例如在主机上访问http://192.168.230.131:15672/地址,将提示"User can only log in via localhost"错误,是因为默认用户只能通过本地主机登录,默认用户不允许远程连接。如下图所示。
RabbitMQ默认提供的guests账号,此账号不能用作远程登录。我们可以创建一个新的账号并授予相应的管理权限来实现远程登录。
4.3 创建RabbitMQ账户
1.创建账户。创建一个名为"admin"且密码是"123456"的用户。
rabbitmqctl add_user admin 123456
2.设置用户角色。添加admin用户为administrator角色(设置为管理员权限)。
rabbitmqctl set_user_tags admin administrator
RabbitMQ用户角色分为四个级别,具体介绍见下表。
|---------------|------------------------------------|
| 用户角色 | 描述 |
| administrator | 管理员,可登录控制台、查看所有信息、可以对RabbitMQ进行管理。 |
| monitoring | 监控者,可登录控制台、查看所有信息。 |
| policymaker | 策略制定者,可登录控制台、指定策略。 |
| managment | 普通管理员,可登录控制台。 |
3.设置用户权限。设置admin用户的权限,将admin设置为远端登录。
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
4.查看用户权限。
rabbitmqctl list_user_permissions admin
5.查看vhost(/)允许哪些用户访问。
rabbitmqctl list_permissions -p /
6.查看用户列表。
rabbitmqctl list_users
7.修改用户密码。
rabbitmqctl change_password admin 123123
8.在主机上访问http://192.168.230.131:15672/地址,使用所创建的admin账户进行登录。
9.在上述RabbitMQ的登录窗口中点击【Login】登录按钮后,将进入RabbitMQ控制台窗口,表明我们所创建的admin新账号授予远程登录功能成功。
关注我,天天干货不断~