安装部署(Installation)

emqttd消息服务器可跨平台运行在Linux、FreeBSD、Mac OS X或Windows服务器上。

Note

产品部署建议Linux、FreeBSD服务器,不推荐Windows服务器。

emqttd程序包下载

emqttd消息服务器每个版本会发布Ubuntu、CentOS、FreeBSD、Mac OS X、Windows平台的程序包。

下载地址: https://emqx.io/downloads

安装包命名由平台、版本、时间组成,例如: emqttd-centos64-0.16.0-beta-20160216.zip

Linux服务器安装

CentOS平台为例,下载安装包解压: https://www.emqx.io/downloads/v1/latest/emqttd-centos.zip

  1. unzip emqttd-centos64-1.1-beta-20160601.zip

控制台调试模式启动,检查emqttd是否可正常启动:

  1. cd emqttd && ./bin/emqttd console

emqttd消息服务器如启动正常,控制台输出:

  1. starting emqttd on node 'emqttd@127.0.0.1'
  2. emqttd ctl is starting...[done]
  3. emqttd trace is starting...[done]
  4. emqttd pubsub is starting...[done]
  5. emqttd stats is starting...[done]
  6. emqttd metrics is starting...[done]
  7. emqttd retainer is starting...[done]
  8. emqttd pooler is starting...[done]
  9. emqttd client manager is starting...[done]
  10. emqttd session manager is starting...[done]
  11. emqttd session supervisor is starting...[done]
  12. emqttd broker is starting...[done]
  13. emqttd alarm is starting...[done]
  14. emqttd mod supervisor is starting...[done]
  15. emqttd bridge supervisor is starting...[done]
  16. emqttd access control is starting...[done]
  17. emqttd system monitor is starting...[done]
  18. http listen on 0.0.0.0:18083 with 4 acceptors.
  19. mqtt listen on 0.0.0.0:1883 with 16 acceptors.
  20. mqtts listen on 0.0.0.0:8883 with 4 acceptors.
  21. http listen on 0.0.0.0:8083 with 4 acceptors.
  22. Erlang MQTT Broker 1.1 is running now
  23. Eshell V6.4 (abort with ^G)
  24. (emqttd@127.0.0.1)1>

CTRL+c关闭控制台。守护进程模式启动:

  1. ./bin/emqttd start

启动日志输出在log/emqttd_sasl.log文件。

emqttd消息服务器进程状态查询:

  1. ./bin/emqttd_ctl status

正常运行状态,查询命令返回:

  1. $ ./bin/emqttd_ctl status
  2. Node 'emqttd@127.0.0.1' is started
  3. emqttd 1.1 is running

emqttd消息服务器提供了状态监控URL:

  1. http://localhost:8083/status

停止服务器:

  1. ./bin/emqttd stop

FreeBSD服务器安装

FreeBSD程序包下载: https://www.emqx.io/downloads/v1/latest/emqttd-freebsd.zip

FreeBSD平台安装过程与Linux相同。

Mac OS X系统安装

Mac下开发调试MQTT应用,可直接下载安装: https://www.emqx.io/downloads/v1/latest/emqttd-macosx.zip

配置文件’etc/emqttd.config’ lager段落打开info日志,控制台可以查看收发MQTT报文详细:

  1. {lager, [
  2. ...
  3. {handlers, [
  4. {lager_console_backend, info},
  5. ...
  6. ]}
  7. ]},

emqttd在Mac平台下安装启动过程与Linux相同。

Windows服务器安装

Windows平台程序包下载: https://www.emqx.io/downloads/v1/latest/emqttd-windows.zip

程序包下载解压后,打开Windows命令行窗口,cd到程序目录。

控制台模式启动:

  1. .\bin\emqttd console

如启动成功,会弹出控制台窗口。

关闭控制台窗口,停止emqttd进程,准备注册Windows服务。

emqttd注册为Windows服务:

  1. .\bin\emqttd install

emqttd服务启动:

  1. .\bin\emqttd start

emqttd服务停止:

  1. .\bin\emqttd stop

emqttd服务卸载:

  1. .\bin\emqttd uninstall

Note

