本文記錄了在vmware虛拟機裡centos7.4安裝rabbitmq3.6.6的過程。
一、下載下傳erlang和rabbitmq-server的rpm:
wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
二、安裝erlang并檢測是否成功
rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm
測試是否安裝成功:
[[email protected] ~]# erl
安裝erlang
三、安裝rabbitmq
rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm
安裝時發現缺少依賴包:socat is needed by rabbitmq-server-3.6.6-1.el7.noarch
yum install socat
安裝依賴包,缺什麼yum install 安裝什麼。
缺少依賴包
補充依賴包後,安裝成功:
rabbitmq安裝成功
四、建立服務:
[[email protected] ~]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
五、啟動服務報錯:
[[email protected] ~]# systemctl start rabbitmq-server.service
rabbitmq啟動服務報錯
檢視狀态:
rabbitmq啟動服務錯誤狀态
經排查,是安裝時改過預設主機名,在hosts檔案中添加IP和改過的主機名的映射:
[[email protected] ~]# vim /etc/hosts
[[email protected] ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 cmp4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.211 cmp4
六、rabbitmq的一些基本操作:
# 添加開機啟動RabbitMQ服務
systemctl enable rabbitmq-server.service
# 檢視服務狀态
systemctl status rabbitmq-server.service
# 啟動服務
systemctl start rabbitmq-server.service
# 停止服務
systemctl stop rabbitmq-server.service
# 檢視目前所有使用者
rabbitmqctl list_users
# 檢視預設guest使用者的權限
rabbitmqctl list_user_permissions guest
# 由于RabbitMQ預設的賬号使用者名和密碼都是guest。為了安全起見, 先删掉預設使用者
rabbitmqctl delete_user guest
# 添加新使用者
rabbitmqctl add_user username password
# 設定使用者tag
rabbitmqctl set_user_tags username administrator
# 賦予使用者預設vhost的全部操作權限
rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
# 檢視使用者的權限
rabbitmqctl list_user_permissions username
七、開啟web管理服務:
如果隻從指令行操作RabbitMQ,多少有點不友善。幸好RabbitMQ自帶了web管理界面,隻需要啟動插件便可以使用。
rabbitmq-plugins enable rabbitmq_management
開啟web管理服務
本地通路: http://localhost:15672,預設guest/guest
rabbitmq服務web管理界面
但是主控端通路不到,檢視下防火牆狀态:
[[email protected] ~]# systemctl status firewalld.service
防火牆狀态
綠的running表示防火牆開啟。
因為我的是虛拟機裡運作,直接關閉防火牆:
[[email protected] ~]# systemctl stop firewalld.service
再次執行檢視防火牆指令:
[[email protected] ~]# systemctl status firewalld.service
如下圖所示表示防火牆已經關閉
執行開機禁用防火牆自啟指令 :
[[email protected] ~]# systemctl disable firewalld.service
此時,遠端能夠通路rabbitmq服務。
=====================================================
PS:防火牆其他指令,用于恢複:
啟動:systemctl start firewalld.service
防火牆随系統開啟啟動 : systemctl enable firewalld.service
PS:如果在防火牆打開時放行,可以開放5672和15672端口 (iptables版本)
/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
八、開啟遠端通路:
- 配置RabbitMQ
關于RabbitMQ的配置,可以下載下傳RabbitMQ的配置檔案模闆到/etc/rabbitmq/rabbitmq.config, 然後按照需求更改即可。
關于每個配置項的具體作用,可以參考官方文檔。
- 開啟guest使用者遠端通路
預設情況下,RabbitMQ的預設的guest使用者隻允許本機通路, 如果想讓guest使用者能夠遠端通路的話,隻需要将配置檔案中的loopback_users清單置為空即可,如下:
{loopback_users, []}
PS:如果沒有找到配置檔案,請參考下面“檢視日志和配置檔案”章節。
另外關于新添加的使用者,直接就可以從遠端通路的,如果想讓新添加的使用者隻能本地通路,可以将使用者名添加到上面的清單, 如隻允許admin使用者本機通路。
{loopback_users, ["admin"]}
restart …
- 建立其他使用者(admin)
[[email protected] ~]# rabbitmqctl add_user admin 123456
[[email protected] ~]# rabbitmqctl set_user_tags admin administrator
[roo[email protected] ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
建立admin使用者
遠端使用admin使用者通路:
遠端通路admin使用者
九、檢視日志和配置檔案:
[[email protected] ~]# systemctl status rabbitmq-server.service
打開日志檔案:
[[email protected] ~]# cat /var/log/rabbitmq/[email protected]
這裡顯示的是沒有找到配置檔案,我們可以自己建立這個檔案:
cd /etc/rabbitmq/
vim rabbitmq.config
編輯内容如下:
[{rabbit, [{loopback_users, []}]}].
這裡的意思是開放使用,rabbitmq預設建立的使用者guest,密碼也是guest,這個使用者預設隻能是本機通路,localhost或者127.0.0.1,從外部通路需要添加上面的配置。
儲存配置後重新開機服務:
systemctl stop rabbitmq-server.service
systemctl start rabbitmq-server.service
此時就可以從外部通路了,此時再看日志檔案,發現已經找到config檔案
如果再看log檔案發現還是顯示沒有找到配置檔案,可以手動删除這個檔案再重新開機服務,不過這不影響使用:
rm /var/log/rabbitmq/[email protected]
service rabbitmq-server stop
service rabbitmq-server start
十:其他問題或FAQ
服務啟動不起來
關于叢集的配置
端口占用
erlang.cookie
...