如何安裝RabbitMQ

weixin_34148340發表於2019-03-07
3670077-cfdd15fa5af53e6d.png
image.png

訊息佇列又稱為MQ,應用程式間的訊息通訊工具,其有利於程式解耦、多語言整合、非同步通訊、擴充套件和簡單負載均衡等,是生產-消費者模型的典型代表。常見MQ產品有RabbitMQ ZeroMQ Kafka等等。

RabbitMQ,老牌MQ產品,基於erlang語言,實現對AMQP等協議的支援,重量級,適合企業級應用開發;

Kafka,linkedin開源MQ產品,追求高吞吐量,適合於大量資料的收集業務,如網際網路業務產生的大量日誌資料;

ZeroMQ,號稱最快的MQ,提供了一套非同步訊息通訊庫,可實現RabbitMQ不能實現的高階複雜佇列;

Kafka和RabbitMQ都需要搭建訊息代理伺服器,採用中介軟體模式。ZeroMQ採用非中介軟體模式,不需要搭建訊息代理伺服器;

今天先上一篇簡單的RabbitMQ安裝教程,系統為centos7。

安裝erlang

RabbitMQ採用erlang語言實現。erlang是一門被設計用來編寫併發、實時、分散式系統的新語言,原本是為了電話交換機開發的語言。下面原始碼編譯安裝。

1. 下載原始碼

http://www.erlang.org/download.html 下載最新版的erlang安裝包。

3670077-f6c09622525fc096
image

2. 解壓安裝

$ tar xvf otp_src_19.1.tar.gz
$ ./configure --prefix=/usr/local/erlang  --without-javac
$ make $ make install

3. 配置環境變數

在/etc/profile.d/下新建erlang.sh

$ vim /etc/profile.d/erlang.sh

加入如下內容:

PATH=$PATH:/usr/local/erlang/bin
export PATH

如下使環境變數生效

$ source /etc/profile.d/erlang.sh

4. 簡單體驗

Hello World程式體驗:

$ vim hello.erl

%%  HellWorld example
%% We define a module called foo
-module(hello).  
%% Export the function print that has 0 arguments
-export([print/0]).

print() ->
    io:format("Hello World!~n").
$ erlc hello.erl    // 編譯
$ erl                   // 互動命令列模式執行

效果如下:

3670077-716531d1e9317edd
image

實驗成功!

安裝rabbitmq

1. 安裝依賴項**

每個人的系統預設有些軟體已經安裝,本人這裡需要安裝三個依賴項

$ yum install -y libxslt rsync zip

2. 下載rabbitmq二進位制包

$ cd /usr/local
$ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5.tar.xz

3. 安裝

使用二進位制包安裝很輕鬆,如下:

$ cd /usr/local/
$ tar Jxvf rabbitmq-server-3.6.5.tar.xz -C . 
$ ln -s rabbitmq_server-3.6.5 rabbitmq

rabbit安裝目錄為/usr/local/rabbitmq

4. 配置環境變數

在/etc/profile.d/新建rabbitmq.sh

$ vim /etc/profile.d/rabbitmq.sh

新增如下內容:

PATH=$PATH:/usr/local/rabbitmq/sbin
export PATH

執行如下使環境變數生效

$ source /etc/profile.d/rabbitmq.sh

5. 關於rabbitmq操作

如何啟動?

前臺執行:

$ rabbitmq-server ![image](http://upload-images.jianshu.io/upload_images/3670077-52f898027a4e21fe?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

後臺執行:

$ rabbitmq-server -detached
3670077-db51df74cebfae64
image

關閉

$ rabbitmqctl stop

檢視狀態

$ rabbitmqctl status

WEB管理外掛

RabbitMQ提供了一套外掛機制,方便功能擴充套件。這裡介紹一個最常用外掛rabbitmq_management。這款這外掛提供了完善的管理和監控功能,提供了各項指標,具體詳情會在之後文章介紹。首先體驗一下,如下方法開啟。

1. 啟用外掛

通過rabbitmq-plugin管理外掛,啟用rabbitmq_management外掛方法如下:

$ rabbitmq-plugins enable rabbitmq_management

此時使用預設使用者guest、密碼guest,即可訪問http://localhost:15672。但此時無法遠端訪問,但實際場景多為遠端。

下面解決遠端訪問問題:

2. 確認關閉防火牆

如無法遠端登入訪問http://host:15672,請確認防火牆已關閉。本人系統防火牆已開啟,關閉方法如下:

$ iptables -F

本人系統centos7,不同系統的機制需自己確認。

3. 環境變數

RabbitMQ三種環境變數:

系統內建

rabbitmq-env.conf設定變數

shell環境變數

優先順序: shell環境變數 > rabbit-env.conf > 系統內建

此處通過rabbit-env.conf設定,RabbitMQ安裝目錄下etc/rabbitmq/rabbitmq-env.conf:

$ cd /usr/local/rabbitmq/
$ vim etc/rabbitmq/rabbitmq-env.conf

如下指定rabbitmq配置檔案:

RABBITMQ_CONFIG_FILE=/usr/local/rabbitmq/etc/rabbitmq/rabbitmq

上述環境變數指定rabbitmq配置檔案,需新增字尾.config,即真實檔案為/usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config:

4. 配置遠端訪問**

關於啟用guest遠端訪問許可權,官網http://www.rabbitmq.com/access-control.html,有如下一段話:

3670077-9d127e23afd1f7e2
image

按此要求修改RabbitMQ配置檔案,如下:

$ vim etc/rabbitmq/rabbitmq.config

新增如下內容:

<pre data-source-line="58" style="margin: 0px; padding: 0px;">[{rabbit, [
  {tcp_listeners, [5672]}, 
  {loopback_users, []}
]}].</pre>

此時,訪問http://remote_ip:15672,效果如下:

3670077-7f8e8b3a86be3379
image

預設的使用者名稱guest、密碼guest,登入進入效果如下:

3670077-c572449f283ae8ca
image

上面就是RabbitMQ執行時狀態的總覽資訊。到此,RabbitMQ的安裝就OK!

參考文件

關於Erlang入門:
http://www.erlang.org/downloads
http://www.csdn.net/article/2015-10-26/2826038-Erlang
http://www.csdn.net/article/2015-10-26/2826038-Erlang

關於mq:

http://www.rabbitmq.com/access-control.html
http://www.infoq.com/cn/articles/kafka-analysis-part-1/
https://www.zhihu.com/question/22480085

相關文章