如何在Windows Server 2012上使用.env文件运行长时间运行的Nodejs进程

时间:2014-09-06 20:51:07

标签: windows node.js environment-variables

我有一个应用程序(github' Hubot),它是为在Heroku上运行而构建的 - 但我想在我们的内部Windows 2012服务器上运行它,原因就在这里。

解决方案的一个要求是,我需要能够在进程开始之前读入填充了env vars .env文件。它通过foreman start运行良好,但是最好将它作为一个服务运行,如果它崩溃就会重新启动。

目前我正在通过RunAsService运行它,但这并不是真正具有所需的行为,因为如果它失败,它不会重新启动实际进程。这可能是由于我的配置(如下所列),但似乎没有任何其他方式来运行它。

由于这只是一个开发服务器,我不太关心最佳实践 - 每次机器人停机时我都不想登录盒子。

我是否必须自己编写服务,或者有更简单的方法吗?另一个answer使用envnodemon一起提到,但AFAIK这是以* nix为中心的。 Windows是否有类似的方法来读取环境变量?

<service>
  <name>hubot</name>
  <executable>C:\Ruby200-x64\bin\foreman</executable>
  <parameters>start -d C:\node\hubot</parameters>
</service>

1 个答案:

答案 0 :(得分:0)

任何服务都可以配置为在失败时重新启动,服务配置管理器作业是处理此问题,而不是服务本身。因此,RunAsService服务应该像任何其他服务一样重新启动。使用sc.exe failure

c:\>sc failure hubot reset= 60 actions= restart/500

请注意,您也可以使用相同的sc.exe远程启动和停止机器人,无需登录:

c:\>sc <hostname> start hubot

但是说实话,编写服务是相当简单的,有些向导可以使用C#或C ++中的Visual Studio获取模板。然后你将成为庄园的主人,你自己领域的主人等等。