CentOS 7 安裝RabbitMQ詳細教程

前言:在分布式系統架構中,消息隊列作為數據流轉的 “高速公路”,是微服務架構不可或缺的核心組件。RabbitMQ 憑借其穩定的性能、靈活的路由機制和強大的生態支持,成為企業級消息中間件的首選之一。不過,當我們聚焦 CentOS 7 系統時,會發現它的生態適配存在特殊之處 —— 由于系統內核與依賴限制,CentOS 7 最高僅能穩定運行 RabbitMQ 3.9.16 版本,而更高版本的 RabbitMQ(如 4.x)則更適合 CentOS 8/Stream 或 Ubuntu 等較新系統。
本文將圍繞 CentOS 7 環境,詳細拆解 RabbitMQ 3.9.16 的完整部署流程:從 Erlang 環境準備、GPG 密鑰驗證等基礎操作,到配置文件優化、Web 管理界面搭建等核心環節,再到虛擬主機(Virtual Host)的原理與實戰應用。無論你是初次接觸消息隊列的開發新手,還是需要在 legacy 系統中落地生產環境的運維工程師,都能通過這套流程完成 RabbitMQ 的穩定部署,并掌握虛擬主機這一關鍵的資源隔離機制。讓我們一步步構建一個安全、高效的消息通信中樞!

RabbitMQ下載鏈接地址

RabbitMQ 安裝包下載鏈接:
https://github.com/rabbitmq/rabbitmq-server/releases/
RabbitMQ依賴erlang安裝包下載鏈接:
https://github.com/rabbitmq/erlang-rpm/releases
RabbitMQ版本 和 Erlang 版本兼容性關系:
https://www.rabbitmq.com/which-erlang.html

📌 系統版本適配說明
  • CentOS 7:因系統內核和依賴限制,最高適配 RabbitMQ 3.9.16,更高版本因 官方未維護 版本不兼容會導致啟動失敗。
  • CentOS 8/StreamUbuntu:仍在持續維護,可安裝 RabbitMQ 4.x 及更高版本(需參考對應系統教程)。
    在這里插入圖片描述
  • 或者在ubuntu系統上直接查可用版本的包
  • 命令apt search rabbitmq-server
    在這里插入圖片描述

一、環境準備與依賴安裝

1. 導入 GPG 密鑰(確保包來源可信,可選步驟)
步驟 1:傳入密鑰
# 導入 RabbitMQ 官方簽名密鑰
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
# 若網絡受限,可手動在windows電腦上一一打開以上鏈接,下載密鑰文件后導入centos系統上

在這里插入圖片描述

步驟 2:手動導入所有密鑰
# 導入 Erlang 倉庫密鑰
rpm --import rabbitmq-erlang-F032D9A6696558DA.pub.gpg  # 導入 RabbitMQ Server 倉庫密鑰
rpm --import rabbitmq-rabbitmq-server-F6609E60DC62814E.pub.gpg  # 導入全局發布簽名密鑰
rpm --import rabbitmq-release-signing-key.asc  
步驟 3:驗證密鑰導入
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE} --> %{SUMMARY}\n' | grep rabbitmq  

預期輸出(示例):

gpg-pubkey-F032D9A6 --> RabbitMQ Erlang Repository Key  
gpg-pubkey-F6609E60 --> RabbitMQ Server Repository Key  
gpg-pubkey-<...>    --> RabbitMQ Release Signing Key  
2. 安裝 Erlang 環境(RabbitMQ 依賴)
# 執行 RPM 包安裝(需提前下載 erlang-23.3.2-1.el7.x86_64.rpm)
rpm -ivh erlang-23.3.2-1.el7.x86_64.rpm
# 驗證安裝
erl -version  # 應顯示 Erlang/OTP 11.2.1

在這里插入圖片描述

二、安裝與啟動 RabbitMQ

1. 安裝 RabbitMQ Server
# 執行 RPM 包安裝(需提前下載 rabbitmq-server-3.9.16-1.el7.noarch.rpm)
rpm -ivh rabbitmq-server-3.9.16-1.el7.noarch.rpm

在這里插入圖片描述

2. 啟動服務與狀態檢查
# 啟動服務
systemctl start rabbitmq-server
# 查看服務狀態
systemctl status rabbitmq-server
# 或者
rabbitmqctl status
# 或使用 RabbitMQ 診斷工具
rabbitmq-diagnostics status

在這里插入圖片描述
注意:這里為空,說明安裝啟動后默認不會使用配置文件

3. 查看日志(啟動失敗時排查)
tail -200f /var/log/rabbitmq/rabbit@localhost.log

