erlang安装没有bin目录_RabbitMQ的安装

在Linux上安装RabbitMQ时遇到Erlang缺少bin目录的问题,导致安装失败。通过尝试不同的安装方法,如yum、rpm、忽略依赖等,最终发现官网提供了tar格式的安装包,成功解决。在安装过程中,还遇到了启动错误、防火墙配置、管理插件启用等问题,逐一解决后成功访问到RabbitMQ管理页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

735012f3ba8c162c284901aa3f4d6bf4.png

RabbitMQ:3.8 erlang:22.2

之前使用过RabbitMQ进行开发,但是从来没有正经的安装过。在本地电脑呢,就使用windows版本的RabbitMQ安装包,而在生产环境呢,运维已经帮我们搭建好了,所以啥事无用操心。

一切都是风平浪静的模样,知道我想要深入了解RabbitMQ的时候,才发现我都没有在Linux上安装过,那么谈何学习hello world,世界的美好我看不到啊。于是呢,我就开启了一段自虐的过程。

我知道安装RabbitMQ的先决条件是安装erlang,哈哈,你骗不了我,于是速速的从官网下载了22.2版本的erlang,基本上是最新版本的。照着百度给出的安装步骤,就顺利安装好了。命令行输入erl,出现了版本号等信息,键入halt().退出了erlang的控制台。至此呢,一切很美好。整个步骤可以简要描述如下:

在erlang官网下载最新的tar.gz(22.2),解压,进入目录:./configure --prefix=/usr/local/erlangmake && make install编辑 /etc/profile,最下行添加:ERLANG_HOME=/usr/local/erlangexport PATH=$PATH:$ERLANG_HOME/binexport ERLANG_HOME然后执行 source /etc/profile验证:任意目录   erl,回车halt().   退出

接下来看了一下版本对应的问题,最新的RabbitMQ是3.8,跟erlang的版本是匹配的,这一点可以从RabbitMQ的官网去查看。下载了一个适用于CentOS的RabbitMQ rpm包,进行安装,于是就蹦出了一个错误:

Error: Package: rabbitmq-server-3.8.3-1.el7.noarch (/rabbitmq-server-3.8.3-1.el7.noarch)           Requires: erlang >= 21.3           Available: erlang-R16B-03.18.el7.x86_64 (epel)               erlang = R16B-03.18.el7 You could try using --skip-broken to work around the problem** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:redhat-lsb-core-4.1-27.el7.centos.1.x86_64 has missing requires of /usr/sbin/sendmail

起初怀疑redhat-lsb-core-4.1-27.el7.centos.1.x86_64 这个没有安装,一查看发现已经是最新版本的了。选择--skip-broken进行rpm进行安装,依然报错。于是开始了长达4个小时的百度搜索之旅,逐渐发现yum这个命令以及背后的逻辑有点复杂,类似于maven,管理所需依赖。

但是为啥我安装了最新版本的依赖,依旧是提示我erlang版本太低。根据我的百度搜索结果,大概是说有一个仓库是由社区维护的,但是里面放入的erlang都太老了。当yum安装RabbitMQ,它分析出需要erlang依赖,于是就去找仓库中的可用erlang列表,发现找了一圈,全是低版本的,于是直接不干了,抛出错误。那是不是改成阿里云的镜像仓库就好了呢,我发现配置里面,几个源都是阿里云的,说白了阿里云也只是定期同步国外的仓库,不会自作聪明的加入新版本。于是呢又去RabbitMQ的官网查看Package Cloud或者Bintray这种安装方式,从头到尾看了一遍,原谅我的英文不好,单词意思明白了,内在逻辑一塌糊涂。没有列表或者之类,让我分不清哪个对哪个有用,哪些我不用考虑,总之,这条路在进行了简单的尝试之后,走不通。

接下来的百度中,我发现可以使用rpm -ivh --nodeps这种方式进行安装,意思是忽略依赖,依赖自己搞定,我看官网就依赖三种东西,而我都安装好了。嗯哼,安装倒是没问题,启动RabbitMQ又报错了:

Redirecting to /bin/systemctl start rabbitmq-server.serviceJob for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details./usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled

结合百度的说法,可以自己设置yum的源,添加.repo之类的东西,写进去一些配置,反正实验了几次,不对头。

我陷入了深深的怀疑之中,不就是一个mq吗,这种东西应该很容易安装,为什么会出现感觉好难的样子。那之前运维的人为什么没有觉得这个难装呢?我可以怀疑那时候RabbitMQ版本还不是太高,erlang勉强还能够匹配当前的版本,比如3.6之类的。

现在,可是另一番景象了。我不相信官网只提供rpm格式,不提供tar格式。于是继续在官网中去寻找,结果,真的有tar格式的。

这下子我明白我的错误了,以为首页所展示的安装和下载,就是最适合的安装和下载。这种想法是不对的。下载网址:https://www.rabbitmq.com/install-generic-unix.html

接下来顺利多了解压,启动。我先前台启动,关闭试着后台启动,但爆了一个错误:

init terminating in do_boot

按照咱们伟大的百度的说法,应该是要删除RabbitMQ_HOME/var目录子啊的所有文件,我照着做一遍,真的是。感谢百度。

现在能够顺利启动,但我想通过端口15672访问控制台怎么办呢?先把阿里云上的端口15672 5672端口开放,linux的防火墙也开放这两个端口。

然后还需要启动管理插件:./sbin/rabbitmq-plugins enable rabbitmq_management
意外哟,出现了错误:

corrupt_or_missing_cluster_files

我没有弄集群,这个不科学。本着不行就重启的思路,我关闭了mq,然后开启插件,然后启动,一切ok。看来这个插件启用不能再开了mq之后啊。

现在访问管理页面:http://{node-hostname}:15672/
出现了页面:

98bd0203ce4ce0bd57b70e8b437a5866.png

我发现RabbitMQ提供了一个guest/guest的账户,但是呢,它是不允许远程访问的。那么,只好自己配置用户了。

列出所有用户: ./rabbitmqctl list_users添加用户: ./rabbitmqctl add_user 用户名 密码删除用户: ./rabbitmqctl delete_user 用户名授予用户管理员角色:./rabbitmqctl set_user_tags 用户名 administrator给用户分配  配置  读  写  等权利:./rabbitmqctl  set_permissions -p /  用户名 '.*' '.*' '.*'

经过了这几步,再次登录,就进入了管理页面。

感慨:所谓工作经验,不是你用到了什么高大上的技术,而是,你走过了很多坑,然后,就可以在接下来的时间少走很多弯路。这个mq安装最多半小时,愣是被我弄成了一天,这个效率。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值