Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 如何通过Mongooseim中的终端与已经运行的实例交互?_Erlang_Ejabberd_Mongoose Im - Fatal编程技术网

Erlang 如何通过Mongooseim中的终端与已经运行的实例交互?

Erlang 如何通过Mongooseim中的终端与已经运行的实例交互?,erlang,ejabberd,mongoose-im,Erlang,Ejabberd,Mongoose Im,我在ubuntu服务器上使用源代码中的Mongooseim 3.2.0。以下是令人关注的问题: 将mongooseim作为服务运行的最佳方式是什么,以便在mongooseim崩溃或系统重新启动时自动重新启动 如何通过终端与ubuntu服务器上已经运行的mongooseim实例进行交互,如“mongooseimctl live”。我猜运行“mongooseimctl live”将尝试创建另一个实例。我只想看到实时日志和交互,不想为了这个目的一直滚动长日志文件 如果上面的答案显而易见,但我只是想遵循

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

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

  • 如果上面的答案显而易见,但我只是想遵循最佳指导,我很抱歉。

    mongooseimctl-live
    mongooseimctl-foreground
    对于开发或冒烟测试部署非常有用(除非您在容器中运行)。对于真实世界的用例,您应该使用
    mongooseimctl start
    在后台启动服务器

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


    服务器运行后(无论如何启动),可以使用
    mongooseimctl debug
    附加shell以解决问题。这是获取
    协议“inet\u tcp”时使用的命令:名称mongooseim@localhost另一个Erlang节点似乎正在使用中
    错误。如果是生产环境,请小心-通过访问此shell,您可以轻松地关闭服务器

    如果您只想查看日志,而对shell提供的服务器内部没有交互访问,那么一个简单的
    tail-f/您配置的mongooseim log dir/*
    就足够了



    Ubuntu现在使用systemd来管理其服务的生命周期。systemd
    .service
    文件可以在以下位置找到-我们使用它打包到Debian/Ubuntu.deb包中。

    当我尝试在已经运行的mongooseim实例(在同一系统的Separte终端中)中使用“mongooseimctl live”或“mongooseimctl前台”时,我得到以下错误:协议“inet\u tcp”:名称mongooseim@localhost似乎正在被另一个Erlang nodeBTW使用,您可能不应该使用
    mongooseim@localhost
    用于生产部署。相反,请为您的服务找到域名,获取DNS,并将服务器配置为
    mongooseim@your.domain.net
    “协议”inet\u tcp”:名称mongooseim@localhost似乎正在被另一个Erlang节点使用”,虽然有点模糊,但这一切都说明了这一点。服务器已经在后台运行了-它不能第二次并行启动。这对我来说很有意义。谢谢erszscz,像往常一样:)我将在ubuntu的bashrc文件中添加“mongooseimctl start”,这样,如果我的服务器因任何原因重启,它将自动启动,因为我目前正在进行开发,所以我将使用“mongooseimctl debug”与日志交互。将“mongooseimctl start”添加到.bashrc或.bash_配置文件不是部署生产服务器的方法-例如,如果崩溃,它不会自动重新启动。这就是操作系统的init/service/daemon基础结构的用途。Ubuntu过去使用Upstart进行服务管理,但AFAIK已经像大多数其他发行版一样改用Systemd。寻找关于创建一个新systemd服务的资料——也许这个会很有用:实际上,我们构建了MongooseIM的Debian包,所以我们有一个脚本将其作为systemd服务启动。我将相应地编辑原始答案。这是systemd.service文件:好的。我会在部署前考虑它们。