Linux环境下 RabbitMQ 的下载与安装

0 环境

CentOS7

RabbitMQ 3.6.5

erlang 18.3

socat

rabbitmq是使用erlang语言编写的,所以需要先安装erlang,其次rabbitmq安装依赖于socat,所以三个安装包都需要下载。另外rabbitmq对于erlang的版本是有要求的,这个可以去官网查看。

0.1 Mac本地文件上传

通过ssh连接本地虚拟机中的CentOS 7 服务器,将所需安装文件上传至Linux服务器
上传erlang文件
上传rabbitmq文件
Linux服务器中文件列表

0.2 Linux服务器下直接执行下载命令

wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm

1 安装基础依赖

2 安装rpm包

一定要按顺序!!!

  • rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm

  • rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm

  • rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

3 修改配置

  • RabbitMQ的核心配置文件(显然就是个JSON格式文件),在这里可以查看到rabbitmq默认监听的端口号是5672
  • 找到loopback_users配置项,去除guest,然后保存退出

4 RabbitMQ 基本命令

  • 启动服务

  • 停止服务的

rabbitmqctl stop

查看进程:lsof -i:5672
管理插件:rabbitmq-plugins enable rabbitmq-management

5 RabbitMQ 管控台

  • 启用管控台
    rabbitmq-plugins enable rabbitmq_management

默认启用端口是15672,通过ip+端口进行访问,如

最好先关闭下iptables规则

访问成功后需要输入用户名和密码进行登录,统一输入guest即可.
但是在该版本,发现网上此法并不行!

  • rabbitmq的web控制台使用默认账户guest登录失败——login failed

问题背景

rabbitmq的默认账户和密码都是guest,安装完rabbitmq之后可以使用guest/guest登录。

而通过web控制台登录有以下两种形式:

  • 本地登陆(即在rabbitmq安装的机器上登陆——地址栏输入http://localhost:15672)
  • 远程登陆(即在其他机器上通过指定IP地址登陆——地址栏输入http://<ip>:15672)</ip>

但是,在rabbitmq3.3.0之后,出于安全性考虑,默认情况下rabbitmq的guest/guest账户将不能实现远程登录,只能在本地登录.

解决方案

新建账户

默认的guest账户无法远程登陆,并不意味着其他用户也无法远程登录.
所以,可以通过如下命令新增用户、设定用户角色以及赋予用户权限实现远程登陆:

新增用户

$ rabbitmqctl add_user Username  Password

RabbitMQ的用户角色分类

none、management、policymaker、monitoring、administrator

  • none
    不能访问 management plugin

  • management
    用户可以通过AMQP做的任何事外加:

    • 列出自己可以通过AMQP登入的virtual hosts
    • 查看自己的virtual hosts中的queues, exchanges 和 bindings
    • 查看和关闭自己的channels 和 connections
    • 查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。
  • policymaker
    management可以做的任何事外加:

    • 查看、创建和删除自己的virtual hosts所属的policies和parameters
  • monitoring
    management可以做的任何事外加:

    • 列出所有virtual hosts,包括他们不能登录的virtual hosts
    • 查看其他用户的connections和channels
    • 查看节点级别的数据如clustering和memory使用情况
    • 查看真正的关于所有virtual hosts的全局的统计信息
  • administrator
    policymaker和monitoring可以做的任何事外加:

    • 创建和删除virtual hosts
    • 查看、创建和删除users
    • 查看创建和删除permissions
    • 关闭其他用户的connections
  • 设定用户administrator角色
    用户角色可以分为超级管理员administrator、监控者monitoring、策略制定者policymaker、普通管理者management等

$ rabbitmqctl set_user_tags <用户名> administrator

  • 修改密码
    change_password  JavaEdge JavaEdge

  • 查看用户列表
    rabbitmqctl list_users

  • 删除账户
    rabbitmqctl  delete_user javaedge

  • 赋予用户权限

用户权限包括配置权限、读权限和写权限
配置权限会影响到exchange、queue的声明和删除。读写权限会影响到从queue里取消息、向exchange发送消息以及queue和exchange的绑定操作
比如,将queue绑定到某个exchange上,需要具有queue的写权限以及exchange的读权限;向exchange发送消息需要具有exchange的写权限;从queue里取消息需要具有queue的读权限。

  • 查看用户授权

  • 清除权限信息

rabbitmqctl clear_permissions [-p VHostPath] ymq
rabbitmqctl  clear_permissions  -p / JavaEdge
Clearing permissions for user "JavaEdge" in vhost "/"

此时,就可以通过你添加的新用户/密码来进行rabbitmq的远程登录了

欢迎star一波~Gayhub

#Java工程师##Java##读书笔记##面经#
全部评论
点赞 回复 分享
发布于 2019-03-19 07:48

相关推荐

1、自我介绍2、Agent项目是实习项目还是个人项目?有没有上线?3、拷打实习(10min)4、大模型微调,你的训练数据集是如何构建的?数据量有多大?5、在构建数据集的过程中,遇到了哪些挑战?花了多长时间?6、你之前的实习经历偏后端工程,你未来的职业规划更倾向于纯后端开发,还是希望从事与AI/大模型结合的工作?7、详细讲一下Golang中Channel的概念和作用,它是否是并发安全的?8、Channel和传统的锁(Mutex)在实现并发控制时有什么区别?各自的适用场景是什么?9、讲一下GMP模型10、当P的本地队列为空或者不为空时,它会怎么去调度G(协程)?11、Redis支持哪些数据结构12、为什么Redis的速度这么快13、如何实现一个类似淘宝搜索框的实时商品名称模糊搜索功能?14、实时输入联想与输入完成后点击搜索在技术实现上有什么本质区别?15、实时搜索通常使用什么网络协议(如WebSocket)?你了解或有使用过吗?讲一下16、请详细说明微信扫码登录的完整流程和背后发生的原理17、在微服务架构中,服务发现和负载均衡是如何实现的?18、服务注册中心(如Nacos,&nbsp;Consul)是如何工作的?服务实例如何注册和保活(如通过心跳机制)?19、讲一下Agent中的“长短期记忆”20、什么样的信息应该放在长期记忆,什么样的信息放在短期记忆?21、当对话轮数很多,上下文窗口不足时,有哪些处理策略?(如截断、压缩)22、如果要进行记忆压缩,通常有哪些方法?23、了解过Agent的设计范式吗?有哪些?24、你设计的Agent是怎么实现ReAct模式的?详细讲讲25、手撕:实现一个并发任务处理器:给定一个包含100个任务ID的列表,要求控制最大并发数为3,模拟并发调用某个外部接口(如打印ID)26、反问
查看24道真题和解析
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务