在這里插入圖片描述

  • home dir:rabbitmq安裝后的主目錄,
  • config file(s):表示當前沒有配置文件,顯示為 (none)
  • database dir:數據目錄

三、核心配置文件優化

1. 創建配置文件(生產環境必備)
vim /etc/rabbitmq/rabbitmq.conf

填入以下內容:

### ================ 基礎網絡配置 ================
# RabbitMQ 核心 AMQP 協議監聽配置
listeners.tcp.default = 0.0.0.0:5672### ================ 管理插件配置 ================
# 管理插件 Web 界面、HTTP API 監聽端口,啟用管理插件后可通過瀏覽器訪問(需先執行 rabbitmq-plugins enable rabbitmq_management)
management.listener.port = 15672
# 關閉管理插件的 HTTPS 監聽(生產環境若需加密可設為 true 并配置證書)
management.listener.ssl = false### ================ 資源限制配置 ================
# 內存使用閾值,當 RabbitMQ 占用內存達到系統內存 40% 時,觸發流控等機制,避免內存耗盡
vm_memory_high_watermark.relative = 0.4
# 磁盤空閑空間低于 100MB 時,阻塞消息寫入,防止磁盤寫滿影響服務
disk_free_limit.absolute = 100MB### ================ 用戶安全配置 ================
# 禁用默認的 guest 用戶(默認只能本地登錄,生產環境為安全建議關閉)
loopback_users.guest = false
2. 配置文件權限設置
chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq.conf
chmod 640 /etc/rabbitmq/rabbitmq.conf
3. 重啟服務使配置生效
systemctl restart rabbitmq-server

在這里插入圖片描述
啟動成功

再次執行: rabbitmq-diagnostics status 查看新增的配置文件是否被使用
在這里插入圖片描述

四、服務管理與開機自啟

1. 常用服務命令
systemctl start rabbitmq-server  # 啟動  
systemctl stop rabbitmq-server   # 停止  
systemctl restart rabbitmq-server  # 重啟  
systemctl enable rabbitmq-server  # 開機自啟  
2. 驗證開機自啟配置
systemctl is-enabled rabbitmq-server  # 輸出 "enabled" 表示配置成功

五、Web 管理界面配置

