史上最全,centos7安装rabbitmq3.7x(传统方式+Docker)
每天多学一点点~
写博客的目的不仅在于分享,也是为了方便日后复习巩固
话不多说,这就开始吧…
文章目录
1.序
国网服务器原本已经装好了rabbitmq,无奈版本太低,要装到制定版本。遂自己重新装一下。本次选用原始的方式安装,后面有空学习一下用docker部署。好吧,我承认我也是标题党~~~
erlang与rabbitmq对应版本
系统环境
操作系统:centos7 内核 3.10.0-862.el7.x86_64
erlang :otp_src_20.3.tar.gz
rabbitmq:rabbitmq-server-3.7.14-1.el6.noarch.rpm
2.安装erlang
RabbitMQ是由erlang语言开发的高性能的消息队列中间件,所以在安装RabbitMQ时需要安装erlang。
- 安装预环境
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
- 下载erlang
erlang服务器在国外,不推荐直接用wget命令下载,太卡,直接去官网下载
elang官网
- 解压并安装
tar -xvf otp_src_20.3.tar.gz #解压
进入解压好的otp_src_20.3目下
./configure --prefix=/usr/local/erlang --without-javac
make && make install
因为博主虚拟机上已经装好了java,所以不需要javac。配置安装时间会稍微有点长
- 配置erlang环境变量
vim /etc/profile
添加配置:
---------------
export PATH=$PATH:/usr/local/erlang/bin
----------------
source /etc/profile # 使环境变量立即生效。
查看环境变量配置:
echo $PATH
5. 验证Erlang 安装成功
执行 【erl】,进入编辑器;
若安装完之后出现 ls 未找到命令之类,因为环境变量被修改,执行:
export PATH=/bin:/usr/bin:$PATH
到这里为止,erlang安装完毕。后面的坑马上就要来了~
3.安装rabbitmq
前文已经说了,erlang与rabbitmq有版本对应~此处我们选择3.7.14版本
- 下载rabbitmq(推荐rpm包)
博主这里也是从官网下载的
Rabbitmq官网
进入Githup,选定版本下载
- 安装
rpm -ivh rabbitmq-server-3.7.14-1.el6.noarch.rpm
出现报错,如下:
原因是缺少socat依赖
解决方法
yum -y install socat
再次执行rpm命令,依然报错
这里就是坑的地方,明明下载了对应版本,为何还会出现(然而默认yum仓库中的版本较低),博主查了好多资料,用如下方法解决:
查看自己的erlang版本
果然比20.3要低
幸好 githup上的erlang 有源,点击打开,找到对应版本,编辑yum源
githup上已经明确的说明
1. vim /etc/yum.repos.d/rabbitmq-erlang.repo #编辑mq的yun源
2. 输入如下命令
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
3. yum clean all
4. yum makecache
5. yum info erlang # 再一次查看 yum 源中的 erlang 版本
6. yum install erlang # 更新到源中的erlang
7. yum install rabbitmq-server-3.7.14-1.el6.noarch.rpm(yum就会去自动下载对应依赖包)
可能有小伙伴yum info erlang 时候没有出现对应的软件包
升级一下服务器上的yum源就可以了,阿里浙大的都行
yum -y update,过程可能比较漫长,升级好了重新按照上述步骤操作一遍
这样,我们的rabbitmq就安装完成了。
4.配置rabbitmq的管理界面
rabbitmq默认是关闭管理界面的
-
启动mq
systemctl start rabbitmq-server -
查看服务启动状态
rabbitmqctl status -
启用RabbitMQ WEB管理界面
rabbitmq-plugins enable rabbitmq_management
rabbitmq的管理界面默认端口是15672,windows版本记得没错的话默认账号密码是guest,linux上从rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问 -
rabbitmq的用户管理
(1) 新增一个用户
rabbitmqctl add_user Username Password
(2) 删除一个用户
rabbitmqctl delete_user Username
(3) 修改用户的密码
rabbitmqctl change_password Username Newpassword
(4) 查看当前用户列表
rabbitmqctl list_users
(5) 给用户设置管理员权限
rabbitmqctl set_user_tags 用户名 administrator
比如,我们创建一个用户 rabbitmqctl add_user admin admin
赋予管理员权限 rabbitmqctl set_user_tags admin adminitrator
博主这里吐槽一下:明明官网说mq3.7.14版本对应erlang最小是20.3.x,最大是21.3.x,
可是博主装好了之后,erlang却是22.0.7。。。无力吐槽,如果有谁知道为何,欢迎评论下~
大功告成~撒花
5.Docker部署
其实用传统的方式安装mq还是比较烦的,我们这次来用dokcer来安装。没用过docker的小伙伴可以看看我之前写的这篇文章,对docker有过简单介绍。docker的安装这里就不讲了。
Dokcer简介与安装以及Springcloud部署
- 寻找rabbitmq镜像
docker search rabbitmq:management
management 表示是有管理界面的
- 下载rabbitmq镜像
docker pull rabbitmq:management
- 新建并启动容器
rabbitmq一共有四个默认端口
端口 | 解释 |
---|---|
4369 (epmd), 25672 (Erlang distribution) | Epmd 是 Erlang Port Mapper Daemon 的缩写,在 Erlang 集群中相当于 dns 的作用,绑定在4369端口上 |
5672, 5671 (AMQP 0-9-1 without and with TLS) | AMQP 是 Advanced Message Queuing Protocol 的缩写,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,专为面向消息的中间件设计。基于此协议的客户端与消息中间件之间可以传递消息,并不受客户端/中间件不同产品、不同的开发语言等条件的限制。Erlang 中的实现有 RabbitMQ 等。 |
15672 (if management plugin is enabled) | 通过http://serverip:15672访问 RabbitMQ 的 Web 管理界面,默认用户名密码都是 guest。(注意:RabbitMQ 3.0之前的版本默认端口是55672,下同) |
61613, 61614 (if STOMP is enabled) | Stomp 是一个简单的消息文本协议 |
1883, 8883 (if MQTT is enabled) | MQTT 只是 IBM 推出的一个消息协议,基于 TCP/IP 的。两个 App 端发送和接收消息需要中间人,这个中间人就是消息服务器(比如ActiveMQ/RabbitMQ),三者通信协议就是 MQTT |
直接启动,默认账号密码guest
docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management
--hostname:指定容器主机名称
--name:指定容器名称
-p:将mq端口号映射到本地
启动时设置用户和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
怎样,docker不是是不是很简单~
6.总结
Docker果然是个好东西,以后有时间,再分享分享mq的代码~
7.结语
世上无难事,只怕有心人,每天积累一点点,fighting!!!