RabbitMQ的安装

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/erlang
make && make install
编辑 /etc/profile,最下行添加:
ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export 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.service
Job 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/
出现了页面:


image.png

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

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

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

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

你可能感兴趣的:(RabbitMQ的安装)