EMQ:


现有的MQTT服务器有很多,例如Mosquitto、Apache-Apollo、EMQ等等,最后呢选择了EMQ毕,国内公司的开源产品,中文资料相对要多一些。EMQ的官网宣称是百万级分布式开源物联网MQTT消息服务器,百不百万倒无所谓,反正是给自用的没有那么多的数据产生。

安装:

服务器系统版本为Ubuntu14.04,首先在EMQ官网下载对应的安装包
http://emqtt.com/downloads/latest/ubuntu14_04-deb
<http://emqtt.com/downloads/latest/ubuntu14_04-deb>,进入目录 输入命令:sudo dpkg -i
emqttd-ubuntu16.04_v2.0_amd64.deb进行安装。按照官方的说明完成上述操作之后还需要安装依赖lksctp-tools库apt-get
install lksctp-tools。至此MQTT服务已经搭建好了,但是还需要一些配置方可使用。

配置:

EMQ提供了Web 管理控制台,默认是开启的,URL 地址: http://localhost:18083 <http://localhost:18083/>
 ,缺省用户名/密码: admin/public。登陆成功之后就能可查询 EMQ
消息服务器基本信息、统计数据、度量数据,查询系统客户端(Client)、会话(Session)、主题(Topic)、订阅(Subscription),以及对插件的管理。


插件里面我觉得最重要的应该是认证插件,当然了是可以不需要认证功能的,但是呢安全性和规范性还是需要认证功能的,EMQ提供了很种方式的认证功能,我选择MySQL认证访问插件。


进入到插件管理页面,打开MySQL配置,第一步填写 MySQL数据库的相关信息,还需要注意一下要把加密方式给去掉,这样连接的时候要方便一些。完成这些配置之后要到MySQL对应的数据库创建用户和访问控制表:
CREATE TABLE `mqtt_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL, `password` varchar(100) DEFAULT NULL,
`salt` varchar(35) 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; INSERT INTO `mqtt_acl` (`id`, `allow`, `ipaddr`,
`username`, `clientid`, `access`, `topic`) VALUES (1,1,NULL,'$all',NULL,2,'#'),
(2,0,NULL,'$all',NULL,1,'$SYS/#'), (3,0,NULL,'$all',NULL,1,'eq #'),
(5,1,'127.0.0.1',NULL,NULL,2,'$SYS/#'), (6,1,'127.0.0.1',NULL,NULL,2,'#'),
(7,1,NULL,'dashboard',NULL,1,'$SYS/#');
为了测试方便先在用户表里面插入一个测试账户信息,例如username:admin 、password:123456,至此认证功能基本上配置好了。

测试:


现在还没有完成硬件部分的设计,只能通过EMQ提供的Websocket工具来测试连通性,打开websocket页面,填写好之前在用户表里面的账户和密码,点击连接测试能否连接成功,如果成功了那么整个MQTT服务的搭建也就顺利完成了。