二、RabbitMQ安裝
RabbitMQ安裝
RabbitMQ是由Erlang語言編寫的,因此在使用RabbitMQ之前需要安裝Erlang,本次安裝Erlang_19.3
版本
1、安裝Erlang
下載
Erlang
的19.3
版本,官網下載為otp_src_19.3.tar.gz
[[email protected] ~]$ ls otp_src_19.3.tar.gz
解壓
otp_src_19.3.tar.gz
到當前目錄[[email protected] ~]$ tar -xvf otp_src_19.3.tar.gz
進入解壓目錄,配置安裝目錄為
/usr/local/erlang
--without-javac
選項。[[email protected] ~]$ cd otp_src_19.3 [[email protected] otp_src_19.3]$ sudo ./configure --prefix=/usr/local/erlang
在這一步中如果出現類似
No curses library functions found
的錯誤,此時就需要安裝
ncurses
(出現提示輸入y
後回車安裝)[[email protected] otp_src_19.3]$ sudo yum install ncurses-devel
上面安裝完後,再執行第3步配置目錄,如果還出現如下錯誤
crypto : No usable OpenSSL found odbc : ODBC library - link check failed ssh : No usable OpenSSL found ssl : No usable OpenSSL found
可以執行安裝相應缺失的包
安裝
OpenSSL
包查詢yum源中含有的
ssl
包[[email protected] otp_src_19.3]$ yum list | grep ssl openssl-devel.i686 1:1.0.2k-12.el7 base openssl-devel.x86_64 1:1.0.2k-12.el7 base
執行安裝
openssl-devel
包[[email protected] otp_src_19.3]$ sudo yum install openssl-devel
安裝
ODBC
包查詢yum源中含有的
ODBC
包[[email protected] otp_src_19.3]$ yum list | grep ODBC unixODBC-devel.i686 2.3.1-11.el7 base unixODBC-devel.x86_64 2.3.1-11.el7 base
執行安裝
unixODBC-devel
包[[email protected] otp_src_19.3]$ sudo yum install unixODBC-devel
安裝完後,重新執行配置目錄
[[email protected] otp_src_19.3]$ sudo ./configure --prefix=/opt/erlang
安裝
Erlang
執行如下命令編譯安裝
[[email protected] otp_src_19.3]$ sudo make [[email protected] otp_src_19.3]$ sudo make install
配置環境變數
[[email protected] otp_src_19.3]$ sudo vim /etc/profile
在
/etc/profile
中寫入如下內容# Erlang ERLANG_HOME=/usr/local/erlang export PATH=$PATH:${ERLANG_HOME}/bin export ERLANG_HOME
啟動
Erlang shell
[[email protected] otp_src_19.3]$ erl Erlang/OTP 19 [erts-8.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Eshell V8.3 (abort with ^G) 1>
啟動成功,退出
Erlang shell
1> halt().
2、安裝RabbitMQ
下載
RabbitMQ
的3.6.14
版本,官網下載為rabbitmq-server-generic-unix-3.6.14.tar.xz
[[email protected] ~]$ ls rabbitmq-server-generic-unix-3.6.14.tar.xz
解壓
rabbitmq-server-generic-unix-3.6.14.tar.xz
到/opt
目錄[[email protected] ~]$ sudo tar -xvf rabbitmq-server-generic-unix-3.6.14.tar.xz -C /usr/local
修改解壓的目錄
rabbitmq_server-3.6.14
為rabbitmq
[[email protected] ~]$ cd /usr/local [[email protected] local]$ sudo mv rabbitmq_server-3.6.14 rabbitmq
修改
rabbitmq
目錄及目錄使用者組和使用者為hayson
[[email protected] local]$ sudo chgrp -R hayson rabbitmq [[email protected] local]$ sudo chown -R hayson rabbitmq
配置環境變數
[[email protected] local]$ sudo vim /etc/profile
寫入如下內容
RABBITMQ_HOME=/usr/local/rabbitmq export PATH=$PATH:${RABBITMQ_HOME}/sbin export RABBITMQ_HOME
啟動
rabbitmq
[[email protected] local]$ cd rabbitmq [[email protected] rabbitmq]$ rabbitmq-server RabbitMQ 3.6.14. Copyright (C) 2007-2017 Pivotal Software, Inc. ## ## Licensed under the MPL. See http://www.rabbitmq.com/ ## ## ########## Logs: /opt/rabbitmq/var/log/rabbitmq/[email protected] ###### ## /opt/rabbitmq/var/log/rabbitmq/[email protected] ########## Starting broker... completed with 0 plugins.
輸出如上資訊,
RabbitMQ
啟動成功。上面是以當前
Shell
視窗執行並列印資訊,一旦關閉終端後便停止執行,不推薦使用該命令執行。所以在rabbitmq-server
命令後面新增一個引數-detached
[[email protected] rabbitmq]$ rabbitmq-server -detached
可以讓
RabbitMQ
以守護程序方式在後臺執行,不會因為當前Shell
視窗的關閉而停止執行。檢視
RabbitMQ
啟動狀態通過
rabbitmqctl status
[[email protected] rabbitmq]$ rabbitmqctl status
如果
RabbitMQ
正常啟動,無輸出紅色錯誤資訊。通過
rabbitmqctl cluster_status
[[email protected] rabbitmq]$ rabbitmqctl cluster_status Cluster status of node [email protected] [{nodes,[{disc,[[email protected]]}]}, {running_nodes,[[email protected]]}, {cluster_name,<<"[email protected]">>}, {partitions,[]}, {alarms,[{[email protected],[]}]}]
以上通過檢視叢集資訊來檢視
RabbitMQ
是否啟動成功。以上目前只有一個RabbitMQ
服務節點,可以看作單節點的叢集通過埠檢視
[[email protected] rabbitmq]$ lsof -i:5672 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME beam 89238 hayson 51u IPv6 197613 0t0 TCP *:amqp (LISTEN)
RabbitMQ
預設埠為5672
,通過檢視該埠可以檢視到*:amqp(LISTEN)
在監聽狀態通過
ps
命令[[email protected] rabbitmq]$ ps -ef | grep rabbitmq hayson 102312 1 0 11月13 ? 00:03:37 /usr/local/erlang/lib/erlang/erts-8.3/bin/beam -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/local/erlang/lib/erlang -progname erl -- -home /home/hayson -- -pa /usr/local/rabbitmq/ebin -noshell -noinput -s rabbit boot -sname [email protected] -boot start_sasl -config /usr/local/rabbitmq/etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/usr/local/rabbitmq/var/log/rabbitmq/[email protected]"} -rabbit sasl_error_logger {file,"/usr/local/rabbitmq/var/log/rabbitmq/[email protected]"} -rabbit enabled_plugins_file "/usr/local/rabbitmq/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/local/rabbitmq/plugins" -rabbit plugins_expand_dir "/usr/local/rabbitmq/var/lib/rabbitmq/mnesia/[email protected]" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/usr/local/rabbitm /var/lib/rabbitmq/mnesia/[email protected]" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 -noshell -noinput
啟動成功,輸出
rabbitmq
相關資訊,未啟動無資訊。
開啟
webui
介面管理預設情況下,安裝
RabbitMQ
並啟動成功,並不會開啟任何外掛[[email protected] rabbitmq]$ rabbitmq-server RabbitMQ 3.6.14. Copyright (C) 2007-2017 Pivotal Software, Inc. ## ## Licensed under the MPL. See http://www.rabbitmq.com/ ## ## ########## Logs: /opt/rabbitmq/var/log/rabbitmq/[email protected] ###### ## /opt/rabbitmq/var/log/rabbitmq/[email protected] ########## Starting broker... completed with 0 plugins.
如果需要通過瀏覽器訪問
RabbitMQ
管理介面,要開啟rabbitmq_management
外掛檢視
RabbitMQ
所有外掛[[email protected] ~]$ rabbitmq-plugins list -v Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on [email protected] |/ [ ] rabbitmq_management Version: 3.6.14 Dependencies: [amqp_client,cowboy,cowlib,rabbitmq_web_dispatch, rabbitmq_management_agent] Description: RabbitMQ Management Console
可以看到
rabbitmq_management
就是RabbitMQ
的web管理外掛,還需要同時開啟其他的5
個外掛。開啟
rabbitmq_management
外掛[[email protected] ~]$ rabbitmq-plugins enable rabbitmq_management The following plugins have been enabled: amqp_client cowlib cowboy rabbitmq_web_dispatch rabbitmq_management_agent rabbitmq_management Applying plugin configuration to [email protected] started 6 plugins.
共開啟了
6
個外掛。檢視外掛列表,前面出現e*
標記表示開啟[[email protected] ~]$ rabbitmq-plugins list Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on [email protected] |/ [e*] amqp_client 3.6.14 [e*] cowboy 1.0.4 [e*] cowlib 1.0.2 [ ] rabbitmq_consistent_hash_exchange 3.6.14 [ ] rabbitmq_event_exchange 3.6.14 [ ] rabbitmq_federation 3.6.14 [E*] rabbitmq_management 3.6.14 [e*] rabbitmq_management_agent 3.6.14 [e*] rabbitmq_web_dispatch 3.6.14
重啟
rabbitmq
,通過rabbitmqctl status
可以看到http
服務開啟,佔用埠15672
,並且通過檢視啟動狀態和埠15672
看到監聽狀態。[[email protected] ~]$ rabbitmqctl shutdown [[email protected] ~]$ rabbitmq-server -detached [[email protected] ~]$ rabbitmqctl status | grep listeners {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{http,15672,"::"}]}, [[email protected] sbin]$ lsof -i:15672 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME beam 89238 hayson 52u IPv4 197670 0t0 TCP *:15672 (LISTEN)
配置防火牆埠以便外網瀏覽器訪問
[[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success
使用者登入
webui
管理介面預設使用者
guest
登入預設情況下,訪問
RabbitMQ
服務的使用者名稱和密碼都是guest
,這個賬戶有限制,預設只能通過本地網路(如localhost
)訪問,遠端網路訪問受限,可以通過配置檔案rabbitmq.config
進行配置外網訪問[[email protected] ~]$ cd /usr/local/rabbitmq/etc/rabbitmq [[email protected] rabbitmq]$ vim rabbitmq.config
寫入如下內容
[ {rabbit, [{loopback_users,[]}]} ].
儲存後,重啟
RabbitMQ
,可以在外網瀏覽器通過預設使用者guest
登入。建立使用者登入
預設情況下,訪問
RabbitMQ
服務的使用者名稱和密碼都是guest
,這個賬戶有限制,預設只能通過本地網路(如localhost
)訪問,遠端網路訪問受限,通過配置可以設定外網訪問,但不推薦。所以需要另外建立一個使用者建立使用者
[[email protected] rabbitmq]$ rabbitmqctl add_user admin admin Creating user "admin"
為使用者設定許可權
設定使用者
admin
訪問名為“/(所有)”的虛擬主機,並對所有.*(正則)
的資源具有配置許可權,並對所有資源執行寫入.*(正則)
和讀取.*(正則)
許可權資源:[[email protected] rabbitmq]$ rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" Setting permissions for user "admin" in vhost "/"
設定使用者為管理員角色
[[email protected] rabbitmq]$ rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator]
檢視
RabbitMQ
使用者[[email protected] rabbitmq]$ rabbitmqctl list_users Listing users admin [administrator] guest [administrator]
可以看到使用者
admin
為管理員許可權
外網瀏覽器開啟並輸入使用者名稱和密碼登入,進入管理頁面
3、本節RabbitMQ相關命令
# 啟動rabbitmq,在當前Shell視窗開啟並列印資訊,關閉視窗後停止執行,不推薦使用
rabbitmq-server
# 啟動rabbitmq,以守護程序方式在後臺執行,不會因為當前Shell視窗的關閉而停止執行。
rabbitmq-server -detached
# 關閉rabbitmq
rabbitmqctl shutdown
# 檢視所有外掛,後面加 -v 顯示詳細資訊
rabbitmq-plugins list
# 開啟外掛,後面加外掛名
rabbitmq-plugins enable pluginName
# 關閉外掛
rabbitmq-plugins disable pluginName
# 檢視rabbitmqctl所有命令
rabbitmqctl
# rabbitmq啟動狀態
rabbitmqctl status
# 建立rabbitmq使用者名稱和密碼
rabbitmqctl add_user username password
# 設定使用者admin訪問名為“/(所有)”的虛擬主機,並對所有.*(正則)的資源具有配置許可權,並對所有資源執行寫入.*(正則)和讀取.*(正則)許可權資源:
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 設定使用者為管理員角色
rabbitmqctl set_user_tags admin administrator
# 檢視rabbitmq所有使用者
rabbitmqctl list_users