2014-09-06 46 views
0

我有一個應用程序(github的Hubot),它可以在Heroku上運行 - 但我想在我們的內部Windows 2012服務器上運行它,原因。如何在Windows Server 2012上使用.env文件運行長時間運行的Nodejs進程

該解決方案的一個要求是,我需要能夠在之前讀取填充了環境變量.env文件,該過程開始。它可以通過foreman start正常運行,但是將它作爲一個服務來運行是非常有必要的,如果服務崩潰,它將會重新啓動。

目前我通過RunAsService運行它,但這並沒有真正具有所需的行爲,因爲如果它失敗,它不會重新啓動實際進程。這可能是由於我的配置(下面列出),但似乎沒有任何其他方式來運行它。

由於這只是一個開發服務器,我並不太在意最佳實踐 - 我只是不希望每次bot死機時都登錄到該框。

我會不得不寫我自己的服務,還是有一個更簡單的方法?另一個answer提到使用env連同nodemon,但AFAIK這是* nix爲中心。 Windows有沒有類似的方法來讀取環境變量?

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

回答

0

任何服務都可以配置爲在發生故障時重新啓動,它是服務配置管理器作業來處理此問題,而不是服務本身。因此,RunAsService服務應像其他服務一樣重新啓動。使用sc.exe failure

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

請注意,您還可以啓動和遠程停止機器人,使用相同的sc.exe,無需登錄到它:

c:\>sc <hostname> start hubot 

不過說實話,寫服務相當簡單,有一些嚮導可以使用Visual Studio從C#或C++中獲取模板。那麼你會成爲莊園的主人,你自己的領域的主人等等。

相關問題