RabbitMq install on Centos


  • 安裝服務(root)

erlang官方安裝說明:https://www.erlang-solutions.com/resources/download.html

step 1: 安裝erlang的yum源 (或者安裝epel源,如果不要求最最新版本的話)

wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

rpm -Uvh erlang-solutions-1.0-1.noarch.rpm

step 2: 

安裝erlang

# yum clean all ; yum makecache

# yum install erlang   -y    (Rabbitmq 基於 erlang 語言開發,所以需要安裝 erlang 虛擬機)

step 3: 
確認erlang安裝成功 

erl 

Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]

Eshell V5.8.5 (abort with ^G)
1>io:format("hello world ~n").

輸出 hello world ok   安裝erlang完畢, 用 halt(). 退出

 step 4:

安裝rabbitmq-server

Rabbitmq官方安裝說明: http://www.rabbitmq.com/install-rpm.html

導入rabbitmq 數字簽名key 支持后安裝

       # wget https://www.rabbitmq.com/releases/rabbitmq-server/current/rabbitmq-server-3.6.1-1.noarch.rpm
       # rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc     
       # yum install rabbitmq-server-3.6.1-1.noarch.rpm

rabbitmq-server安裝完成

 


第一次安裝時沒有更新EPEL安裝到這里遇到的問題:

提示erlang 版本支持問題

Error: Package: rabbitmq-server-3.4.2-1.noarch (/rabbitmq-server-3.4.2-1.noarch)

Requires: erlang >= R12B-3
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

刪除所有相關rpm包后重新按照官方文檔安裝

rpm -e  epel-release-6-8.noarch

 


 

  • 運行RabbitMQ Server 

    設置開機自動啟動 rabbitmq-server
    # chkconfig --level 35 rabbitmq-server on
     
    啟動rabbitmq-server   [start][stop][etc]
    # service rabbitmq-server start
     
    rabbitmqctl status  #查看運行信息

 

 
  • 安裝插件管理界面  
         # mkdir -m 777 /etc/rabbitmq/ (如果目錄已經存在直接執行 # chmod 777  -R  /etc/rabbitmq/
 
         # rabbitmq-plugins enable rabbitmq_management
 
         重啟rabbitmq-server
         # rabbitmqctl stop
 
           # rabbitmq-server start 
   
         查看管理端口有沒有啟動:
          # netstat -tnlp|grep 15672
    
         瀏覽器打開 http://IP:15672 賬號密碼都是guest,如果局域網無法訪問設置防火牆過濾規則或關閉防火牆
        
         如果仍然出現無法登陸的想象,查看日志后,顯示:
         =ERROR REPORT==== 31-Dec-2014::17:00:41 ===
         webmachine error: path="/api/whoami"
         "Unauthorized"
         那么請運行如下的命令, 增加用戶admin,密碼admin即可。
         #rabbitmqctl  add_user admin admin                             新增加用戶admin
         #rabbitmqctl set_permissions  admin  ".*" ".*" ".*"         設置admin的權限
         #rabbitmqctl set_user_tags admin administrator             設置用戶角色為高級管理員
         #rabbitmqctl list_users                                                  查看當前已有用戶列表
安裝rabbitmqadmin命令:
#chmod 755 /usr/local/bin/rabbitmqadmin
# rabbitmqadmin declare queue name=ha.123 durable=true    命令行創建隊列在節點上建立一個名字為ha.123的隊列,durable設為true)
 
RabbitMQ配置:
 
相關環境變量參考官網的一些資料:
http://www.rabbitmq.com/relocate.html
http://www.rabbitmq.com/configure.html#define-environment-variables
 
 
創建新的環境配置文件啟動服務時會自動加載,沒有指定的采取默認值

touch /etc/rabbitmq/rabbitmq-env.conf

RABBITMQ_NODENAME=rabbit@server-66    #節點名稱
RABBITMQ_NODE_IP_ADDRESS=0.0.0.0      #監聽IP
RABBITMQ_NODE_PORT=5672                    #監聽端口
RABBITMQ_LOG_BASE=/data/rabbitmq/log   #日志目錄
RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins                          #插件目錄,,默認 /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/plugins

RABBITMQ_PLUGINS_EXPAND_DIR=/data/rabbitmq/plugins-expand #擴展插件目錄,默認/var/lib/rabbitmq/mnesia/rabbit@server-65-plugins-expand

RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia                         #后端存儲目錄

 
 把以上提到的三個目錄分別進行轉移到指定目錄后,重新啟動服務即可生效。
  
---------------------------------------------------------------------------------------------------------
rabbitMQ一些常用命令

rabbitctl

rabbitmqctl 是rabbitMQ中間件的一個命令行管理工具。它通過連接一個中間件節點執行所有的動作。

rabbitmqctl [-n node] [-q] {command} [command options…]

[-n node]

默認的節點是”rabbit@server”,一般是本地節點。

rabbitmqctl 默認產生詳細輸出。通過”-q”標示可選擇安靜模式。

