Linux環境下 RabbitMQ 的下載與安裝

JavaEdge發表於2019-03-18

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 安裝基礎依賴

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

    Linux環境下 RabbitMQ 的下載與安裝

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

    Linux環境下 RabbitMQ 的下載與安裝

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

    Linux環境下 RabbitMQ 的下載與安裝

3 修改配置

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

  • RabbitMQ的核心配置檔案(顯然就是個JSON格式檔案),在這裡可以檢視到rabbitmq預設監聽的埠號是5672
    Linux環境下 RabbitMQ 的下載與安裝
  • 找到loopback_users配置項,去除guest,然後儲存退出
    Linux環境下 RabbitMQ 的下載與安裝

4 RabbitMQ 基本命令

  • 啟動服務

    rabbitmq-server start &

  • 停止服務的

rabbitmqctl stop
複製程式碼

檢視程式:lsof -i:5672 管理外掛:rabbitmq-plugins enable rabbitmq-management

5 RabbitMQ 管控臺

  • 啟用管控臺
    rabbitmq-plugins enable rabbitmq_management

預設啟用埠是15672,通過ip+埠進行訪問,如

Linux環境下 RabbitMQ 的下載與安裝

最好先關閉下iptables規則

iptables -F && iptables -t nat -F

訪問成功後需要輸入使用者名稱和密碼進行登入,統一輸入guest即可. 但是在該版本,發現網上此法並不行!

  • rabbitmq的web控制檯使用預設賬戶guest登入失敗——login failed
    Linux環境下 RabbitMQ 的下載與安裝

問題背景

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
複製程式碼

Linux環境下 RabbitMQ 的下載與安裝

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
複製程式碼

Linux環境下 RabbitMQ 的下載與安裝

  • 修改密碼

    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的遠端登入了

Linux環境下 RabbitMQ 的下載與安裝

聯絡我

Linux環境下 RabbitMQ 的下載與安裝
1.Java開發技術交流Q群

2.完整部落格連結

3.個人知乎

4.gayhub

相關文章