安装部署(Installation)

    Note

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

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

    下载地址:

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

    Linux服务器安装

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

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

    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

    停止服务器:

    FreeBSD服务器安装

    FreeBSD程序包下载:

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

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

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

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

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

    Windows服务器安装

    Windows平台程序包下载:

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

    控制台模式启动:

    1. .\bin\emqttd console

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

    关闭控制台窗口,停止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安装:

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

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

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

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

    1. rel/emqttd

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

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

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

    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. ]},

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

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

    快速设置

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

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

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

    chkconfig:

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

    boot test:

    Note

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