最近在忙一个物联网平台项目,领导大方地给了我一个阿里云的ECS,让我在随意在上面使用。
基本配置如下:
之前一直使用Apache-Apollo作为MQTT服务器,深入摸索后发觉没有一些自己想要的功能。那么,接下来我打算尝试部署一下EMQ——百万级分布式开源物联网MQTT消息服务器。
这篇文章主要是讲解在该CentOS 7服务器上部署EMQ。
由于emqttd是用Erlang语言编写的,所以,在Linux下安装时,需要先安装Erlang。
sudo yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
wget http://www.erlang.org/download/otp_src_R13B04.tar.gz
tar xfvz otp_src_R13B04.tar.gz
cd otp_src_R13B04/
./configure --with-ssl
sudo make install
另外,由于博主部署EMQ是绕了很多弯路,最后才做以上工作,所以可能也不需要做这些就可以成功部署EMQ。
官网提供了很多种部署方式,我之前尝试过「RPM包安装」,但是没有看到预期效果,所以下面是使用「Linux通用包安装」的步骤。博主验证此方式部署正常。
到这里获取Linux通用安装包:http://emqtt.com/docs/v2/install.html#linux
CentOS平台为例,下载安装过程:
unzip emqttd-centos7-v2.0.zip
控制台调试模式启动,检查 EMQ 是否可正常启动:
cd emqttd && ./bin/emqttd console
EMQ 消息服务器如启动正常,控制台输出:
starting emqttd on node '[email protected]'
emqttd ctl is starting...[ok]
emqttd hook is starting...[ok]
emqttd router is starting...[ok]
emqttd pubsub is starting...[ok]
emqttd stats is starting...[ok]
emqttd metrics is starting...[ok]
emqttd pooler is starting...[ok]
emqttd trace is starting...[ok]
emqttd client manager is starting...[ok]
emqttd session manager is starting...[ok]
emqttd session supervisor is starting...[ok]
emqttd wsclient supervisor is starting...[ok]
emqttd broker is starting...[ok]
emqttd alarm is starting...[ok]
emqttd mod supervisor is starting...[ok]
emqttd bridge supervisor is starting...[ok]
emqttd access control is starting...[ok]
emqttd system monitor is starting...[ok]
dashboard:http listen on 0.0.0.0:18083 with 2 acceptors.
mqtt:tcp listen on 0.0.0.0:1883 with 8 acceptors.
mqtt:ssl listen on 0.0.0.0:8883 with 4 acceptors.
mqtt:ws listen on 0.0.0.0:8083 with 4 acceptors.
Erlang MQTT Broker 2.0 is running now
CTRL+c关闭控制台。守护进程模式启动:
./bin/emqttd start
EMQ也和Apollo一样提供了Web管理后台,该后台作为一个插件实现,名称为「Dashboard」。EMQ启动后默认加载Dashboard插件。
部署好EMQ之后,访问URL地址:http://localhost:18083
,缺省用户名/密码: admin/public
。
Dashboard插件可查询EMQ消息服务器基本信息、统计数据、度量数据,查询系统客户端(Client)、会话(Session)、主题(Topic)、订阅(Subscription)。
可以打开.../emqttd/etc/plugins/emq_dashboard.conf
文件查看Dashboard插件的配置。
## HTTP Listener
dashboard.listener.http = 18083
dashboard.listener.http.acceptors = 2
dashboard.listener.http.max_clients = 512
## HTTPS Listener
## dashboard.listener.https = 18084
## dashboard.listener.https.acceptors = 2
## dashboard.listener.https.max_clients = 512
## dashboard.listener.https.handshake_timeout = 15
## dashboard.listener.https.certfile = etc/certs/cert.pem
## dashboard.listener.https.keyfile = etc/certs/key.pem
## dashboard.listener.https.cacertfile = etc/certs/cacert.pem
## dashboard.listener.https.verify = verify_peer
## dashboard.listener.https.fail_if_no_peer_cert = true