1.背景:在ubuntu16.04上安装一个MQTT服务器,最终决定使用EMQ X .其作用主要是消息分发服务。
2.说明:
3.安装部署:可以看官网上安装步骤,这里选择deb方式
(1)使用的deb方式安装:
sudo dpkg -i emqx-ubuntu16.04-4.3.8-a64.deb
(2)安装完成后,启动emqx服务。(这里需要root用户,sudo -s)
emqx start
如果出现:EMQ X Broker 4.3.8 is started sucessfully!代表启动成功。
(3)启动之后查看rmqx启动状态,其中emqx_ct类似执行指令相关的emqx的均使用该命令查看
emqx_ctl status
(4)到此为止,EMQX Broker安装完毕,就可以进行使用了。用户可以通过EMQX提供的后台管理面板查看连接到broker的相关信息(注意:需要emqx启动才可以):
http://安装broker服务器IP:18083(用户名:admin,密码:public)
(5)此时emqx没有做任何配置,任何用户都可以连接到Broker上进行订阅发布消息。如下举个例子,一端是使用websocket进行订阅消息,另一端使用MQTT进行发布消息,看是否能通。
- 点击后台管理器中websocket:其中host是安装emqx的地址。
- 点击绿色的“connect”按钮,会显示连接成功:
- 我们设置在websocket端的订阅主题,并点击“subscribe”开始订阅:
- 在另外一台电脑上,我们使用mqtt进行发布主题,安装mqttfx,并启动。点击“设置”图形按钮。弹出窗口后,可以点击右下角的“+”按钮新建一个文件,输入broker地址,端口号是1883,点击apply,保存。
- 返回刚刚的主界面,选中刚刚新建的文件,点击“connect”,可以连接成功。旁边的绿色灯表示连接成功。
- 我们吧刚刚在websocket订阅的主题在mqtt端发布,如下:
- 在websocket端可以看到收到了订阅的消息:
- 另外也可以在后台管理页面点击clients按钮,查看连接到该Broker的客户端。
(6)以上说的都是没有认证的,任何一个客户端都可以连接并订阅发布,下面稍微介绍下认证的,只有指定用户名密码或者clientID的才可连接成功。
(7)EMQX的配置文件都在/etc/emqx中
(8)修改认证的话需要关注两个配置文件即可, emqx.conf取消匿名连接;/plugins/emqx_auth_mnesia.conf中添加用户名/密码或者clientID/密码方式
(9)先停止emqx服务:
emqx stop
(10)取消匿名认证,在emqx.conf中
allow_anonymous=false
(10)增加用户名/密码,在emqx_auth_mnesia.conf中,这里使用的是用户名/m密码,因此,修改的是auth.user.1.username,如果使用clientid则修改的是auth.client.1.clientid
## Password hash.
##
## Value: plain | md5 | sha | sha256 | sha512
auth.mnesia.password_hash = sha256
##--------------------------------------------------------------------
## ClientId Authentication
##--------------------------------------------------------------------
## Examples
##auth.client.1.clientid = client1
##auth.client.1.password = passwd1
##auth.client.2.clientid = dev:devid
##auth.client.2.password = passwd2
##auth.client.3.clientid = app:appid
##auth.client.3.password = passwd3
##auth.client.4.clientid = client~!@#$%^&*()_+
##auth.client.4.password = passwd~!@#$%^&*()_+
##--------------------------------------------------------------------
## Username Authentication
##--------------------------------------------------------------------
## Examples:
auth.user.1.username = admin
auth.user.1.password = 12345678
##auth.user.2.username = feng@emqtt.io
##auth.user.2.password = public
##auth.user.3.username = name~!@#$%^&*()_+
##auth.user.3.password = pwsswd~!@#$%^&*()_+
(11)修改配置文件完毕后,启动emqx start
(12)进入后台管理面板中,开启用户名密码认证插件:找到emqx_auth_mnesia 点击“start”
(13)可以再次按照上面的步骤一端是websocket一端是mqtt。
此时需要填写用户名密码,在点击connect,否则连接不上。