可通过Windows服务管理控制台进行启停。

Warning

Windows上管理命令行’./bin/emqttd_ctl’无法使用。日志文件或状态URL: http://localhost:8083/status 查询当前状态。

源码编译安装

emqttd消息服务器基于Erlang/OTP平台开发,项目托管的GitHub管理维护,源码编译依赖Erlang环境和git客户端。

Erlang安装: http://www.erlang.org/

Git客户端: http://www.git-scm.com/

Ubuntu平台可通过apt-get命令安装,CentOS/RedHat平台可通过yum命令安装,Mac下可通过brew包管理命令安装,Windows下… :(

编译环境准备好之后,clone代码开始编译:

  1. git clone https://github.com/emqtt/emqttd.git
  2. cd emqttd
  3. make && make dist

编译成功后,可执行程序包在目录:

  1. rel/emqttd

控制台启动编译的emqttd程序包:

  1. cd rel/emqttd && ./bin/emqttd console

TCP服务端口占用

emqttd消息服务器默认占用的TCP端口包括:

1883

MQTT协议端口

8883

MQTT(SSL)端口

8083

MQTT(WebSocket), HTTP API端口

18083

Dashboard管理控制台端口

emqttd占用的上述端口,可通过etc/emqttd.config配置文件的listeners段落设置:

  1. {listeners, [
  2. {mqtt, 1883, [
  3. ...
  4. ]},
  5. {mqtts, 8883, [
  6. ...
  7. ]},
  8. %% HTTP and WebSocket Listener
  9. {http, 8083, [
  10. ...
  11. ]}
  12. ]},

通过注释或删除相关段落,可禁用相关TCP服务启动。

18083端口是Web管理控制占用,该端口由emqttd_dashboard插件启用。

控制台URL: http:://localhost:18083/ ,默认登录用户名: admin, 密码: public。

快速设置

emqttd消息服务器主要配置文件:

etc/vm.args

Erlang VM的启动参数设置

etc/emqttd.config

emqttd消息服务器参数设置

etc/vm.args中两个重要的启动参数:

+P

Erlang虚拟机允许的最大进程数,emqttd一个连接会消耗2个Erlang进程

+Q

Erlang虚拟机允许的最大Port数量,emqttd一个连接消耗1个Port

Note

Erlang的Port非TCP端口,可以理解为文件句柄。

+P 参数值 > 最大允许连接数 * 2

+Q 参数值 > 最大允许连接数

Warning

实际连接数量超过Erlang虚拟机参数设置,会引起emqttd消息服务器宕机!

etc/emqttd.config文件listeners段落设置最大允许连接数:

  1. {listeners, [
  2. {mqtt, 1883, [
  3. %% TCP Acceptor池设置
  4. {acceptors, 16},
  5. %% 最大允许连接数设置
  6. {max_clients, 8192},
  7. ...
  8. ]},

emqttd消息服务器详细设置,请参见文档: config

/etc/init.d/emqttd

  1. #!/bin/sh
  2. #
  3. # emqttd Startup script for emqttd.
  4. #
  5. # chkconfig: 2345 90 10
  6. # description: emqttd is mqtt broker.
  7. # source function library
  8. . /etc/rc.d/init.d/functions
  9. # export HOME=/root
  10. start() {
  11. echo "starting emqttd..."
  12. cd /opt/emqttd && ./bin/emqttd start
  13. }
  14. stop() {
  15. echo "stopping emqttd..."
  16. cd /opt/emqttd && ./bin/emqttd stop
  17. }
  18. restart() {
  19. stop
  20. start
  21. }
  22. case "$1" in
  23. start)
  24. start
  25. ;;
  26. stop)
  27. stop
  28. ;;
  29. restart)
  30. restart
  31. ;;
  32. *)
  33. echo $"Usage: $0 {start|stop}"
  34. RETVAL=2
  35. esac

chkconfig:

  1. chmod +x /etc/init.d/emqttd
  2. chkconfig --add emqttd
  3. chkconfig --list

boot test:

  1. service emqttd start

Note

## erlexec: HOME must be set uncomment ‘# export HOME=/root’ if “HOME must be set” error.