Linux环境下 RabbitMQ 的下载与安装

0 环境

CentOS7

RabbitMQ 3.6.5

erlang 18.3

socat

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

0.1 Mac本地文件上传

经过ssh链接本地虚拟机中的CentOS 7 服务器,将所需安装文件上传至Linux服务器 c++

上传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 安装基础依赖

yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz

2 安装rpm包

必定要按顺序!!!

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

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

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

3 修改配置

vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

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

4 RabbitMQ 基本命令

  • 启动服务 vim

    rabbitmq-server start &

  • 中止服务的centos

rabbitmqctl stop
复制代码

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

5 RabbitMQ 管控台

  • 启用管控台
    rabbitmq-plugins enable rabbitmq_management

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

最好先关闭下iptables规则 服务器

iptables -F && iptables -t nat -F

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

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

问题背景

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

而经过web控制台登陆有如下两种形式:

  • 本地登录(即在rabbitmq安装的机器上登录——地址栏输入http://localhost:15672)
  • 远程登录(即在其余机器上经过指定IP地址登录——地址栏输入http://:15672)

可是,在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

  • 赋予用户权限

    rabbitmqctl set_permissions -p

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

  • 查看用户受权

    rabbitmqctl list_permissions -p /

  • 清除权限信息

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

此时,就能够经过你添加的新用户/密码来进行rabbitmq的远程登陆了

联系我

1. Java开发技术交流Q群

2.完整博客连接

3.我的知乎

4.gayhub

相关文章
相关标签/搜索