| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- .. _install:
- ============
- Installation
- ============
- The emqttd broker is cross-platform, which could be deployed on Linux, FreeBSD, Mac, Windows and even Raspberry Pi.
- .. NOTE::
- Linux, FreeBSD Recommended.
- .. _install_download:
- ----------------
- Download Package
- ----------------
- Download binary package from: http://emqtt.io/downloads
- +-----------+-----------------------------------+
- | Ubuntu | http://emqtt.io/downloads/ubuntu |
- +-----------+-----------------------------------+
- | CentOS | http://emqtt.io/downloads/centos |
- +-----------+-----------------------------------+
- | FreeBSD | http://emqtt.io/downloads/freebsd |
- +-----------+-----------------------------------+
- | Mac OS X | http://emqtt.io/downloads/macosx |
- +-----------+-----------------------------------+
- | Windows | http://emqtt.io/downloads/windows |
- +-----------+-----------------------------------+
- The package name consists of platform, version and release time.
- For example: emqttd-centos64-0.16.0-beta-20160216.zip
- .. _install_on_linux:
- --------------------
- Installing on Linux
- --------------------
- Download CentOS Package from: http://emqtt.io/downloads/centos, and then unzip:
- .. code:: console
- unzip emqttd-centos64-0.16.0-beta-20160216.zip
- Start the broker in console mode::
- .. code:: console
- cd emqttd && ./bin/emqttd console
- If the broker is started successfully, console will print:
- .. code:: console
- starting emqttd on node 'emqttd@127.0.0.1'
- emqttd ctl is starting...[done]
- emqttd trace is starting...[done]
- emqttd pubsub is starting...[done]
- emqttd stats is starting...[done]
- emqttd metrics is starting...[done]
- emqttd retainer is starting...[done]
- emqttd pooler is starting...[done]
- emqttd client manager is starting...[done]
- emqttd session manager is starting...[done]
- emqttd session supervisor is starting...[done]
- emqttd broker is starting...[done]
- emqttd alarm is starting...[done]
- emqttd mod supervisor is starting...[done]
- emqttd bridge supervisor is starting...[done]
- emqttd access control is starting...[done]
- emqttd system monitor is starting...[done]
- http listen on 0.0.0.0:18083 with 4 acceptors.
- mqtt listen on 0.0.0.0:1883 with 16 acceptors.
- mqtts listen on 0.0.0.0:8883 with 4 acceptors.
- http listen on 0.0.0.0:8083 with 4 acceptors.
- Erlang MQTT Broker 0.16.0 is running now
- Eshell V6.4 (abort with ^G)
- (emqttd@127.0.0.1)1>
- CTRL+C to close the console and stop the broker.
- Start the broker in daemon mode:
- .. code:: console
- ./bin/emqttd start
- The boot logs in log/emqttd_sasl.log file.
- Check the running status of the broker:
- .. code:: console
- $ ./bin/emqttd_ctl status
- Node 'emqttd@127.0.0.1' is started
- emqttd 0.16.0 is running
- Or check the status by URL::
- http://localhost:8083/status
- Stop the broker::
- ./bin/emqttd stop
- .. _install_on_freebsd:
- ---------------------
- Installing on FreeBSD
- ---------------------
- Download FreeBSD Package from: http://emqtt.io/downloads/freebsd
- The installing process is same to Linux.
- .. _install_on_mac:
- ----------------------
- Installing on Mac OS X
- ----------------------
- We could install the broker on Mac OS X to develop and debug MQTT applications.
- Download Mac Package from: http://emqtt.io/downloads/macosx
- Configure 'lager' log level in 'etc/emqttd.config', all MQTT messages recevied/sent will be printed on console:
- .. code:: erlang
- {lager, [
- ...
- {handlers, [
- {lager_console_backend, info},
- ...
- ]}
- ]},
- The install and boot process on Mac are same to Linux.
- .. _install_on_windows:
- ---------------------
- Installing on Windows
- ---------------------
- Download Package from: http://emqtt.io/downloads/windows.
- Unzip the package to install folder. Open the command line window and 'cd' to the folder.
- Start the broker in console mode::
- .\bin\emqttd console
- If the broker started successfully, a Erlang console window will popup.
- Close the console window and stop the emqttd broker. Prepare to register emqttd as window service.
- Install emqttd serivce::
-
- .\bin\emqttd install
- Start emqttd serivce::
- .\bin\emqttd start
- Stop emqttd serivce::
- .\bin\emqttd stop
- Uninstall emqttd service::
- .\bin\emqttd uninstall
- .. WARNING:: './bin/emqttd_ctl' command line cannot work on Windows.
- .. _build_from_source:
- ----------------------
- Installing From Source
- ----------------------
- The emqttd broker requires Erlang/OTP R17+ and git client to build:
- Install Erlang: http://www.erlang.org/
- Install Git Client: http://www.git-scm.com/
- Could use apt-get on Ubuntu, yum on CentOS/RedHat and brew on Mac to install Erlang and Git.
- When all dependencies are ready, clone the emqttd project from github.com and build:
- .. code:: console
- git clone https://github.com/emqtt/emqttd.git
- cd emqttd
- make && make dist
- The binary package output in folder::
- rel/emqttd
- .. _tcp_ports:
- ------------------
- TCP Ports Occupied
- ------------------
- +-----------+-----------------------------------+
- | 1883 | MQTT Port |
- +-----------+-----------------------------------+
- | 8883 | MQTT Over SSL Port |
- +-----------+-----------------------------------+
- | 8083 | MQTT(WebSocket), HTTP API Port |
- +-----------+-----------------------------------+
- | 18083 | Dashboard Port |
- +-----------+-----------------------------------+
- The TCP ports could be configured in etc/emqttd.config:
- .. code:: erlang
- {listeners, [
- {mqtt, 1883, [
- ...
- ]},
- {mqtts, 8883, [
- ...
- ]},
- %% HTTP and WebSocket Listener
- {http, 8083, [
- ...
- ]}
- ]},
- The 18083 port is used by Web Dashboard of the broker. Default login: admin, Password: public
- .. _quick_setup:
- -----------
- Quick Setup
- -----------
- emqttd消息服务器主要配置文件:
- +-------------------+-----------------------------------+
- | etc/vm.args | Erlang VM的启动参数设置 |
- +-------------------+-----------------------------------+
- | etc/emqttd.config | emqttd消息服务器参数设置 |
- +-------------------+-----------------------------------+
- etc/vm.args中两个重要的启动参数:
- +-------+------------------------------------------------------------------+
- | +P | Erlang虚拟机允许的最大进程数,emqttd一个连接会消耗2个Erlang进程 |
- +-------+------------------------------------------------------------------+
- | +Q | Erlang虚拟机允许的最大Port数量,emqttd一个连接消耗1个Port |
- +-------+------------------------------------------------------------------+
- +P 参数值 > 最大允许连接数 * 2
- +Q 参数值 > 最大允许连接数
- .. WARNING:: 实际连接数量超过Erlang虚拟机参数设置,会引起emqttd消息服务器宕机!
- etc/emqttd.config文件listeners段落设置最大允许连接数:
- .. code:: erlang
- {listeners, [
- {mqtt, 1883, [
- %% TCP Acceptor池设置
- {acceptors, 16},
- %% 最大允许连接数设置
- {max_clients, 8192},
- ...
- ]},
- emqttd消息服务器详细设置,请参见文档: :ref:`config`
- .. _init_d_emqttd:
- -------------------
- /etc/init.d/emqttd
- -------------------
- .. code:: shell
- #!/bin/sh
- #
- # emqttd Startup script for emqttd.
- #
- # chkconfig: 2345 90 10
- # description: emqttd is mqtt broker.
- # source function library
- . /etc/rc.d/init.d/functions
- # export HOME=/root
- start() {
- echo "starting emqttd..."
- cd /opt/emqttd && ./bin/emqttd start
- }
- stop() {
- echo "stopping emqttd..."
- cd /opt/emqttd && ./bin/emqttd stop
- }
- restart() {
- stop
- start
- }
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- restart
- ;;
- *)
- echo $"Usage: $0 {start|stop}"
- RETVAL=2
- esac
- chkconfig::
- chmod +x /etc/init.d/emqttd
- chkconfig --add emqttd
- chkconfig --list
- boot test::
- service emqttd start
- .. NOTE::
- ## erlexec: HOME must be set
- uncomment '# export HOME=/root' if "HOME must be set" error.
|