mac部署rabbitmq流程与异常总结
环境准备
操作系统:macOS Big Sur 11.2.1 版本
编译环境:Erlang/OTP rabbitmq是通过erlang语言来开发的,所有需要通过erlang相关的编译环境,我这块是通过homebrew来进行Erlang的安装的,安装命令如下:
brew install erlang
rabbitmq安装包:rabbitmq-server-generic-unix-3.8.12.tar.xz 下载地址为官网如下:
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.12/rabbitmq-server-generic-unix-3.8.12.tar.xz
部署流程
安装Erlang/OTP编译环境,保证该环境的正常运行,如果您已经安装完成,该步骤可以省略
下载rabbitmq安装包并解压
首先通过我上面写的地址讲安装包进行下载并解压,解压完成后出现的是rabbitmq_server-3.8.12的文件夹,该文件夹里面包含了运行所需要的所有的命令和资源信息,同时该文件夹将会成为你后续的所有操作的基础路径,包括常用的rabbitmq的启动命令和插件控制等,所以在操作前可以先将该文件夹放到一个你认为最合适的位置再进行后续的操作,例如/usr/local这样的工具常用存储地址;
启动rabbitmq-server服务
首先进入 rabbitmq_server-3.8.12 所在文件夹,进入sbin目录,在当前目录下执行rabbitmq-server启动命令,命令如下:
./rabbitmq-server
启动的过程可能会一波三折,也可能会比较顺利,我在启动的过程中主要碰到了下面的异常总结中的两个问题,如果启动过程没有报错,并且出现了如下的提示:
Configuring logger redirection## ## RabbitMQ 3.8.12## ############ Copyright (c) 2007-2021 VMware, Inc. or its affiliates.###### ############ Licensed under the MPL 2.0. Website: https://rabbitmq.comDoc guides: https://rabbitmq.com/documentation.htmlSupport: https://rabbitmq.com/contact.htmlTutorials: https://rabbitmq.com/getstarted.htmlMonitoring: https://rabbitmq.com/monitoring.htmlLogs: /xxx/rabbitmq_server-3.8.12/var/log/rabbitmq/rabbit@xxx.log/xxx/rabbitmq_server-3.8.12/var/log/rabbitmq/rabbit@xxx_upgrade.logConfig file(s): (none)Starting broker... completed with 0 plugins.
恭喜你,你的rabbitmq已经正确启动成功啦,默认启动的端口是5672
将相关命令加入全局命令
当前如果你不在服务命令所在文件夹中,执行相关的命令会报命令无法找到的异常,这是由于当前命令还不是一个全局命令造成的,只需要将命令行文件夹加入到PATH中即可,假如你安装在了 /usr/local 文件夹下,则只需要在 .bashrc 中添加如下语句:
export PATH="/xxx/rabbitmq_server-3.8.12/sbin:$PATH"
如果你使用的是zsh,则只需要在 .zshrc 文件中添加即可,然后执行下面的生效命令:
source .zshrc
这个时候就可以在任意文件夹下执行rabbitmq的相关命令啦
启动RabbitMq管理后台插件
首先查看当前可用的插件,查看插件的命令如下:
rabbitmq-plugins list
查看结果如下:
Listing plugins with pattern ".*" ...Configured: E = explicitly enabled; e = implicitly enabled| Status: * = running on rabbit@zhang|/
[ ] rabbitmq_amqp1_0 3.8.12
[ ] rabbitmq_auth_backend_cache 3.8.12
[ ] rabbitmq_auth_backend_http 3.8.12
[ ] rabbitmq_auth_backend_ldap 3.8.12
[ ] rabbitmq_auth_backend_oauth2 3.8.12
[ ] rabbitmq_auth_mechanism_ssl 3.8.12
[ ] rabbitmq_consistent_hash_exchange 3.8.12
[ ] rabbitmq_event_exchange 3.8.12
[ ] rabbitmq_federation 3.8.12
[ ] rabbitmq_federation_management 3.8.12
[ ] rabbitmq_jms_topic_exchange 3.8.12
[ ] rabbitmq_management 3.8.12
[ ] rabbitmq_management_agent 3.8.12
[ ] rabbitmq_mqtt 3.8.12
[ ] rabbitmq_peer_discovery_aws 3.8.12
[ ] rabbitmq_peer_discovery_common 3.8.12
[ ] rabbitmq_peer_discovery_consul 3.8.12
[ ] rabbitmq_peer_discovery_etcd 3.8.12
[ ] rabbitmq_peer_discovery_k8s 3.8.12
[ ] rabbitmq_prometheus 3.8.12
[ ] rabbitmq_random_exchange 3.8.12
[ ] rabbitmq_recent_history_exchange 3.8.12
[ ] rabbitmq_sharding 3.8.12
[ ] rabbitmq_shovel 3.8.12
[ ] rabbitmq_shovel_management 3.8.12
[ ] rabbitmq_stomp 3.8.12
[ ] rabbitmq_top 3.8.12
[ ] rabbitmq_tracing 3.8.12
[ ] rabbitmq_trust_store 3.8.12
[ ] rabbitmq_web_dispatch 3.8.12
[ ] rabbitmq_web_mqtt 3.8.12
[ ] rabbitmq_web_mqtt_examples 3.8.12
[ ] rabbitmq_web_stomp 3.8.12
[ ] rabbitmq_web_stomp_examples 3.8.12
启动插件的命令是:
rabbitmq-plugins enable xxx
停止插件的命令是:
rabbitmq-plugins disable xxx
上面列表里面的 rabbitmq_management 插件就是管理后台,通过启动插件命令将该插件启动起来:
rabbitmq-plugins enable rabbitmq_management
启动结果如下:
Enabling plugins on node rabbit@xxx:
rabbitmq_management
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatch
Applying plugin configuration to rabbit@xxx...
The following plugins have been enabled:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatchstarted 3 plugins.
管理后台的默认端口是 15672,通过 http://localhost:15672 就可以直接访问RabbitMq管理后台啦,管理后台的默认用户名是 guest,密码是 guest,但是这个地方有一个主要注意的地方,guest这个用户名只能在本机通过 localhost 或 127.0.0.1 来进行访问,其他IP或域名不可以通过默认的guest用户名来进行访问
常用命令
rabbitmq-server : 服务节点管理
后台启动服务
rabbitmq-server -detached
rabbitmqctl : 命令行管理工具
停止指定运行节点
rabbitmqctl shutdown {nodeName}
查看帮助信息,也可以查看单个命令的帮助信息
rabbitmqctl help [commandName]
添加用户名和密码
rabbitmqctl add_user [username] [password]
删除用户
rabbitmqctl delete_user [username]
用户列表
rabbitmqctl list_users
rabbitmq-plugins : 插件管理工具
可用插件列表
rabbitmq-plugins list
启用 rabbitmq_top 插件
rabbitmq-plugins enable rabbitmq_top
停用 rabbitmq_top 插件
rabbitmq-plugins disable rabbitmq_top
用户列表
rabbitmqctl list_users
rabbitmq-diagnostics : 诊断、监控与健康检查工具
rabbitmq-queues : 队列管理工具
rabbitmq-upgrade : 安装升级工具
注意事项
RabbitMq默认启动的是5672端口,所以在启动前要保证5672端口没有被占用
RabbitMq管理系统插件默认启动的是15672端口
启动过程中默认会启动epmd,对应的端口是4369,是Erlang的端口/结点名称映射程序,用来跟踪节点名称监听地址
异常总结
编译服务报错: ./rabbitmq-server: line 80: erl: command not found
我在安装的过程中没有认真的查看官方文档,所以下载完成并解压后直接在rabbitmq的文件夹下的sbin目录下执行了启动服务的命令: ./rabbitmq-server ,然后就产生了上面的报错信息,这样的报错信息主要是由于没有安装 Erlang 导致的,我采用的是homebrew来进行安装的,安装命令如下:
brew install erlang
由于homebrew会自动将Erlang的编译命令加载到全局PATH中,所以安装完成后就可以全局执行erl命令,如果是采用其他方式安装的话,别放了将安装的命令文件夹加入到PATH中
启动过程中报错: ERROR: epmd error for host xxx: address (cannot connect to host/port)
在执行启动命令:./rabbitmq-server 后,编译虽然完成,但是启动还是失败了,出现了如上所示的错误提示,通过查询得知该问题的解决方案是在系统的/etc/hosts文件中增加一条IP与主机名的映射关系,具体原因由于我也没有去深入的查看源码,了解的也不是特别清楚,所以在这里就不敢妄下断言啦,处理方案如下:
##假如原来的hosts文件如下:
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost##假如你的主机名:xxx ;修改后的hosts文件如下:
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 xxx
修改完成后然后保存,这样再去启动,刚才的这个报错应该就可以解决啦,在修改系统的hosts文件的时候,可能会碰到一个权限的问题,主要是由于hosts文件是属于系统层级的root用的,当前用户去修改可能会出现无法修改的情况,这样情况只需要如下所示:
sudo su - root#弹出密码提示,输入你的用户登录密码即可进入root用户,这样就可以修改保存啦
erlang与rabbitmq版本不符异常:init terminating in do_boot
如果在执行rabbitmq-server命令的时候出现这样的异常信息:{“init terminating in do_boot”,{undef,[{rabbit,boot,[],[]},{init,start_em,1,[]}{init,do_boot,3,[]}]}},则表示系统中当前安装的Erlang版本与RabbitMq的版本不相符,造成了代码编译无法通过,例如我们现在安装的这个3.8.12版本的RabbitMq就需要Erlang的版本在 22.3~23.X 之间,否则就可能会出现编译异常的情况,下面罗列了几个常用的版本匹配信息,更加详细的可以通过RabbitMq的官网来查看: https://www.rabbitmq.com/which-erlang.html
rabbitmq版本 | Erlang要求最低版本 | Erlang要求最高版本 | 备注 |
---|---|---|---|
3.8.12 、3.8.11 、3.8.10 、 3.8.9 | 22.3 | 23.x | |
3.8.8 、 3.8.7 、3.8.6 、3.8.5 、3.8.4 | 21.3 | 23.x | |
3.8.3 、3.8.2 、3.8.1 、3.8.0 | 21.3 | 22.x | |
3.7.27 、3.7.26 、3.7.25 、3.7.24 、3.7.23 、3.7.22 、3.7.21 、3.7.20 、3.7.19 | 21.3 | 22.x | |
3.7.18 、3.7.17 、3.7.16 、3.7.15 | 20.3 | 22.x |
如果Erlang版本太低的话,如果原来的Erlang是通过Homebrew来安装的话,可以通过Homebrew命令来进行更新,更新命令如下:
brew upgrade erlang
mac部署rabbitmq流程与异常总结相关推荐
- docker 部署rabbitmq,k8s部署rabbitmq集群,跟踪和监控rabbitmq
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 rabbit原理和架构可以参考https://blog.csdn.net/luanpeng825485697/article/details/8208 ...
- BERT模型从训练到部署全流程
BERT模型从训练到部署全流程 Tag: BERT 训练 部署 缘起 在群里看到许多朋友在使用BERT模型,网上多数文章只提到了模型的训练方法,后面的生产部署及调用并没有说明. 这段时间使用BERT模 ...
- Docker安装部署RabbitMQ
https://blog.csdn.net/super_rd/article/details/70792746 http://muxiulin.cn/archives/category/rabbit ...
- Docker实战:Docker安装部署RabbitMQ
使用Docker安装部署RabbitMQ 1.docker search rabbitmq:management 2.docker pull rabbitmq:management 注意:如果dock ...
- Windows异常学习笔记(二)—— 内核异常处理流程用户异常的分发
Windows异常学习笔记(二)-- 内核异常处理流程&用户异常分发 用户层与内核层异常 内核异常 分析 KiDispatchException 分析 RtlDispatchException ...
- 使用Docker部署RabbitMQ集群
使用Docker部署RabbitMQ集群 概述 本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘. Windows10 ...
- mac中rabbitmq的安装
安装brew,在命令窗口执行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/instal ...
- Spring中部署Activiti流程定义的三种姿势
摘要:本文对工作流Activiti框架中流程定义的部署进行了详细说明介绍. 本文分享自华为云社区<项目中工作流部署详细解析!Spring中部署Activiti流程定义的三种姿势>,作者:攻 ...
- docker rabbitmq_Docker部署RabbitMQ集群
安装rabbitmq 下载Docker镜像 docker pull rabbitmq:3.7.12-management 安装RabbitMQ mkdir rabbitmq # node1 172.1 ...
- K8S 部署rabbitmq集群
K8S 部署rabbitmq集群 版本介绍 名称 版本 k8s 1.18 rabbitmq 3.8 命名空间:rabbitmq 我这里已经建立 configmap 配置文件 [root@k8s-mas ...
最新文章
- TX2---远程操作
- python描述符魔术方法_Python所有特殊方法、魔术方法、 钩子
- 深度玩转神经网络——基于Keras
- JS文件中加载jquery.js(JS文件添加其他JS文件)
- 皮一皮:据说烤红薯都是这样的...
- 【机器学习PAI实践五】机器学习眼中的《人民的名义》
- oppo售后解锁工具_Realme X50/X50 Pro 5G版解锁BL获取完美ROOT权限全套详细刷机
- Intellij IDEA 那些隐藏好用的小技巧
- Java变量(静态变量/成员变量/局部变量)初始化的问题
- C 怎么读取Cpp文件_opencv从yaml文件中读取矩阵(c++)
- python 函数中参数的传递方式(三分钟读懂)
- android实用测试方法之Monkey与MonkeyRunner
- iOS微信运动 刷分
- UGNX1957安装说明视频教程
- 饿了么推荐系统:从0到1
- Pycharm内部打不开生成的词云图,且显示Image not loaded,Try to open it externally to fix format problem,外部文件夹中图片可显示
- 直播网站并发测试软件,HTTP/HLS/RTMP超级负载测试工具
- 20180418小测
- 数据库实验4---数据完整性
- Unity debugger detected e0030 sentinel ldk protection system