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

相關文章
相關標籤/搜索