[料理佳餚] 在 CentOS 7 安裝 RabbitMQ

自從微軟開源之後,自己也意識到微軟的改變,進而去了解在開源社群有哪些替代性的工具,RabbitMQ 是我拿來準備成為 Microsoft Message Queue 的另一個替代方案,這邊記錄一下整個安裝的過程。

RabbitMQ 不只有 Message Queuing 的功能,根據官網 Tutorials 的介紹還可以做到下列事情:

  • Work queues: Distributing tasks among workers
  • Publish/Subscribe: Sending messages to many consumers at once
  • Routing: Receiving messages selectively
  • Topics: Receiving messages based on a pattern
  • RPC: Remote procedure call implementation

安裝相關工具

由於 CentOS 我都是從最小安裝開始,所以有一些工具在最小安裝是沒有裝進去的,要自己先安裝起來。

#Install required tools
yum -y install net-tools wget

安裝 Erlang

這是 RabbitMQ 相依的套件,可以從 RabbitMQ 官網上取得,直接安裝所提供的最新版本。

#Install Erlang
rpm -ivh http://www.rabbitmq.com/releases/erlang/erlang-17.4-1.el6.x86_64.rpm

安裝 RabbitMQ

直接安裝官網所提供的最新版本

#Install RabbitMQ
rpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.0/rabbitmq-server-3.6.0-1.noarch.rpm

安裝完畢後,可以下這行指令 chkconfig --list 確認服務有正確安裝成功。

開啟防火牆埠號

需開啟的防火牆埠號有下列這幾個,請視需求開啟,沒用到的不要開,以免造成資安問題。

  • 4369 (epmd), 25672 (Erlang distribution)
  • 5672, 5671 (AMQP 0-9-1 without and with TLS)
  • 15672 (if management plugin is enabled)
  • 61613, 61614 (if STOMP is enabled)
  • 1883, 8883 (if MQTT is enabled)

我只有開啟 4369, 25672, 5672, 5671, 15672。

# Add allow ports
firewall-cmd --permanent --add-port=4369/tcp
firewall-cmd --permanent --add-port=25672/tcp
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --permanent --add-port=5671/tcp
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --reload

將 RabbitMQ 設為背景啟動

#Set RabbitMQ is started as a daemon
systemctl enable rabbit-server

啟動 RabbitMQ

#Start RabbitMQ service
systemctl start rabbit-server

可以透過 systemctl status rabbit-server 來確認服務有正確啟動

啟動 RabbitMQ 的管理套件

RabbitMQ 自帶一個 Web 的管理套件,預設是沒有啟動的,要啟動它很簡單。

#Enable Rabbit Management Plugin
rabbitmq-plugins enable rabbitmq_management
請在 RabbitMQ 服務啟動的狀態下啟動 Management Plugin,才不會有一些警告訊息。

在瀏覽器打上 http://[ip 或伺服器名稱]:15672 就可以看到登入畫面。

新增另外一個 Administrator

不過,這時候我們照著官網上所說的用 guest 這個預設的管理帳號(密碼也是 guest) 是登不進去的,會 Login failed。

我之前將 RabbitMQ 裝在 Windows 時,必須要瀏覽 http://localhost:15762 才登得進去,因此猜想 guest 這個帳號只有在本地端才有辦法操作,所以我們必須增加另一個管理者帳號。

#Add another administrator
rabbitmqctl add_user administrator administratorpassword

#Set administrator user tag
rabbitmqctl set_user_tags administrator administrator

#Set administrator permissions
rabbitmqctl set_permissions -p / administrator ".*" ".*" ".*"

新增完後,用新增加的管理者帳號登入,就可以了。

參考資料

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學