前言
虽然我并不是部署人员,但是自己私人测试环境的各类东东还是得自己安装的。尤其在规模不大的公司,基本安装部署工作都是后端的份内之事。那么最令人痛苦的,莫过于自己就是按照大佬教程走,但是就是过不去。尤其是初学者,解决问题的能力,还不足,往往就直接卡死了。最重要的是,学习阶段,大部分安装都是单机的,可以满足需求了。
- 官网地址:https://www.rabbitmq.com
- 下载地址:https://www.rabbitmq.com/download.html
一、windows 安装
1.1 安装配置Erlang
RabbitMQ 是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。要保证RabbitMQ 和Erlang的版本兼容,否则,安装RabbitMQ 成功后,服务是不能启动的,具体支持的最低最高版本,请参照该地址:https://www.rabbitmq.com/which-erlang.html
- 下载Erlong:https://www.erlang.org/downloads
- 安装Erlang,设置安装路径,一直next即可
- 安装完事儿后要记得配置一下系统的环境变量,此电脑–>鼠标右键“属性”–>高级系统设置–>环境变量–>“新建”系统环境变量:
ERLANG_HOME
- 配置path,选择编辑,点击新建,输入
%ERLANG_HOME%\bin
- 最后windows键+R键,输入cmd,再输入
erl
,看到版本号就说明erlang安装成功了。
1.2 安装配置RabbitMQ
- 下载RabbitMQ
下载地址:https://www.rabbitmq.com/install-windows.html#downloads - 安装;设置路径,一直next即可
C:\Program Files\RabbitMQ Server
- 再rabbitmq 的安装路径中找到sbin,双击
- 再sbin路径中输入cmd,点击回车
- 安装插件
rabbitmq-plugins.bat enable rabbitmq_management
1.3 启动 RabbitMQ
在 rabbitmq 的安装路径(C:\Program Files\RabbitMQ Server)中找到sbin,启动cmd,输入net start rabbitmq
,打开浏览器输入:http://localhost:15672/,默认的用户名和密码:guest
1.4 注意事项:
- Erlang的版本号与Rabbit MQ的版本号必须保持一致
- RabbitMQ是基于Erlang开发的,再安装RabbitMQ之前必须先安装配置Erlang
- C盘user文件夹计算机名字含有中文字符 ,更改计算机名字为英文
15 windows 服务命令
@echo off
rem DevToolscls
color 0a
TITLE RabbitMQ 操作工具SET RabbitMQ_PATH=C:
:nginx 路径
SET RabbitMQ_DIR=C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.9\sbin:start
CLS ECHO.
ECHO. ********************************************************************
ECHO. * *
ECHO. * *
ECHO. * RabbitMQ批处理操作工具 *
ECHO. * *
ECHO. * *
ECHO. ********************************************************************
ECHO.
ECHO. 当前RabbitMQ 位置 %RabbitMQ_DIR%
ECHO. :MENU ECHO. ********************************************************************tasklist|findstr /i erl.exeif ERRORLEVEL 1 echo RabbitMQ 未启动
ECHO. ********************************************************************ECHO. ECHO. [1] 启动RabbitMQ ECHO. [2] 关闭RabbitMQ ECHO. [3] 重启RabbitMQ ECHO. [4] 退 出
ECHO. ECHO.请输入选择项目的序号:
set /p id=
IF !id!@ ==@ (set id="" &GOTO MENU)
IF "%id%"=="1" (set id="" &GOTO rabbitMQStart)
IF "%id%"=="2" (set id="" &GOTO rabbitMQStop)
IF "%id%"=="3" (set id="" &GOTO rabbitMQRestart)
IF "%id%"=="4" (EXIT) else (set id="" &GOTO MENU)PAUSE>nullrem 启动RabbitMQ
:rabbitMQStartcall net start rabbitmqECHO.============================================================================ECHO. ECHO. GOTO MENUrem 关闭RabbitMQ
:rabbitMQStopcall net stop rabbitmqECHO.============================================================================ECHO. ECHO. GOTO MENUrem 重启RabbitMQ
:rabbitMQRestartcall :rabbitMQStopcall :rabbitMQStartECHO.============================================================================ECHO. ECHO. GOTO MENU
二、Linux Centos 7 安装
2.1 安装Erlang
- 因为rabbitMQ是Erlang语言编写的,所以我们首先需要安装Erlang。安装Erlang之前需要进行编译工具安装,通过执行以下命令就可以完成安装:
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
- 接下来是安装Erlang
rpm -Uvh https://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
- 查看Erlang 安装是否成功
# 输入命令检验是否安装成功,如下输出表示安装成功
erl -Version
- 通过以下步骤就完成了erlang安装,并验证成功。
2.2 安装 RabbitMQ
- 先安装依赖
yum install -y socat
- 安装 rabbitmq-server
通过 https://www.rabbitmq.com/install-rpm.html#downloads 获取 rabbitmq-server 的最新版本。
rpm -Uvh https://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm
- 查看rabbitmq-server是否已经安装
rpm -qa|grep rabbitmq
2.3 开启 RabbitMQ
#
whereis rabbitmq# 进入RabbitMQ sbin目录
cd /usr/lib/rabbitmq/sbin
其中sbin目录下文件说明:
文件 | 说明 |
rabbitmq-env | 环境配置脚本 |
rabbitmq-defaults | 默认参数设置脚本 |
rabbitmqctl | 管理工具脚本 |
rabbitmq-plugins | 插件管理工具脚本 |
rabbitmq-server | rabbitmq服务脚本 |
操作服务,启动默认监听端口:5672
# 前台运行,执行(不建议)
service rabbitmq-server start# 在后台启动Rabbit,并验证启动情况
service rabbitmq-server -detached & ps aux |grep rabbitmq
在 rabbitmq-server 命令后面添加一个
-detached
参数是为了能够让RabbitMQ服务以守护进程的方式在后台运行,这样就不会因为当前shell窗口关闭而影响服务。
2.4 操作命令
可以通过systemctl指令对RabbitMQ进行操作,rabbitMQ服务器名:rabbitmq-server,所以可以有如下操作:
# 启动服务
sudo systemctl start rabbitmq-server# 停止服务
sudo systemctl stop rabbitmq-server# 查看状态
sudo systemctl status rabbitmq-server# 自启动设置
sudo systemctl enable rabbitmq-server# 重启服务
sudo rabbitmq-server restart
2.5 查看状态
rabbitmqctl status
这样虽然我们已经将rabbitmq的服务正常启动了,但是我们在物理机的浏览器中输入ip:15672时,并不能连接,因为我们还没有配置维护插件和开启远程连接
2.6 安装插件
RabbitMQ的一大特色,就是支持诸多插件,其中最广为人知的就是Web管理插件。
# 开启管理页面插件
rabbitmq-plugins enable rabbitmq_management
继续执行
ps -ef |grep rabbitmq
这样就成功启动了平台插件,访问15672端口就能出现
2.7 开启远程访问
默认情况下,RabbitMQ的默认的guest
用户只允许本机访问
- 设置配置文件
cd /etc/rabbitmqcp /usr/share/doc/rabbitmq-server-3.5.6/rabbitmq.config.example /etc/rabbitmq/mv rabbitmq.config.example rabbitmq.config
- 重启rabbit-server服务
service rabbitmq-server restart
- 登录访问
在浏览器中输入ip:15672即可出现登录页面,用户名和密码都是guest。页面如果无法打开时,需要先查看防火墙是否关闭或者端口号是否咋防火墙中打开。
端口号 | 说明 |
4369 | erlang发现口 |
5672 | client端通信口 |
15672 | 管理界面ui端口 |
25672 | server间内部通信口 |
2.8 创建用户并授权
默认情况下,访问RabbitMQ服务的用户名和密码都是"guest",这个账户有限制,默认只能通过本地网络(如:localhost)访问,远程网络访问受限,所以在实现生产者和消费者之前,需要另外添加一个账户,并设置相应的访问权限。
# 进入RabbitMQ sbin目录
cd /usr/local/bin/# 添加用户
rabbitmqctl add_user {用户名} {密码}# 删除用户
rabbitmqctl delete_user {用户名}# 修改用户
rabbitmqctl change_password {用户名} {密码}# 当前用户列表以及用户对应的角色列表等其他信息
rabbitmqctl user_list
继续给用户授权
# rabbitmqctl set_user_tags {用户名} {权限}
# administrator:超级管理员标签
# monitoring:监控者标签
# policymaker:策略制定者标签
# management:普通管理者标签,仅可登陆管理控制台(启用management plugin的情况下)。
# none:无法登录控制台,通常就是普通的生产者和消费者。rabbitmqctl set_user_tags admin administrator# 设置用户权限
rabbitmqctl set_permissions -p VHostPath {用户名} {配置权限} {写权限} {读权限}# 查询所有权限
rabbitmqctl list_permissions [-p VHostPath]# 指定用户权限
rabbitmqctl list_user_permissions {用户名}# 清除用户权限
rabbitmqctl clear_permissions [-p VHostPath] {用户名}# 使用户user1具有vhost1这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
用户授权完成。
登录
成功登录进来了,rabbitMQ和管理平台成功启动。
- 超级管理员(administrator)
- 可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
- 监控者(monitoring)
- 可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
- 策略制定者(policymaker)
- 可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
- 普通管理者(management)
- 仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
- 其他
- 无法登陆管理控制台,通常就是普通的生产者和消费者。
2.12 防火墙
如果是外网登陆,需要将防火墙关掉
/etc/init.d/iptables stop
centOS7 关闭防火墙
# 关闭防火墙:
systemctl stop firewalld.service# 开启防火墙:
systemctl start firewalld.service# 关闭开机启动:
systemctl disable firewalld.service# 开启开机启动:
systemctl enable firewalld.service
三、Mac 安装
3.1 安装 RabbitMQ
一般来说,在 Mac 环境下安装 RabbitMQ分为两种方式:
- 下载 RabbitMQ 源文件,解压源文件之后进行安装。
- 通过 brew 命令安装。
在这里,我当然是推荐使用 brew 来安装,非常强大的 Mac 端包管理工具。如果还没安装 brew 的小伙伴,可以先安装 brew。有了 brew 之后,只需要一个简单的命令即可进行rabbitmq服务的自动安装。
brew install rabbitmq
- RabbitMQ安装后的路径为:
/usr/local/Cellar/rabbitmq/
(版本根据安装版本定) - RabbitMQ配置文件路径为:/usr/local/etc/rabbitmq/rabbitmq-env.conf
至此安装完成。
3.2 启动 RabbitMQ
安装的路径是 /usr/local/Cellar/rabbitmq/xxx
,具体情况要视版本而定
进入安装目录,执行命令:
# 进入安装目录,注意你的安装版本可能不是3.8.3
cd /usr/local/Cellar/rabbitmq/3.8.9_1
# 启动方式一:
brew services start rabbitmq
# # 启动方式二:当前窗口启动
sbin/rabbitmq-server
启动成功,就是这么简单。启动控制台之前需要先开启插件:
# 进入安装目录,注意你的安装版本可能不是3.8.3
cd /usr/local/Cellar/rabbitmq/3.8.9_1/
# 启用rabbitmq management插件
sudo sbin/rabbitmq-plugins enable rabbitmq_management
3.3 验证
接下来可以在浏览器打开 http://localhost:15672,可以看到RabbitMQ 的管理页面。默认情况下,访问RabbitMQ服务的用户名和密码都是"guest",这个账户有限制,默认只能通过本地网络(如:localhost)访问,远程网络访问受限。
3.4 配置远程访问
3.4.1 修改节点ip地址配置
打开RabbitMQ配置文件,将节点ip地址修改为空格
vim /usr/local/etc/rabbitmq/rabbitmq-env.conf
3.4.2 添加用户
3.4.2.1 命令行
## 进入sbin目录
cd /usr/local/Cellar/rabbitmq/3.8.9_1//sbin## 添加账号
./rabbitmqctl add_user admin admin## 添加访问权限
./rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"## 设置超级权限
./rabbitmqctl set_user_tags admin administrator
然后终端中 brew services restart rabbitmq 启动mq。
3.4.2.2 控制后台方式
- 浏览器访问 127.0.0.1:15672 访问控制后台,登录(用户名与密码默认均为guest)
- 添加完成后,点击名字跳转设置权限,给最高权限:
3.5 REST API
终于来到重点了,对于程序员来说,看到有现成的API可以调用,那真是太幸福了。自动化监控和一些需要批量的操作,通过调用API来实现是最好的方式。比如有一些需要初始化的用户和权限,就可以通过脚本来一键完成,而不是通过页面逐个添加,简单又快捷。下面是一些常用的 API:
# 概括信息
curl -i -u guest:guest http://localhost:15672/api/overview# vhost 列表
curl -i -u guest:guest http://localhost:15672/api/vhosts# channel 列表
curl -i -u guest:guest http://localhost:15672/api/channels# 节点信息
curl -i -u guest:guest http://localhost:15672/api/nodes# 交换机信息
curl -i -u guest:guest http://localhost:15672/api/exchanges# 队列信息
curl -i -u guest:guest http://localhost:15672/api/queues