首页 > 解决方案 > 如何通过 Mongooseim 中的终端与已经运行的实例进行交互?

问题描述

我正在使用 ubuntu 服务器上源代码中的 Mongooseim 3.2.0。以下是关注:

  1. 将 mongooseim 作为服务运行以便在 mongooseim 崩溃或系统重新启动时自动重新启动的最佳方法是什么?
  2. 如何通过终端与 ubuntu 服务器上已经运行的 mongooseim 实例进行交互,例如“mongooseimctl live”。我的猜测是运行“mongooseimctl live”会尝试创建另一个实例。我只想查看实时日志和交互,不想为此目的继续滚动长日志文件。

如果上面的答案很明显,我很抱歉,但只是想遵循最好的指导。

标签: erlangejabberdmongoose-im

解决方案


mongooseimctl livemongooseimctl foreground主要用于开发或冒烟测试部署(除非您在容器内运行)。对于现实世界的用例,您应该在后台使用mongooseimctl start.

回到容器——容器化应用程序的最佳方法是在前台运行它们,因此在容器启动脚本中使用mongooseimctl foreground.

一旦服务器运行(无论它是如何启动的),就可以使用mongooseimctl debug. Protocol 'inet_tcp': the name mongooseim@localhost seems to be in use by another Erlang node这是出现错误时要使用的命令。如果是生产环境,请小心——您可以通过访问此 shell 轻松关闭服务器。

如果您只是对查看日志感兴趣,而没有对 shell 提供的服务器内部的交互式访问,那么简单的tail -f /your-configured-mongooseim-log-dir/*就足够了。


Ubuntu 现在使用 systemd 来管理其服务的生命周期。.service可以在https://github.com/esl/MongooseIM/blob/master/tools/pkg/platforms/debian_stretch/files/build/mongooseim.service找到一个 systemd文件- 我们使用它来打包到 Debian/Ubuntu .deb包。


推荐阅读