当今市面上有很多主流的消息中间件,如ActiveMQ
、RabbitMQ
,Kafka
,以及阿里巴巴自主开发RocketMQ
等。这些消息中间件各有长短,但如今市面上使用最多的应该还是rabbitmq
,社区也十分活跃。这篇文章中就来简单记录下rabbitmq
在centos7
环境下的安装及配置过程。这里选择版本是目前最新版3.8.16
,其他版本的安装可能不适用,仅供参考。
几乎所有步骤中都有截图说明,由于分屏后分辨率太高,截取的图片太大,太占页面,所以使用的是渣渣笔记本100%缩放下屏幕截图,看起来不是很清晰,大家凑合着看哈。如果有什么地方写错了,或者各位大佬有什么补充,也欢迎大家进行评论。
Erlang
rabbitmq
是使用Erlang
语言开发的,所以在安装rabbitmq
之前,需要先安装Erlang
。不同版本的rabbitmq
对Erlang
语言的版本要求不同,具体可根据官网列出的依赖关系选择,点击查看。先进入Erlang
下载地址下载Erlang
。
点击链接,跳转后的页面如下所示
可以点击右上角下载到本地,再上传,也可以使用截图右下角中展示的wget
命令直接下载到服务器上,还可以直接使用截图中间展示的yum
命令直接安装。这里我选择先下载到本地(本地备个份),再通过ftp
上传到服务器。
rabbitmq 3.8.16
下载地址,选择centos7
的,下载到本地。
将上面两步中下载的安装包通过ftp
上传到服务器的 /opt/software/rabbitmq
位置,然后进行安装。
# 进入上述安装包下载位置
$ cd /opt/software/rabbitmq
# 安装Erlang
$ rpm -ivh erlang-23.3.3-1.el7.x86_64.rpm
# 安装rabbitmq
$ rpm -ivh rabbitmq-server-3.8.16-1.el7.noarch.rpm
在执行上述安装命令中,Erlang
安装成功了,但在安装rabbitmq
时却失败了,提示缺少socat
依赖,如下图所示。
socat
是一个多功能的网络工具,名字来源于SOcket CAT
,是netcat
的增强版。这里我使用的是yum
命令进行安装。
$ yum install socat -y
socat
安装完毕后,再来安装rabbitmq
,这一次安装成功了。
安装成功后,尝试启动
# 在任意目录下执行下面的命令,rabbitmq-server可以通过tab建补全(我这里纯手打),可以不加.service后缀
$ systemctl start rabbitmq-server
然后查看启动了哪些进程
可以通过systemctl status rabbitmq-server
命令查看启动状态
从上图中可以看到rabbitmq
已经成功启动起来了。
如果需要关闭,则可以通过systemctl stop rabbitmq-server
即可。
# 启动
$ systemctl start rabbitmq-server
# 查看状态
$ systemctl status rabbitmq-server
# 重启
$ systemctl restart rabbitmq-server
# 关闭
$ systemctl stop rabbitmq-server
使用过rabbitmq
的应该都知道,rabbitmq
是自带了图形化操作界面插件的,端口默认是15672
。图形化界面插件默认是关闭状态,可以通过下述命令进行开启:
$ rabbitmq-plugins enable rabbitmq_management
启用插件命令执行完毕后,可以通过lsof -i:<端口>
命令查看一下端口状态
接下来通过浏览器访问一下,http://ip:15672
,默认用户名和密码都是guest
。
登录的时候却发现报错了,如上图所示,翻译过来就是说“该用户只能在本地主机进行登录”,这是rabbitmq
默认的访问控制,详情可查看官网相关的配置说明,地址在这里,后面在配置一节中我会单独进行说明。
既然只能在本地登录,那我就到VMware
中直接操作好了
登录成功后看到我们熟悉的页面了
在接下来我会简单提一下rabbitmq
的配置文件,以及如何处理上述的只能在本地进行登录的问题。
安装成功后,在/usr/share/doc/rabbitmq-server-x.x.x
(x.x.x表示版本号)目录下会有一个rabbitmq.conf.example
的配置文件,但貌似新版本中移除了,只有旧版本中才有,至少3.8.16
这个版本中是没有。
可以使用rpm -ql <软件名>
命令查看rabbitmq
都安装了哪些文件来验证一下。
$ rpm -ql rabbitmq-server
通过上述命令的结果,可以发现,3.8.16
这个版本中确实是没有rabbitmq.conf.example
这个文件,那还能咋办,官网查呗!(如果你安装的是旧版本,有这个文件,也请接着往下看)
我们可以到官网上查看rabbitmq
的配置说明,这里给出地址,打开后如下图所示
上图中红框导航部分翻译过来就是:
rabbitmq.conf
以及 可选配置advanced.config
guest
用户从任意网络登录回到配置说明中,点击第一点或往下滚动网页,查看配置方法,截图如下:
截图中框出来的部分就是接下来要看的认证、授权
,不然外网没法登录管理控制页面。点击链接进入相应页面,可以看到下面这么一段,明确说明了默认用户只能用于本地连接,远程连接会被拒绝,同时,最下面一行也说明了生产环境不应使用默认账户,而是应该创建一个新的账户来代替。
当然,非要使用guest
用户访问也是可以的,见下图所示
先来测试一下,上面这个方法行不行。由于这个版本没有配置文件,所以我们需要手动创建一下。
注意,文件名一定要是
rabbitmq.conf
,后缀一定要是conf
,不能是config
,config
是高级配置使用的,二者的语法是不同的。
$ cd /etc/rabbitmq/
# 创建并编辑配置文件
$ vim rabbitmq.conf
# 在文件中添加一行 loopback_users = none
# 保存,退出
重启rabbitmq
$ systemctl restart rabbitmq-server.service
# 没有报错,没有消息就是好消息。再查看状态,也是成功的
$ systemctl status rabbitmq-server.service
接下来就可以在win10
本地直接通过guest
账号登录了。
除了上面这种方式外,还有其他方式来进行配置,回到官网配置信息页面,找到关于配置文件的描述,大致就是说源码库中包含了一个名叫rabbitmq.conf.example
的文件,这个文件中包含了我们可能会使用到的绝大多数配置示例,对于比较晦涩的配置,则是被隐藏了。如下图
点击红框中的链接即可跳到github
中的配置文件示例页面,如下图所示
接下来将这个文件下载下来(可以手动将里面的内容复制出来),上传到/etc/rabbitmq/
中,命名就是rabbitmq.conf
,也就是说,需要将之前的配置文件覆盖掉,打开新的配置文件,可以发现,里面的所有配置项前面都有井号#
注释。在配置文件找到如下所示的配置
光标上面的注释解释起来大概就是:如果你想允许guest
用户从任意网络进行访问,那就取消下面那行的注释。我试了一下,将光标位置出的注释去掉,保存重启,发现也是能从本地使用guest
用户进行登录访问的。
介绍完了两种方法后,接下来按照官网推荐的方式新建用户来进行访问,先将上面配置文件中的去掉的注释还原回来,让guest
还是只允许本地访问(同时建议guest
的密码改了,或者直接删除掉guest
用户)。
打开上面第3节中第一张截图中的链接,找到用户权限管理,官网讲的很细,用户的增删改查都列出来了,如下图所示
接下来按照官网的说明创建一个管理员用户admin
,密码也是admin
(密码不建议使用这个,我这里为了记起来方便这么取)
$ rabbitmqctl add_user admin admin
接下来给用户授权
# 授予admin用户默认visual host “/”下的所有资源的配置、写、读权限
$ rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
# 授予admin用户administrator角色
$ rabbitmqctl set_user_tags admin administrator
上述操作也可以在可视化管理页面上进行操作
添加完成后,点击列表中用户名即可进入该用户的管理页面对该用户进行授权,通常是不同的用户授予不同的visual host
权限,visual host
可以在右侧的Visual Hosts
中进行新增。
到此为止,rabbitmq
在centos7
中的安装就基本上差不多了。如果有什么写错了的,请各位大佬进行指正。