1. 程式人生 > >rabbitMQ的安裝和配置

rabbitMQ的安裝和配置

連接數 term 運行 gen ++ ln -s strong prot profile

  • erlang是一門面向並發的編程語言,流行的消息隊列rabbitMQ是基於erlang環境運行的;

系統環境

  • 操作系統:oracle-linux7.3

  • erlang版本:otp_src_20.0

下載安裝erlang語言環境

# 從官網下載,在任何目錄下,使用root權限
wget http://www.erlang.org/download/otp_src_20.0.tar.gz
# 解壓到習慣目錄
tar -zxvf otp_src_20.0.tar.gz -C /usr/local/
# 修改名字
mv otp_src_20.0 erlang
# 安裝二郎需要的依賴包
yum -y install gcc glibc-devel make ncurses-devel openssl openssl-devel autoconf gcc-c++ kernel-devel m4  unixODBC unixODBC-devel wxGTK wxGTK-devel fop libxslt libxslt-devel
# 進入目錄
cd erlang
# 指定安裝的目錄和相關的配置
./configure --prefix=/usr/local/erlang --enable-gui=no --enable-threads --enable-smp-support --enable-kernel-poll --enable-native-libs --enable-hipe --without-javac
# 如果沒有報錯,或只出現沒有  wx not found和Java compiler disabled by user是正常的
make & make install
  • 註意:

  • 如果出現錯誤如“沒有目標創建XXXXX”,找到進入的目錄如果是hipe目錄,就在配置中增加:

./configure --prefix=/usr/local/erlang --enable-XXXXX  # XXXX 表示報錯的目錄,一般是權限的問題;
  • 細節

  • 本人習慣將安裝文件和源文件放在一個大目錄下,如erlang,這樣當需要卸載的時候直接刪除這個目錄就行了;

測試

默認安裝的客戶端是在/usr/local/erlang/bin下的
cd /usr/local/erlang/bin
# 輸入./erl,如果出現交互界面則成功了

鏈接和環境變量

# 創建一個軟連接到系統路徑中
ln -s /usr/local/erlang/bin/erl /usr/bin/erl

rabbitMQ的安裝和使用

  • 可以直接下載可用的安裝文件
cd /usr/local
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-generic-unix-3.6.10.tar.xz
# 解壓
xz -d rabbitmq-server-generic-unix-3.6.10.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.10.tar

# 重新命名
mv rabbitmq_server-3.6.10 rabbitmq_server
# 進入文件目錄,這已經算是安裝好的文件了
  • 相關的使用的命令都在sbin目錄中,將sbin目錄添加到系統環境變量;
vi /etc/profile
# 在文件的末尾添加

#set rabbitmq
export PATH=$PATH:/usr/local/rabbitmq_server/sbin

配置開機自啟動

  • 在/etc/rc.d/rc.local文件中加入啟動命令
vi /etc/rc.d/rc.local

# start rabbitmq
/usr/local/rabbitmq_server/sbin/rabbitmq-server -detached

reboot  # 重啟測試一下
  • 如果想寫監聽腳本可以參考配置redis開機自啟動和監聽

註意:如果啟動的時候發現無效,可能有以下原因:

  1. 可能是權限問題,你需要切換到root賬戶執行操作;

  2. 主機名問題,rabbitmq會在啟動前會解析主機名的地址是否可通,需要添加主機名;

vi /etc/hosts

127.0.0.1   hostname
  • 問題:

本人設置開機自啟動的時候,發現向rc.local文件添加啟動命令或者使用chkconfig添加啟動腳本都無效,最後啟動終極殺器,在系統配置文件中加入:

vi /etc/profile

# start rabbitmq
/usr/local/rabbitmq_server/sbin/rabbitmq-server -detached

rabbitmq的管理

  • rabbitmq使用rabbitmqctl管理,常用的命令有:
rabbitmq-server -detached  # 使用守護進程方式打開
rabbitmq-server start  # 使用阻塞方式啟動
rabbitmqctl stop  # 關閉rabbitmq
rabbitmqctl list_users  # 查看後臺管理員名單
rabbitmqctl list_queues  # 查看當前的所有的隊列
rabbitmqctl list_exchanges  # 查看所有的交換機
rabbitmqctl list_bindings  # 查看所有的綁定
rabbitmqctl list_connections  # 查看所有的tcp連接
rabbitmqctl list_channels  # 查看所有的信道
rabbitmqctl stop_app  # 關閉應用
rabbitmqctl start_app # 打開應用
rabbitmqctl reset  # 清空隊列
  • 查看狀態信息
rabbitmqctl status

# 得到如下的信息

[{pid,3086},   # rabbitmq服務運行的端口
 {running_applications,
     [{rabbit,"RabbitMQ","3.6.10"},
      {ranch,"Socket acceptor pool for TCP protocols.","1.3.0"},
      {ssl,"Erlang/OTP SSL application","8.2"},
      {public_key,"Public key infrastructure","1.4.1"},
      {asn1,"The Erlang ASN1 compiler version 5.0","5.0"},
      {os_mon,"CPO  CXC 138 46","2.4.2"},
      {rabbit_common,
          "Modules shared by rabbitmq-server and rabbitmq-erlang-client",
          "3.6.10"},
      {syntax_tools,"Syntax tools","2.1.2"},
      {xmerl,"XML parser","1.3.15"},
      {crypto,"CRYPTO","4.0"},
      {mnesia,"MNESIA  CXC 138 12","4.15"},
      {compiler,"ERTS  CXC 138 10","7.1"},
      {sasl,"SASL  CXC 138 11","3.0.4"},
      {stdlib,"ERTS  CXC 138 10","3.4"},
      {kernel,"ERTS  CXC 138 10","5.3"}]},
 {os,{unix,linux}},
 {erlang_version,
     "Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:64] [hipe] [kernel-poll:true]\n"},
 {memory,  # 內存
     [{total,56444960},  # 總共消耗的內存,單位字節
      {connection_readers,0},  # tcp訂閱連接消耗
      {connection_writers,0},  # tcp發布者連接消耗
      {connection_channels,0}, # 信道消耗
      {connection_other,0},    # 其他消耗
      {queue_procs,2840},      # 隊列進程消耗
      {queue_slave_procs,0},   # 隊列子進程消耗
      {plugins,0},             # 插件消耗
      {other_proc,22726336},   # 其他進程消耗
      {mnesia,60944},          
      {metrics,184544},
      {mgmt_db,0},
      {msg_index,45048},       # 消息標記
      {other_ets,1695784},
      {binary,94472},         # 一些被引用的數據
      {code,21374813},        # 代碼
      {atom,891849},
      {other_system,9549962}]},
 {alarms,[]},
 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},  # mq監聽端口5672,erlang端口25672
 {vm_memory_high_watermark,0.4},  # 開啟流控的內存閥值
 {vm_memory_limit,6568098201},    # 消息持久化閥值
 {disk_free_limit,50000000},      # 磁盤開啟流控閥值
 {disk_free,48187891712},         # 磁盤空閑量
 {file_descriptors,  # 文件句柄
     [{total_limit,924},  # 文件句柄上限
     {total_used,2},      # 已使用
     {sockets_limit,829}, # 允許的TCP連接上限
     {sockets_used,0}]},  # 已使用連接數
 {processes,       
    [{limit,1048576},     # 允許的最大進程數
    {used,156}]},         # 已使用進程數
 {run_queue,0},           # 運行的隊列數
 {uptime,97},             
 {kernel,{net_ticktime,60}}]

rabbitMQ的安裝和配置