停止分离的强循环应用程序



我在服务器(ubuntu)上安装了环回,然后创建了一个应用程序,并使用命令slc-run运行。。。一切如预期。现在我有一个问题,也是我面临的一个问题:

问题:我需要使用slc run命令,但在关闭终端后也要保持应用程序"活动"。为此,我使用了--detach选项,它很有效,我想知道的是,--detach是否是最佳实践,或者我需要用不同的方式来做。

问题:在我使用--detach后,我真的不知道如何停止它。有没有命令可以用来停止进程运行?

要停止--detach ed进程,请转到运行该进程的同一目录,然后执行slc runctl stop。有许多runctl命令,但stop可能是您最感兴趣的命令

最佳实践是一个较长的答案。简短的版本是:永远不要使用--detach,而是使用init脚本来运行你的应用程序并保持其运行(可能是Upstart,因为你在Ubuntu上)。

使用slc run

如果您想将slc run作为Upstart作业运行,则可以使用npm install -g strong-service-install安装强服务安装。这将为您提供sl-svc-install,一个用于创建Upstart和systemd服务的实用程序。

你最终会运行类似sudo sl-svc-install --name my-app --user youruser --cwd /path/to/app/root -- slc run .的东西,它应该创建一个名为my-app的Upstart作业,该作业将从应用程序的根目录以uid的身份运行你的应用程序。你的应用程序的stdout/stderr将被发送到/var/log/unstart/my-app.log。如果你使用的是12.04之前的Ubuntu版本,你需要指定--upstart 0.6,你的日志最终会转到syslog。

使用slc pm

另一个可能更容易的途径是使用slc pm,它在高于slc run的级别上运行,并且恰好更容易作为操作系统服务安装。对于此路由,您已经安装了所有内容。运行sudo slc pm-install,将安装strong-pm Upstart服务,并安装strong-pm用户以使用/var/lib/strong pm的$HOME运行该服务。

PM方法稍微复杂一点的地方是,你必须将你的应用程序部署到它上。很可能这只是转到你的应用根目录并运行slc deploy http://localhost:8701/的问题,但具体情况将取决于你的应用。您可以为您的应用程序配置环境变量,部署新版本,您的日志将显示在/var/log/unstart/strong-pm.log.中

一般最佳实践

对于以上任一选项,我建议不要在服务器上执行npm install -g strongloop,因为它包括yeoman生成器和其他在工作站上比服务器更有用的工具。

如果你想走slc run路线,你可以做npm install -g strong-supervisor strong-service-install,用sl-run代替你的slc run

如果你想走slc pm路线,你可以做npm install -g strong-pm,用sl-pm-install代替slc pm-install

免责声明

我在StrongLoop工作,主要从事这些工具的开发。

使用查看运行应用程序的状态

slc ctl status

示例输出:

Service ID: 1
Service Name: app
Environment variables:
  No environment variables defined
Instances:
    Version  Agent version  Debugger version  Cluster size  Driver metadata
     5.2.1       2.0.3             n/a              1             N/A
Processes:
       ID      PID  WID  Listening Ports  Tracking objects?  CPU profiling?  Tracing?  Debugging?
    1.1.2708  2708   0
    1.1.5836  5836   1     0.0.0.0:3001
Service ID: 2
Service Name: default
Environment variables:
  No environment variables defined
Instances:
    Version  Agent version  Debugger version  Cluster size  Driver metadata
     5.2.1       2.0.3             n/a              1             N/A
Processes:
       ID      PID  WID  Listening Ports  Tracking objects?  CPU profiling?  Tracing?  Debugging?
    2.1.2760  2760   0
    2.1.1676  1676   1     0.0.0.0:3002

要杀死第一个应用程序,请使用slc ctrl stop

slc ctl stop app
Service "app" hard stopped

如果我必须将应用程序作为集群运行怎么办?我还能通过创造的新贵来做到吗。喜欢sudo sl svc install--name my app--user youruser--cwd/path/to/app/root--slc run--cluster 4。

我尝试过这样做,但/etc/init/my-app.conf没有显示任何关于集群的信息。

最新更新