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!

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

  • 相关阅读:
    创建一个catkin工作空间
    Ubuntu下安装Python3.4及用python编译py文件
    ubuntu连接kinect v2
    ubuntu循环登录问题的解决
    找到bashrc
    创建一个catkin工作空间
    ts配置
    几个loader源码
    e2e测试
    eslint配置
  • 原文地址:https://www.cnblogs.com/htsky/p/7977672.html
Copyright © 2011-2022 走看看