應用和集群管理

1.  停止rabbitMQ應用,關閉節點 : rabbitmqctl stop

2.  停止rabbitMQ應用 : rabbitmqctl stop_app

3.  啟動rabbitMQ應用 : rabbitmqctl start_app

4.  顯示rabbitMQ中間件各種信息 : rabbitmqctl status

5.  重置rabbitMQ節點 : rabbitmqctl reset和  rabbitmqctl force_reset 從它屬於的任何集群中移除,從管理數據庫中移除所有數據,例如配置過的用戶和虛擬宿主, 刪除所有持久化的消息。 force_reset命令和reset的區別是無條件重置節點,不管當前管理數據庫狀態以及集群的配置。如果數據庫或者集群配置發生錯誤才使用這個最后 的手段。 注意:只有在停止rabbitMQ應用后,reset和force_reset才能成功。

6.  循環日志文件 : rabbitmqctl rotate_logs[suffix]

7.  加入到某個節點中:rabbitmqctl join_cluster {clusternode} [--ram]默認是ram類型的,也可以是disc類型

8.  集群目前的狀態:rabbitmqctl cluster_status

9.  改變當前節點的類型:rabbitmqctl change_cluster_node_type {disc | ram}使用這個命令的時候必須先把該節點stop。

10. 同步某個隊列(建立鏡像隊列):rabbitmqctl sync_queue {queue-name}

11. 取消同步某個隊列:rabbitmqctl cancel_sync_queue{queue-name}

用戶管理

1.  添加用戶:rabbitmqctl add_user username password

2.  刪除用戶:rabbitmqctl delete_user username

3.  修改密碼:rabbitmqctl change_password username newpassword

4.  清除密碼:rabbitmqctl clear_password {username}

5.  設置用戶標簽:rabbitmqctl set_user_tags {username} {tag…}如果tag為空則表示清除這個用戶的所有標簽

6.  列出所有用戶 :rabbitmqctl list_users

權限控制

1.  創建虛擬主機:rabbitmqctl add_vhost vhostpath

2.  刪除虛擬主機:rabbitmqctl delete_vhost vhostpath

3.  列出所有虛擬主機:rabbitmqctl list_vhosts

4.  設置用戶權限:rabbitmqctl set_permissions [-p vhostpath] {username} {conf} {write} {read}

5.  清除用戶權限:rabbitmqctl clear_permissions [-p vhostpath] {username}

6.  列出虛擬主機上的所有權限:rabbitmqctl list_permissions [-p vhostpath]

7.  列出用戶權限:rabbitmqctl list_user_permissions {username}

參數管理

這個不常用,具體的可以去官網看文檔

協議管理

1.  設置協議:rabbitmqctl set_policy [-p vhostpath] [--priority priority] [--apply-to apply-to] {name} {pattern} {definition}

a)  name

協議的名字

b)  pattern

匹配的正則表達式

c)  definition

json term的形式來定義這個協議

d)  priority

優先級,數字越大優先級越高,默認為0

e)  apply-to

policy的類型,有三種:queues exchanges all 默認為all,具體定義可以去官網看文檔

2.  清除協議:rabbitmqctl clear_policy [-p vhostpath] {name}

3.  列出協議列表:rabbitmqctl list_policies [-p vhostpath]

服務器狀態

1.  隊列列表:rabbitmqctl list_queues [-p vhostpath] [queueinfoitem…]

queueinfoitem:

a)  name

b)  durable

c)  auto_delete

d)  arguments

e)  policy

f)  pid

g)  owner_pid

h)  exclusive_consumer_pid

i)  exclusive_consumer_tag

j)  messages_ready

k)  messages_unacknowledged

l)  messages

m)  consumers

n)  active_consumers

o)  memory

p)  slave_pids

q)  synchronized_slave_pids

r)  status

2.  交換機列表:rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem…]

exchangeinfoitem:

a)  name

b)  type

c)  durable

d)  auto_delete

e)  internal

f)  arguments

g)  policy

3.  綁定列表:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem…]

bindinginfoitem:

a)  source_name

b)  source_kind

c)  destination_name

d)  destination_kind

e)  routing_key

f)  arguments

4.  連接列表:rabbitmqctl list_connections不常用,具體去官網看文檔

5.  通道列表:rabbitmqctl list_channels不常用,具體去官網看文檔

6.  消費者列表:rabbitmqctl list_consumers

7.  當前狀態:rabbitmqctl status

8.  當前環境:rabbitmqctl environment

9.  相關報告:rabbitmqctl report

一些其他的命令

后台開啟rabbitmq服務:rabbitmq-server –detached

聲明隊列:rabbitmqadmin declare queue name=queue-name durable={false | true}

發布消息:rabbitmqadmin publish exchange=exchange-name routing_key=key payload=”context”

如果有任何疑問可以去官網看文檔:

https://www.rabbitmq.com/man/rabbitmqctl.1.man.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM