Loopbackjs 停止分离的strongloop应用程序

Loopbackjs 停止分离的strongloop应用程序,loopbackjs,strongloop,Loopbackjs,Strongloop,我在我的服务器(ubuntu)上安装了loopback,然后创建了一个应用程序,并使用命令slc run to run。。。一切正常。 现在我有一个问题,也是我面临的一个问题: 问题:我需要使用slc run命令,但要在关闭终端后保持应用程序“活动”。为此,我使用了--detach选项,它是有效的,我想知道的是--detach选项是最佳实践还是我需要以不同的方式来实现它 问题:使用--detach后,我真的不知道如何停止它。是否有可以用来停止进程运行的命令?要停止--detached进程,请转到

我在我的服务器(ubuntu)上安装了loopback,然后创建了一个应用程序,并使用命令slc run to run。。。一切正常。 现在我有一个问题,也是我面临的一个问题:

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

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

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

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

使用
slc运行
如果您希望以Upstart作业的形式运行
slc run
,则可以使用
npm install-g strong service install安装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
的新启动作业,它将从应用的根目录中以uid身份运行您的应用。您的应用程序的stdout/stderr将发送到/var/log/upstart/my-app.log。如果您使用的Ubuntu版本早于12.04,则需要指定
--upstart 0.6
,您的日志最终将转到syslog

使用
slc-pm
另一个可能更简单的方法是使用
slcpm
,它的运行级别高于
slc run
,而且作为操作系统服务安装起来更容易。对于此路线,您已经安装了所有设备。运行
sudo-slc-pm-install
,将安装
strong-pm
Upstart服务以及
strong-pm
用户,以将其作为$HOME/var/lib/strong-pm运行

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

一般最佳做法 对于上述任一选项,我建议不要在您的服务器上执行
npm install-g strongloop
,因为它包括像yeoman生成器之类的东西,以及在工作站上比服务器上更有用的其他工具

如果您想执行
slc运行
路线,您可以执行
npm安装-g strong supervisor strong service安装
,并将
slc运行
替换为
sl运行

如果您想执行
slc-pm
路线,您可以执行
npm安装-g strong-pm
并将
slc-pm-install
替换为
sl-pm-install

免责声明
我在StrongLoop工作,主要从事这些工具。

如果我必须将应用程序作为集群运行,该怎么办?我仍然可以通过创建的upstart来实现这一点。 喜欢 sudo sl svc安装--命名我的应用--用户youruser--cwd/path/to/app/root--slc运行--集群4


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

使用以下命令查看正在运行的应用程序的状态:

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

哇,老兄!!非常感谢你的详细回答。我会试试看,然后告诉你。顺便说一句,我真的很喜欢你们做的这是一个伟大的产品!!对于那些运行Loopback的股票AWS AMI的人,我根据自己的经验创建了一个新的应用程序。有几点与此答案不同,即,我必须在我的
slcpm安装
命令上使用
--port 8701
而不是
--listen 8701
。回答得很好。@AngeloS谢谢你指出这一点。实际上比这更简单,因为端口8701是默认端口,所以您甚至不需要使用选项:-)