rabbitMQ之安裝和配置(一)


前言

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

下載安裝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
# 安裝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,這樣當需要卸載的時候直接刪除這個目錄就行了;

apt安裝

sudo apt update
apt install 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  # 重啟測試一下
  • 使用sysv-rc-conf管理
apt intsall sysv-rc-conf

vi rabbitmq.service
# start rabbitmq
/usr/local/rabbitmq_server/sbin/rabbitmq-server -detached

chmod 755 rabbitmq.service
# 將本腳本放置在/etc/init.d目錄下

sysv-rc-conf打開管理界面添加權限。

如果無法啟動可能有一下的原因:

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

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

vi /etc/hosts

127.0.0.1   hostname

apt安裝

apt install rabbitmq-server

apt安裝后rabbitmq-server會自動啟動。rabbitmq的安裝文件目錄在/usr/local/rabbitmq,啟動文件在/etc/init.d/rabbitmq-server,命令行目錄在/usr/sbin/rabbitmmq.

# /etc/init.d/rabbitmq-server
PATH=/sbin:/usr/sbin:/bin:/usr/bin
NAME=rabbitmq-server
DAEMON=/usr/sbin/${NAME} # 守護進程的路徑
CONTROL=/usr/sbin/rabbitmqctl # 客戶端路徑
DESC="RabbitMQ Messaging Server"
USER=rabbitmq
ROTATE_SUFFIX=
INIT_LOG_DIR=/var/log/rabbitmq # 日志路徑
PID_FILE=/var/run/rabbitmq/pid # 進程文件路徑

rabbitmq的組件

rabbitmq的組件放置在~/bin目錄下,我們進入可以看到:

rabbitmqctl : rabbitmq的客戶端,用來連接管理rabbitmq;
rabbitmq-env :配置環境變量的管理者;
rabbitmq-plugins:rabbitmq后台插件管理;
rabbitmq-server: rabbitmq守護進程;

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服務運行的進程ID
 {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}}]

參考


免責聲明!

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



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