rabbitMQ的安裝和配置
阿新 • • 發佈:2018-02-01
連接數 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開機自啟動和監聽
註意:如果啟動的時候發現無效,可能有以下原因:
可能是權限問題,你需要切換到root賬戶執行操作;
主機名問題,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的安裝和配置