写在前面:这里是win10本地环境下,使用docker配置一个mqttbroker,选择emqx,
先去官网找镜像
1.mqttbroker拉取镜像
建议拉取image一定指定版本号(dockerhub找镜像,https://hub.docker.com/)这里选择4.2.5版本,我已经安装好了镜像
docker pull emqx/emqx:4.2.5
运行容器
(win 跳过这里) linux中则直接在容器内部修改即可,挂载也没有那么繁琐,linux挂载也很简单
win下,挂载出了问题,config文件没挂载出来,需要共享盘才可以;我还是在容器内部修改吧,win下测试而已,部署一般在linux,都可以挂载成功;
这里要两个端口就可以
docker run -d --name emqx -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 emqx/emqx:4.2.5 docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx/emqx:4.2.5
执行完,服务就已经起来了,可以测试服务了
我这里直接进去了,是因为有浏览器缓存
第一次进需要密码
然后,部署的话,还需要开放端口
(运行发现要修改文件配置,win10 下 还是挂载出来比较好,[宿主机:容器],必须为绝对路径)
(win中,路径需要改写,如c:test 改为 /c/test)
(同时如果容器还没运行起来,那就是需要权限,则需要以管理员身份启动控制台)
docker run -d --name emqx01 -v /c/Users/ts/Desktop/docker_volume:/opt/emqx/etc -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 emqx/emqx:4.2.5
开放端口(本地开发环境不需要,部署时需要)
firewall-cmd --zone=public --add-port=18083/tcp --permanent firewall-cmd --zone=public --add-port=1883/tcp --permanent firewall-cmd --zone=public --add-port=8083/tcp --permanent firewall-cmd --zone=public --add-port=8084/tcp --permanent firewall-cmd --zone=public --add-port=8883/tcp --permanent
重启防火墙(本地开发环境不需要,部署时需要)
firewall-cmd --reload
云服务器安全组开放端口(本地开发环境不需要,部署时需要)
在云服务器控制台里,开放端口
访问mqttbroker(测试服务是否启动)
默认端口: 18083
地址:http://ip:port
emqx管理后台默认初始用户名 admin 密码 public
如图 http://localhost:18083/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sljoEIdl-1642393889787)(C:UserstsAppDataRoamingTyporatypora-user-images1642159362057.png)]
2.使用mqttx连接broker(之前使用mqtt.fx,不太好上手,换了mqttx)
需要先添加用户,在容器内部的配置文件里面
进入容器
docker exec -it emqx bash # 到插件路径下 cd /opt/emqx/etc/plugins # 修改用户配置文件 vi emqx_auth_username.conf
新增几个用户和密码(至少两个)(要会使用vim)(修改后的结果如下)
bash-5.0$ cat emqx_auth_username.conf ##-------------------------------------------------------------------- ## Username Authentication Plugin ##-------------------------------------------------------------------- ## Examples: ##auth.user.1.username = admin ##auth.user.1.password = public ##auth.user.2.username = feng@emqtt.io ##auth.user.2.password = public ##auth.user.3.username = name~!@#$%^&*()_+ ##auth.user.3.password = pwsswd~!@#$%^&*()_+ auth.user.1.username = demo01 auth.user.1.password = demo01 auth.user.2.username = demo02 auth.user.2.password = demo02 auth.user.3.username = demo03 auth.user.3.password = demo03 auth.user.4.username = demo04 auth.user.4.password = demo04 ## Password hash. ## ## Value: plain | md5 | sha | sha256
重启emqx容器
docker restart emqx
使用mqttx连接
订阅topic
demo01订阅了tp01,于是其他client发布tp01的信息,demo01会收到
群发也可以
自己订阅了,自己发,自己也会收到
测试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)