前言:rabbitmq一旦有漏洞,版本升级麻烦,于是改为docker部署
环境:centos7
#停掉之前的服务
systemctl stop rabbitmq-server
systemctl disable rabbitmq-server
查了官网,当前3.11.x 最高版本是3.11.19, 虽然3.12.x已出,还是继续用3.11.x
于是使用镜像 rabbitmq:3.11.19-management
#拉取镜像
docker pull rabbitmq:3.11.19-management
#运行
docker run -d --hostname mq --name rabbitmq -p 15672:15672 -p 5672:5672 -p 1883:1883 -p 15675:15675 -v /opt/common/rabbitmq/etc:/etc/rabbitmq -v /opt/common/rabbitmq/lib:/var/lib/rabbitmq -v /opt/rabbitmq/log:/var/log/rabbitmq -e TZ=Asia/Shanghai rabbitmq:3.11.19-management
查看日志,如果有文件夹权限问题,则可能是映射文件夹权限,则看看该容器是什么用户,然后设置为该用户所属就行。
chown -R polkitd:input /opt/common/rabbitmq/
#运行成功之后启动插件
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_management
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_web_mqtt
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_mqtt
#创建账号,进入容器内操作
docker exec -it rabbitmq bash
#进入容器后做以下操作------------start--------------------
#查看用户列表
rabbitmqctl list_users
#添加用户admin
rabbitmqctl add_user admin Abc123$%^
#admin 设置为Administrator
rabbitmqctl set_user_tags admin administrator
#设置权限,允许访问vhost “/”
rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
#也可以新增vhost,例如增加myhost:rabbitmqctl add_vhost myhost,然后加入权限rabbitmqctl set_permissions -p “myhost” admin “." ".” “.*”
#顺手修改一下guest密码,guest默认不可远程连接(只能localhost)
rabbitmqctl change_password guest Admin_mq@1024
#执行exit,退出容器----------------end-----------------------
#开放外部访问:
firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“10.10.5.1/24” port protocol=“tcp” port=“1883” accept”
firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“10.10.5.1/24” port protocol=“tcp” port=“5672” accept”
firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“10.10.5.1/24” port protocol=“tcp” port=“15672” accept”
firewall-cmd --reload
端口说明:
-15672 是rabbitmq management管理界面默认访问端口
-5672 是amqp默认端口
-1883 是mqtt tcp协议默认端口
-15675 是web_mqtt ws协议默认端口
最后测试登录:
http://{ip}:15672
使用admin账号登录
踩坑:
登录不成功时会出现以下错误:
undefined: There is no template at js/tmpl/error-popup.ejs undefined
(其实是提示错误,但这个错误提示模板加载不出)
解决:清除一下浏览器缓存