1. 啟用管理插件
rabbitmq-plugins enable rabbitmq_management
2. 創建管理員用戶(安全加固)
# 添加用戶(替換用戶名和密碼)
rabbitmqctl add_user <用戶名> <密碼>
# 設置全權限(默認虛擬主機 / 下)
rabbitmqctl set_permissions -p / <用戶名> ".*" ".*" ".*"
# 注解:
# 第一個 ".*" 表示用戶可以配置任意隊列和交換機(configure 權限)
# 第二個 ".*" 表示用戶可以向任意隊列和交換機發送消息(write 權限)
# 第三個 ".*" 表示用戶可以從任意隊列中消費消息(read 權限)
# -p / 表示在默認虛擬主機 "/" 上設置權限# 標記為管理員角色
rabbitmqctl set_user_tags <用戶名> administrator
3. 修改密碼(避免后臺命令行明文泄露)
  • 登錄 Web 管理界面(http://服務器IP:15672),進入 AdminUsers → 點擊 admin 用戶。
  • Password 區域輸入<新密碼> ,點擊 Update user 保存。
    在這里插入圖片描述
    在這里插入圖片描述
4. 刪除默認 guest 用戶

在這里插入圖片描述

rabbitmq.conf配置文件里禁止了guest用戶,但是web頁面上面還能登錄,這里選擇刪除默認用戶,永久禁用
命令:

rabbitmqctl delete_user guest

在這里插入圖片描述

六、虛擬主機(Virtual Host)詳解與創建

1. 虛擬主機的核心作用

虛擬主機是 RabbitMQ 中資源隔離的邏輯容器,類比為“獨立的數據空間”,主要功能包括:

  • 多租戶隔離:為不同業務線、團隊或客戶分配獨立虛擬主機,避免數據混雜(如 SaaS 系統中隔離不同企業的數據)。
  • 環境隔離:區分開發、測試、生產環境,防止測試數據污染正式環境。
  • 權限精細化管理:為不同虛擬主機分配不同用戶權限(如只讀、讀寫、管理等),提升系統安全性。
2. 創建虛擬主機(Web 界面操作)
  1. 登錄 Web 管理界面,進入 AdminVirtual Hosts → 點擊 Add a new virtual host
  2. 輸入虛擬主機名稱(如 biz-system),點擊 Add virtual host 完成創建。
    在這里插入圖片描述
3. 綁定用戶到虛擬主機
  1. 進入 Users → 點擊目標用戶(如 admin)。
  2. Virtual Hosts 區域,選擇已創建的虛擬主機(如 biz-system),點擊 Set permission 即可賦予該用戶在虛擬主機內的操作權限。
    在這里插入圖片描述

七、驗證與生產級建議

  • 磁盤監控:確保 /var/lib/rabbitmq/ 目錄有足夠空間,避免因磁盤滿導致服務阻塞。
  • 內存監控:通過 top 或監控工具查看 RabbitMQ 進程內存使用,避免超過配置的 0.4 閾值。
  • 網絡防火墻:配置防火墻允許 5672(AMQP)和 15672(Web 管理)端口的訪問,限制非信任IP。

📝 總結

CentOS 7 下安裝 RabbitMQ 3.9.16 需注意版本兼容性,通過配置文件和權限管理可構建安全的消息隊列服務。虛擬主機作為核心隔離機制,能有效支撐多業務場景的部署需求。后續若需升級系統,建議遷移至 CentOS 8/Stream 或 Ubuntu,以獲取更高版本 RabbitMQ 的新特性支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89616.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python爬蟲用途和介紹

目錄 什么是Python爬蟲 Python爬蟲用途 Python爬蟲可以獲得那些數據 Python爬蟲的用途 反爬是什么 常見的反爬措施 Python爬蟲技術模塊總結 獲取網站的原始響應數據 獲取到響應數據對響應數據進行過濾 對收集好的數據進行存儲 抵御反爬機制 Python爬蟲框架 Python…

uni-app開發app保持登錄狀態

在 uni-app 中實現用戶登錄一次后在 token 過期前一直免登錄的功能&#xff0c;可以通過以下幾個關鍵步驟實現&#xff1a;本地持久化存儲 Token、使用請求與響應攔截器自動處理 Token 刷新、以及在 App.vue 中結合 pages.json 設置登錄狀態跳轉邏輯。 ? 一、pages.json 配置說…

21、MQ常見問題梳理

目錄 ? 、MQ如何保證消息不丟失 1 、哪些環節可能會丟消息 2 、?產者發送消息如何保證不丟失 2.1、?產者發送消息確認機制 2.2、Rocket MQ的事務消息機制 2.3 、Broker寫?數據如何保證不丟失 2.3.1** ?先需要理解操作系統是如何把消息寫?到磁盤的**。 2.3.2然后來…

MySQL數據庫--SQL DDL語句

SQL--DDL語句 1&#xff0c;DDL-數據庫操作2&#xff0c;DDL-表操作-查詢3&#xff0c;DDL-表操作-創建4&#xff0c;DDL-表操作-數據類型4.1&#xff0c;DDL-表操作-數值類型4.2&#xff0c;DDL-表操作-字符串類型4.3&#xff0c;DDL-表操作-日期時間類型4.4&#xff0c;實例 …

Spring Cloud 服務追蹤實戰:使用 Zipkin 構建分布式鏈路追蹤

Spring Cloud 服務追蹤實戰&#xff1a;使用 Zipkin 構建分布式鏈路追蹤 在分布式微服務架構中&#xff0c;一個用戶請求往往需要經過多個服務協作完成&#xff0c;如果出現性能瓶頸或異常&#xff0c;排查會非常困難。此時&#xff0c;分布式鏈路追蹤&#xff08;Distributed…

Linux云計算基礎篇(6)

一、IO重定向和管道 stdin&#xff1a;standard input 標準輸入 stdout&#xff1a;standard output 標準輸出 stderr&#xff1a; standard error 標準錯誤輸出 舉例 find /etc/ -name passwd > find.out 將正確的輸出重定向在這個find.ou…

Python將COCO格式分割標簽繪制到對應的圖片上

Python將COCO格式分割標簽繪制到對應的圖片上 前言前提條件相關介紹COCO 格式簡介&#xff08;實例分割&#xff09;&#x1f4c1; 主要目錄結構&#xff1a;&#x1f4c4; JSON 標注文件結構示例&#xff1a;? 特點&#xff1a; 實驗環境Python將COCO格式分割標簽繪制到對應的…

光纖(FC)交換機與以太網(網絡)交換機的區別

光纖通道交換機&#xff08;FC交換機&#xff09;與普通以太網交換機&#xff08;網絡交換機&#xff09;在用途、協議、性能、可靠性等方面存在顯著差異&#xff0c;主要區別如下&#xff1a; 1. 用途與網絡類型 FC交換機 主要用于存儲區域網絡&#xff08;SAN&#xff09;&a…

電磁場有限元方法EX2.2-里茲法求解泊松方程控制的邊值問題

電磁場有限元方法EX2.2-里茲法求解泊松方程控制的邊值問題 簡單學習一下有限元法的基礎理論&#xff0c;書本為電磁場有限元經典教材&#xff1a; THE FINITE ELEMENT METHOD IN ELECTROMAGNETICS, JIAN-MING JIN 目錄 電磁場有限元方法EX2.2-里茲法求解泊松方程控制的邊值問…

云端備份與恢復策略:企業如何選擇最安全的備份解決方案

更多云服務器知識&#xff0c;盡在hostol.com 想象一下&#xff0c;某個凌晨&#xff0c;你突然發現公司所有重要數據都被加密&#xff0c;系統崩潰&#xff0c;業務停擺。有人給你打來電話說&#xff1a;“一切都被勒索了&#xff0c;恢復費用可能需要幾百萬。”這時&#xf…

OSPF高級特性之FRR

一、概述 眾所周知,IGP當中鏈路狀態路由協議(OSPF、ISIS)之所以可以代替我們的矢量路由協議(RIP),就是因為鏈路狀態路由協議可以根據某些特性快速的感知到路由的變化從而改變路徑。 前面我們已經介紹過了OSPF的其中一個快速收斂的機制,SPF算法,本章節將介紹另一個快速收斂機制,…

多元化國產主板,滿足更高性能、更高安全的金融發展

在金融行業數字化轉型的浪潮中&#xff0c;對于核心硬件的性能與安全需求達到了前所未有的高度。國產主板應運而生&#xff0c;憑借其卓越的多元化特性&#xff0c;為金融領域帶來了高性能運算與高安全防護的雙重保障&#xff0c;成為推動金融行業發展的關鍵力量。以高能計算機…

數據庫分布式架構:ShardingSphere 實踐

一、數據庫分布式架構概述 1.1 分布式架構概念 在當今數字化時代&#xff0c;隨著業務的不斷拓展和數據量的爆炸式增長&#xff0c;傳統的單機數據庫架構逐漸暴露出諸多局限性。例如&#xff0c;在電商大促期間&#xff0c;海量的訂單數據和用戶訪問請求會讓單機數據庫不堪重…

【WRFDA教程第二期】運行WRFDA 3DVAR/4DVAR數據同化

目錄 一、準備階段&#xff1a;下載并解壓測試數據二、運行 3DVAR 教學實驗日志分析&#xff08;wrfda.log&#xff09;進階實驗建議&#xff1a;對比不同設置的影響輸出文件說明 三、運行 4DVAR 教學實驗步驟1&#xff1a;準備工作目錄與環境變量步驟2&#xff1a;鏈接可執行文…

redis緩存三大問題分析與解決方案

什么是緩存&#xff1f; 緩存&#xff08;Cache&#xff09;是一種將熱點數據緩存在內存中&#xff08;如 Redis&#xff09;以加快訪問速度、減輕數據庫壓力的技術。 但引入緩存后可能出現 三大核心問題&#xff1a; 緩存穿透&#xff08;Cache Penetration&#xff09;緩存…

李宏毅機器學習筆記——梯度下降法

深度學習介紹 基于仿生學的一種自成體系的機器學習算法&#xff0c;包括但不限于圖像識別、語音、文本領域。 梯度下降法 作為深度學習算法種常用的優化算法 梯度下降法&#xff0c;是一種基于搜索的最優化方法&#xff0c;最用是最小化一個損失函數。梯度下降是迭代法的一…

day50/60

浙大疏錦行 DAY 50 預訓練模型CBAM模塊 知識點回顧&#xff1a; resnet結構解析CBAM放置位置的思考針對預訓練模型的訓練策略 差異化學習率三階段微調 ps&#xff1a;今日的代碼訓練時長較長&#xff0c;3080ti大概需要40min的訓練時長 作業&#xff1a; 好好理解下resnet18的…

Vue3 之vite.config.js配置

一、示例 import { defineConfig } from vite import vue from vitejs/plugin-vue import path from path // https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],base: ./,build: {assetsDir: static, //指定靜態資源目錄rollupOptions: {input: {mai…

利用Gpu訓練

方法一&#xff1a; 分別對網絡模型&#xff0c;數據&#xff08;輸入&#xff0c;標注&#xff09;&#xff0c;損失函數調用.cuda() 網絡模型&#xff1a; if torch.cuda.is_available():netnet.cuda() 數據&#xff08;訓練和測試&#xff09;&#xff1a; if torch.cud…

使用excel中的MATCH函數進行匹配數據

一、背景 在平日處理數據時&#xff0c;經常需要將給定數據按照制定的數據進行排序&#xff0c;數量比較大時&#xff0c;逐個處理有點費事費力且容易出錯&#xff0c;這時可借助excel表格中match函數進行精確匹配。 二、使用match函數–精確排序操作步驟 主要工作步驟&#xf…