您现在的位置是:主页 > Web前端技术 > Web前端技术

如何使用Docker搭建MQTT服务器开发技术

IDCBT2021-12-28服务器技术人已围观

简介这篇文章主要介绍如何使用Docker搭建MQTT服务器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 1. 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqtt

这篇文章主要介绍如何使用Docker搭建MQTT服务器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1. 拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6

2. 运行镜像

    –name 名字

    -p 18083 服务器启动端口

    -p 1882 TCP端口

    -p 8083 WS端口

    -p 8084 WSS端口

    -p 8883 SSL端口

    -d 指定容器

    docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6

    3. 进入emq服务页面

      在浏览器输入机器IP:18083就可以进入emqtt页面

      初始的账户 admin, 密码 public

    4. 配置emq(对于V3.1.0)

      为emq的用户配置权限 , emq还支持多种数据库验证, 包括 mongo, redis, pgsql 等等, 有兴趣可以自行研究

    # 进入容器, 不能用 /bin/bash 进入
    docker exec -it emq /bin/sh

    1.首先先关闭匿名认证(默认是开启的谁都能够登录)

    # 编辑配置文件
    vi /opt/emqttd/etc/emq.conf
    # 更改允许匿名 True -> false
    allow_anonymous = false

    2.建立用户和权限的 mysql 表, 可以拉一个 mysql 容器, 也可以直接在你的 ubuntu 里的 mysql 中创建

    CREATE DATABASE emq charset utf8;
    
    use eqm;
    
    CREATE TABLE mqtt_user ( 
    id int(11) unsigned NOT NULL AUTO_INCREMENT, 
    username varchar(100) DEFAULT NULL, 
    password varchar(100) DEFAULT NULL, 
    salt varchar(20) DEFAULT NULL, 
    is_superuser tinyint(1) DEFAULT 0, 
    created datetime DEFAULT NULL, 
    PRIMARY KEY (id), 
    UNIQUE KEY mqtt_username (username) 
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    CREATE TABLE mqtt_acl ( 
    id int(11) unsigned NOT NULL AUTO_INCREMENT, 
    allow int(1) DEFAULT NULL COMMENT '0: deny, 1: allow', 
    ipaddr varchar(60) DEFAULT NULL COMMENT 'IpAddress', 
    username varchar(100) DEFAULT NULL COMMENT 'Username', 
    clientid varchar(100) DEFAULT NULL COMMENT 'ClientId', 
    access int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub', 
    topic varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter', 
    PRIMARY KEY (id) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    3.插入ACL规则 -ACL规则

       tips: !!! 不要直接按照下面的例子设置, 先查看ACL规则了解之后在根据自己情况进行配置

    标签:

    很赞哦! ()

本栏推荐