zoukankan      html  css  js  c++  java
  • emqttd的启动脚本

    此前的几年时间里一直的在用mosquitto和apache apollo玩mqtt服务。对于业余玩玩,还是有些玩不动的地方。qq群里总有人提到emq,刚开始觉得用erlang编写的,以为玩不转。昨天在云主机装了个,感觉确实不错。自带控制台,速度比apollo快多了。自带权限和acl模块,并且可以与mysql一起玩。我是下载的压缩包,直接运行的,却发现不带自动运行脚本。下面记录下解决的过程。

    先说一下,我是用centos7,看官方文档,貌似其他系统可以自动启动的。我一开始没找到emqttd.service这个文件,等我基本解决了问题,通过google找到在github上的一份脚本,似乎还不是用于centos的。

    再废话一点,一开始,我是git源码编译的,在编译过程中,有些需要临时git下载的源码总是过不去,导致编译失败。

    在官网下载了zip文件,解压后将文件目录内容移到 /usr/local/emqttd/下面。

    依照官网文档,在该目录下运行 ./bin/emqttd console,没有问题。

    但是如果你直接运行 /usr/local/emqttd/bin/emqttd 是不会成功的。(记不住是在玩nginx还是igrok的启动文件时总结的经验,如果systemctl运行出错,直接把service文件中的运行语句在控制台直接运行,会出现更详细的提示。)

    要注意的是,提示信息里显示了相关的参数。在最终的service 文件用要用到的。至于重启有没有实现类似nginx重启的效果,还没仔细看文档,不知文档里有没有说明。

    尝试 在 start 前 加 -s,倒是貌似运行。ps显示,只有一个进程。打开网页管理,看到登陆界面,但是无法成功登陆。就算是把目录下的etc里的配置文件拷贝到 系统的 /etc中,也没用。

    印象中还发现了一个现象, systemctl status emqttd.service 提示 类似进程不存在的提示。

    Dec 03 23:04:28 sh01.htsky.cn systemd[1]: Starting Share local port(s) with emqttd...
    Dec 03 23:04:33 sh01.htsky.cn systemd[1]: Started Share local port(s) with emqttd.
    Dec 03 23:04:33 sh01.htsky.cn emqttd[23765]: emqttd 2.3.0 is started successfully!
    Dec 03 23:05:20 sh01.htsky.cn systemd[1]: Stopping Share local port(s) with emqttd...
    Dec 03 23:05:20 sh01.htsky.cn killall[24177]: emqttd: no process found
    Dec 03 23:05:20 sh01.htsky.cn killall[24177]: stop: no process found
    Dec 03 23:05:20 sh01.htsky.cn systemd[1]: emqttd.service: control process exited, code=exited status=1
    Dec 03 23:05:22 sh01.htsky.cn systemd[1]: Stopped Share local port(s) with emqttd.
    Dec 03 23:05:22 sh01.htsky.cn systemd[1]: Unit emqttd.service entered failed state.
    Dec 03 23:05:22 sh01.htsky.cn systemd[1]: emqttd.service failed.

    [root@sh01 /]# ps -aux | grep emqttd
    root 19610 0.0 0.0 11576 340 ? S 16:12 0:00 /usr/src/emqttd/erts-9.0/bin/epmd -daemon
    root 21633 0.0 0.0 9036 668 pts/0 R+ 22:43 0:00 grep --color=auto emqttd

    最后脚本是这样的,添加了home解决问题。这样以后,配置文件也不用搬到 /etc下面了。(其他有些程序可能要指定启动时的配置文件)

    Environment=HOME=/usr/local/emqttd
    ExecStart=/usr/local/emqttd/bin/emqttd start
    ExecReload=/usr/local/emqttd/bin/emqttd reboot
    ExecStop=/usr/bin/killall emqttd stop

    结果显示的进程也多了。

    [root@sh01 ~]# systemctl status emqttd.service
    * emqttd.service - Share local port(s) with emqttd
    Loaded: loaded (/etc/systemd/system/emqttd.service; enabled; vendor preset: disabled)
    Active: active (running) since Mon 2017-12-04 12:35:30 CST; 3h 4min ago
    Process: 731 ExecStart=/usr/local/emqttd/bin/emqttd start (code=exited, status=0/SUCCESS)
    CGroup: /system.slice/emqttd.service
    |-3163 /usr/local/emqttd/erts-9.0/bin/epmd -daemon
    |-3278 /usr/local/emqttd/erts-9.0/bin/run_erl -daemon /tmp/root_erl_pipes/emq@127.0.0.1/...
    |-3293 /usr/local/emqttd/erts-9.0/bin/beam.smp -W w -e 256000 -Q 65536 -P 256000 -A 32 -...
    |-4084 erl_child_setup 1048576
    |-4494 sh -s disksup
    |-4506 /usr/local/emqttd/lib/os_mon-2.4.2/priv/bin/memsup
    `-4507 /usr/local/emqttd/lib/os_mon-2.4.2/priv/bin/cpu_sup

    Dec 04 12:35:15 sh01.htsky.cn systemd[1]: Starting Share local port(s) with emqttd...
    Dec 04 12:35:30 sh01.htsky.cn systemd[1]: Started Share local port(s) with emqttd.
    Dec 04 12:35:30 sh01.htsky.cn emqttd[731]: emqttd 2.3.0 is started successfully!

    在摸索的过程中,还发现一些有趣的现象。只要用心,也是一种享受。

  • 相关阅读:
    Leetcode Spiral Matrix
    Leetcode Sqrt(x)
    Leetcode Pow(x,n)
    Leetcode Rotate Image
    Leetcode Multiply Strings
    Leetcode Length of Last Word
    Topcoder SRM 626 DIV2 SumOfPower
    Topcoder SRM 626 DIV2 FixedDiceGameDiv2
    Leetcode Largest Rectangle in Histogram
    Leetcode Set Matrix Zeroes
  • 原文地址:https://www.cnblogs.com/htsky/p/7977672.html
Copyright © 2011-2022 走看看