1. 程式人生 > >Centos7 安裝rabbitmq詳細教程

Centos7 安裝rabbitmq詳細教程

一、RabbitMQ簡單介紹     RabbitMQ就是當前最主流的訊息中介軟體之一。RabbitMQ是一個開源的AMQP實現,伺服器端用Erlang語言編寫,支援多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支援AJAX。用於在分散式系統中儲存轉發訊息,在易用性、擴充套件性、高可用性等方面表現不俗。

    在目前分散式的大環境下,成為非常常用的訊息佇列,以下詳細說明怎麼在centos7 上安裝部署rabbitmq,並列舉簡單的維護,方便運維同學能更好的維護rabbitmq的正常執行。由於一般生產環境,不管是erlang還是 rabbitmq都不能隨便進行版本升級,每次升級都是要謹慎的,所以這裡推薦都使用原始碼安裝,這樣就固定了版本,不會出現通過yum安裝的話,不小心升級了版本導致服務故障等的問題。當然yum安裝會更簡單,這裡就不做介紹,有興趣的參考官方文件即可。

二、Centos7下安裝rabbitmq

    rabbitmq是erlang語言編寫的,安裝rabbitmq之前,需要先安裝erlang,這裡用erlang的原始碼進行安裝,erlang安裝包官網下載地址:http://erlang.org/download/

wget http://erlang.org/download/otp_src_21.1.tar.gz
tar -zxvf otp_src_21.1.tar.gz
cd otp_src_21.1
# 這裡要新建一個erlang資料夾,因為erlang編譯安裝預設是裝在/usr/local下的bin和lib中,這裡我們將他統一裝到/usr/local/erlang中,方便查詢和使用。
mkdir -p /usr/local/erlang

# 在編譯之前,必須安裝以下依賴包
yum install -y make gcc gcc-c++ m4 openssl openssl-devel ncurses-devel unixODBC unixODBC-devel java java-devel

./configure --prefix=/usr/local/erlang

    erlang的編譯需要用到java環境,如果不裝,會報錯如下。

以下的兩個:APPLICATIONS INFORMATION,DOCUMENTATION INFORMATION是正常的,不影響正常編譯。

然後,直接執行make && makeinstall 進行編譯安裝

make && make install

安裝後,在/usr/local/erlang中就會出現如下:

然後將/usr/local/erlang/bin這個資料夾加入到環境變數中,載入以下即可直接使用。

vim /etc/profile
#########   新增如下內容   ###############
PATH=$PATH:/usr/local/erlang/bin
########################################

source /etc/profile

到此,既安裝完成,直接輸入erl,得到如下圖得安裝成功

OK,安裝完erlang後,下面安裝rabbitmq,安裝之前,需要去官網檢視一下rabbitmq版本對erlang版本的一個支援情況,官網地址:http://www.rabbitmq.com/which-erlang.html

這裡,我們安裝的erlang是最新的21版本,所以,rabbitmq也要安裝最新的3.7.7,3.7.8。然後在官網上,直接下載該版本的安裝包,為了方便安裝,最好直接使用編譯好的二進位制檔案包,即開即用,不用進行復雜的yum配置等。具體可以參考官方文件:http://www.rabbitmq.com/install-generic-unix.html

# 下載原始碼包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.8/rabbitmq-server-generic-unix-3.7.8.tar.xz
# 解壓
tar -xvf rabbitmq-server-generic-unix-3.7.8.tar.xz -C /usr/local/
# 新增環境變數
vim /etc/profile
------  新增如下內容  ------
PATH=$PATH:/usr/local/rabbitmq_server-3.7.8/sbin


# 過載一下環境變數
source /etc/profile

# 新增web管理外掛
rabbitmq-plugins enable rabbitmq_management

預設rabbitmq是沒有配置檔案的,需要去官方github上,複製一個配置檔案模版過來,最新的3.7.0以上的版本可以使用新的key-value形式的配置檔案rabbitmq.conf,和原來erlang格式的advanced.config相結合,解決一下key-value形式不好定義的配置。github地址:https://github.com/rabbitmq/rabbitmq-server/tree/master/docs

由於我這裡安裝的是最新的3.7.8。所以就使用新的配置檔案,將配置檔案複製到 /usr/local/rabbitmq_server-3.7.8/etc/rabbitmq/ 下。如:

ok,然後就可以啟動rabbitmq服務了,其實沒有配置檔案也是可以啟動服務的。

# 後臺啟動rabbitmq服務
rabbitmq-server -detached

上面,啟用了rabbitmq的管理外掛,會有一個web管理介面,預設監聽埠15672,將此埠在防火牆上開啟,則可以訪問web介面:

使用預設的使用者 guest / guest (此也為管理員使用者)登陸,會發現無法登陸,報錯:User can only log in via localhost。那是因為預設是限制了guest使用者只能在本機登陸,也就是隻能登陸localhost:15672。可以通過修改配置檔案rabbitmq.conf,取消這個限制: loopback_users這個項就是控制訪問的,如果只是取消guest使用者的話,只需要loopback_users.guest = false 即可。

注意:

{loopback_users, [<<"guest">>]}  

這個是erlang格式的原配置,後面是一個列表,可以自定義新增多個使用者。

然後,就能登陸到web控制介面:

OK,到此rabbitmq就算是裝好了,下面列舉一下常用的一些操作:

服務啟動停止:

啟動: rabbitmq-server -detached

停止: rabbitmqctl stop

外掛管理:

外掛列表: rabbitmq-plugins list 

啟動外掛: rabbitmq-plugins enable XXX   (XXX為外掛名)

停用外掛: rabbitmq-plugins disable XXX

使用者管理:

新增使用者: rabbitmqctl add_user username password

刪除使用者: rabbitmqctl delete_user username

修改密碼: rabbitmqctl change_password username newpassword

設定使用者角色: rabbitmqctl set_user_tags username tag

列出使用者: rabbitmqctl list_users

許可權管理:

列出所有使用者許可權: rabbitmqctl list_permissions

檢視制定使用者許可權: rabbitmqctl list_user_permissions username

清除使用者許可權: rabbitmqctl clear_permissions [-p vhostpath] username

設定使用者許可權: rabbitmqctl set_permissions [-p vhostpath] username conf write read

                          conf: 一個正則匹配哪些資源能被該使用者訪問

                          write:一個正則匹配哪些資源能被該使用者寫入

                          read:一個正則匹配哪些資源能被該使用者讀取

OK,今天就介紹到這裡。這只是單機安裝rabbitmq的單節點。而rabbitmq本身就是常用語分散式架構的中間元件,所以rabbitmq的叢集搭建更為重要,這個下次再說。