我的個人網站
CentOS7.0安裝RabbitMQ
- 安裝前的準備
yum install \ m4 \ vim \ wget \ gcc \ gcc-c++ \ make \ cmake \ automake \ autoconf \ readline \ kernel-devel \ ncurses-devel \ openssl-devel \ unixODBC-deve \ readline-devel \ librabbitmq-devel \ -y \
- 源碼安裝erlang erlang下載下傳 erlang-20.0
cd /root wget http://erlang.org/download/otp_src_20.0.tar.gz tar -zxvf otp_src_20.0.tar.gz cd otp_src_20.0 ./configure \ --prefix=/usr/local/erlang \ --without-javac \ make make install
- 加入環境變量
vim /etc/profile export PATH=$PATH:/usr/local/erlang/bin ESC :wq source /etc/profile
- 測試啟動erlang
/usr/local/erlang/bin/erl # 顯示Eshell V8.2 (abort with ^G) # 輸入: 1>9+7. 16 # 退出: 2>halt().
- 安裝RabbitMQ 下載下傳位址
進入下載下傳位址,找到|Binary .tar.xz .zip| cd /root 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 cp -r /root/rabbitmq_server-3.6.10 /usr/local/rabbitmq
- 添加配置檔案 配置參考
vim /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config [{rabbit,[{tcp_listeners,[5672]}]}]. ESC :wq
-
vim /etc/profile export RABBITMQ_HOME=/usr/local/rabbitmq export PATH=$PATH:/usr/local/rabbitmq/sbin ESC :wq source /etc/profile
- 啟動RabbitMQ
/usr/local/rabbitmq/sbin/rabbitmq-server -detached
- 開機啟動RabbitMQ
vim /etc/rc.local /usr/local/rabbitmq/sbin/rabbitmq-server -detached ESC :wq
- 安裝php-amqp擴充前準備: 安裝rabbitmq-c 參考連結
cd /root wget https://github.com/alanxz/rabbitmq-c/archive/v0.8.0.tar.gz tar -zxvf v0.8.0.tar.gz cd rabbitmq-c-0.8.0 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c-0.8.0 make make install
- 添加使用者并授權
# 建立使用者 rabbitmqctl add_user rabbitmq '12345678' # 添加使用者[管理者]标簽 rabbitmqctl set_user_tags rabbitmq administrator # 建立virtual host rabbitmqctl add_vhost /vhost1 # 為使用者授權可以通路的[virtual host]和操作類型[配置、讀、寫] rabbitmqctl set_permissions -p /vhost1 rabbitmq '.*' '.*' '.*' # 啟用rabbitmq_management rabbitmq-plugins enable rabbitmq_management
RabbitMQ權限
- RabbitMQ角色權限
# 角色清單: none、management、policymaker、monitoring、administrator # 角色權限: 【none】 不能通路 management_plugin(圖形管理界面) 【management】(單一virtual hosts使用者) 使用者可以通過AMQP做的任何事外加: 列出自己可以通過AMQP登入的virtual hosts 檢視自己的virtual hosts中的queues, exchanges 和 bindings 檢視和關閉自己的channels 和 connections 檢視有關自己的virtual hosts的“全局”的統計資訊,包含其他使用者在這些virtual hosts中的活動 【policymaker】 management可以做的任何事外加: 檢視、建立和删除自己的virtual hosts所屬的policies和parameters 【monitoring】(監控使用者) management可以做的任何事外加: 列出所有virtual hosts,包括他們不能登入的virtual hosts 檢視其他使用者的connections和channels 檢視節點級别的資料如clustering和memory使用情況 檢視真正的關于所有virtual hosts的全局的統計資訊 【administrator】(全權使用者) policymaker和monitoring可以做的任何事外加: 建立和删除virtual hosts 檢視、建立和删除users 檢視建立和删除permissions 關閉其他使用者的connections
RabbitMQ管理
- rabbitmq-plugins指令詳解
# 格式: rabbitmq-plugins <command> [<command options>] # 顯示所有的的插件 -v:顯示插件版本 -m:顯示插件名稱 -E:顯示明确已經開啟的插件 -e:顯示明确和背景開啟的插件 rabbitmq-plugins list [-v|-m] [-E|-e] [<pattern>] # 啟用插件 rabbitmq-plugins enable <plugin1> <plugin2> ... <plugin_n> # 禁用插件 rabbitmq-plugins disable <plugin1> <plugin2> ... <plugin_n> # 啟用所有插件 rabbitmq-plugins enable \ amqp_client \ cowboy \ cowlib \ rabbitmq_amqp1_0 \ rabbitmq_auth_backend_ldap \ rabbitmq_auth_mechanism_ssl \ rabbitmq_consistent_hash_exchange \ rabbitmq_event_exchange \ rabbitmq_federation \ rabbitmq_federation_management \ rabbitmq_jms_topic_exchange \ rabbitmq_management \ rabbitmq_management_agent \ rabbitmq_management_visualiser \ rabbitmq_mqtt \ rabbitmq_recent_history_exchange \ rabbitmq_sharding \ rabbitmq_shovel \ rabbitmq_shovel_management \ rabbitmq_stomp \ rabbitmq_top \ rabbitmq_tracing \ rabbitmq_trust_store \ rabbitmq_web_dispatch \ rabbitmq_web_stomp \ rabbitmq_web_stomp_examples \ sockjs \
- rabbitmqctl指令全解(CLI模式管理)
# 格式: rabbitmqctl [-n <node>] [-q] <command> [<command options>] # 【基本指令】 # 停止運作rabbitmq rabbitmqctl stop <pid_file> # 停止運作rabbitmq上的應用 rabbitmqctl stop_app # 等待rabbitmq服務啟動 rabbitmqctl wait <pid_file> # 初始化node狀态(要先執行rabbitmqctl stop_app) rabbitmqctl reset # 強制初始化node狀态 rabbitmqctl force_reset # 輪轉日志檔案 rabbitmqctl rotate_logs <suffix> # 【cluster叢集管理】 # 預設node以disc node加入叢集,--ram表示node以ram node加入叢集中(要先執行rabbitmqctl stop_app) rabbitmqctl join_cluster <node name> --ram # 顯示cluster中的所有node rabbitmqctl cluster_status # 改變一個cluster中node的模式,該節點在轉換前必須先停止,不能把一個叢集中唯一的disk node轉化為ram node rabbitmqctl change_cluster_node_type disc | ram # 遠端移除cluster中的一個node,前提是該node必須處于offline狀态,如果是online狀态,則需要加--offline參數。 rabbitmqctl forget_cluster_node --offline # 遠端更新cluster中的node rabbitmqctl update_cluster_nodes clusternode # 同步鏡像隊列 rabbitmqctl sync_queue queue # 取消同步鏡像隊列 rabbitmqctl cancel_sync_queue queue # 【使用者管理】 # 添加rabbitmq使用者 rabbitmqctl add_user <username> <password> # 删除rabbitmq使用者 rabbitmqctl delete_user <username> # 改變rabbitmq使用者密碼 rabbitmqctl change_password <username> <newpassword> # 清除使用者密碼,禁止使用者登入 rabbitmqctl clear_password <username> # 設定使用者标簽 rabbitmqctl set_user_tags <username> <tag1> <tag2> ... <tag_n> # 列出使用者 rabbitmqctl list_users # 建立一個vhosts rabbitmqctl add_vhost <vhostpath> # 删除一個vhosts rabbitmqctl delete_vhost <vhostpath> # 列出vhosts rabbitmqctl list_vhosts <vhostinfoitem1> <vhostinfoitem2> ... <vhostinfoitem_n> # 針對一個vhosts 給使用者賦予相關權限 rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read> # 清除一個使用者對vhosts的權限 rabbitmqctl clear_permissions [-p <vhostpath>] <username> # 列出哪些使用者可以通路該vhosts rabbitmqctl list_permissions [-p <vhostpath>] #列出該使用者的通路權限 rabbitmqctl list_user_permissions <username> # 修改vhost路徑參數 rabbitmqctl set_parameter [-p <vhostpath>] <component_name> <key> <value> # 清除vhost路徑參數 rabbitmqctl clear_parameter [-p <vhostpath>] <component_name> <key> # 列出vhost路徑參數 rabbitmqctl list_parameters [-p <vhostpath>] # 【政策policy管理】 # name:政策名稱 pattern:比對資源正規表達式 apply-to:政策應用類型範圍,有[all、queues、exchange] priority:整數優先級 definition:json格式設定的政策 rabbitmqctl set_policy [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition(json)> #清除一個政策 rabbitmqctl clear_policy [-p <vhostpath>] <name> # 列出已有的政策 rabbitmqctl list_policies [-p <vhostpath>] # 【queues exchanges】 # 傳回queue的資訊,如果省略了-p參數,則預設顯示的是"/"vhosts的資訊。 rabbitmqctl list_queues [-p <vhostpath>] [<queueinfoitem> ...] # 傳回exchange的資訊 rabbitmqctl list_exchanges [-p <vhostpath>] [<exchangeinfoitem> ...] # 傳回綁定資訊 rabbitmqctl list_bindings [-p <vhostpath>] [<bindinginfoitem> ...] # 傳回連結資訊 rabbitmqctl list_connections [<connectioninfoitem> ...] # 傳回目前所有的channels rabbitmqctl list_channels [<channelinfoitem> ...] # 傳回consumers rabbitmqctl list_consumers [-p <vhostpath>] # 顯示broker的狀态 rabbitmqctl status # 顯示環境參數的資訊 rabbitmqctl environment # 傳回一個服務狀态report rabbitmqctl report # 傳回一個服務狀态eval rabbitmqctl eval <expr>
- rabbitmqctl管理方式
# 啟用rabbitmq_management rabbitmq-plugins enable rabbitmq_management # (不成功則先執行:rabbitmqctl start_app) # web通路: http://[ip]:15672 # api通路: http://[ip]:15672/api # cli通路: http://[ip]:15672/cli
- 領支付寶紅包支援作者