本项目为大四物联网中间件的课程设计
由于前期未拿到硬件平台以及传感器,所以先做软件方面
首先先搭建mqtt服务器,先看一下目前各类mqtt服务器的对比,下图:
Server | QoS 0 | QoS 1 | QoS 2 | auth | Bridge | $SYS | SSL | Dynamic topics | cluster | websockets | plugin system | Mqtt 5 support | Active development |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Aedes | ✔ | ✔ | ✔ | Username/Password | rm | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |
AWS IoT Services | ✔ | ✔ | ✔ | Client certificates | ? | ✘ | ✔ | § | ✔ | ✔ | ✘ | ✘ | ✔ |
Apache ActiveMQ Artemis | ✔ | ✔ | ✔ | JAAS | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |
BevywiseIoTPlatform | ✔ | ✔ | ✔ | Key based | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | rm | ✘ | ✔ |
ClearBlade | ✔ | ✔ | ✔ | OAuth based User/Pass & Per-channel authorization | ? | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ✘ | ✔ |
ejabberd | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
emitter | ✔ | ✘ | ✘ | Per-channel authorization | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ |
emqttd / EMQ | ✔ | ✔ | ✔ | Username/Password, JWT, LDAP, ClientID, … | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |
flespi | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ |
GnatMQ / M2MQTT | ✔ | ✔ | ✔ | Username/Password | ✘ | ✘ | ✔ | ✔ | ✘ | ✘ | ✘ | ✘ | ✔ |
HBMQTT | ✔ | ✔ | ✔ | Username/Password, Client certificates | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ |
HiveMQ | ✔ | ✔ | ✔ | Username/Password | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
IBM IoT MessageSight | ✔ | ✔ | ✔ | Username/Password | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |
IBM Watson IoT Platform | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |
IBM WebSphere MQ Middleware | ✔ | ✔ | ✔ | Username/Password, client certificate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ |
Jmqtt | ✔ | ✔ | ✔ | Username/Password, Client certificates | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ |
JoramMQ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ |
Mongoose | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ |
moquette | ✔ | ✔ | ✔ | ? | ✔ | ✘ | ✔ | ✔ | rm | ✔ | ✘ | ✘ | ✔ |
mosca | ✔ | ✔ | ✘ | ✔ | ✘ | ✘ | ✔ | ✔ | ✘ | ✔ | ✘ | ✘ | ✘ |
mosquitto | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | § | ✔ | ✔ | ✘ | ✔ |
MQTT.js | ✔ | ✔ | ✔ | § | ✘ | ✘ | ✔ | ✔ | ✘ | ✔ | ✘ | ✘ | ✔ |
MQTTnet | ✔ | ✔ | ✔ | § | § | § | ✔ | ✔ | § | § | § | rm | ✔ |
MqttWk | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ |
RabbitMQ | ✔ | ✔ | ✘ | SASL | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |
Software AG Universal Messaging | ✔ | ✔ | ✔ | ✔ | § | ✘ | ✔ | ✔ | § | rm | ✘ | ✘ | ✔ |
Solace | ✔ | ✔ | ✘ | Basic, client certificate, Kerberos | § | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ |
SwiftMQ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | ✔ | ✘ | ✔ | ✘ | ✔ |
TraferoTstack | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | ✔ | ✘ | ✘ | ✘ | ✘ | ✘ |
VerneMQ | ✔ | ✔ | ✔ | Username/Password | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |
我选择了emq x。
anyone:你为什么选择emq x而不选择别的?难道是因为是基于Erlang/OTP 语言平台开发的?
me:Erlang/OTP 语言? 听都没听过,也就只是它运气好而已啊,一见钟情(其实以前用过一款mqtt服务器只是忘了叫什么了。。。)。
anyone:哪emq x有什么优势?
me:。。。。目前没发现什么优势,好像大多mqtt服务器都长得一样。
不扯了,开始安装
我是用的阿里云的服务器系统镜像centos7.3
emq x安装
如果之前有安装emq x
先卸载:
sudo yum remove emqx emqx-edge emqx-ee
安装依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
使用以下命令设置存储库,以 CentOS7 为例
$ sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ee/redhat/centos/7/emqx-ee.repo
安装最新版本的 EMQ X
$ sudo yum install emqx-ee
启动:
emqx start
如果现实15s内启动失败
则需要升级一下openssl:
yum update openssl
再次启动就可以了
现在登录mqtt服务器管理页面地址为http://你的ip:18083
初次登录用户名是:admin 密码是:public
建议修改登录密码,不然很容易被扫到登陆的。