iT邦幫忙

0

如何讓Node.js常駐window Server??

最近在使用Node.js用於視訊聊天室的架設

可是如果我在window Server登出身分後,這個Node.js就會被關掉~不像IIS一直開著@@~

一般網路介紹Node.js常駐用以下指令就可以~
forever start app.js

參考網址:
http://u1413745095-blog.logdown.com/posts/241538-nodejs-program-permanently-carry-out

可是能離開命令控制台是ok的~但我一旦登出遠端Server管理員的身分後...這node就被關掉了= =

若不登出管理員的身分...是可以正常執行node.js

2 個回答

0
fillano
iT邦超人 1 級 ‧ 2015-05-16 19:09:30
最佳解答

據說在windows上要使用

<pre class="c" name="code">
npm install -g forever-win
看更多先前的回應...收起先前的回應...

沒有效果呢...管理員登出一樣被關掉.....

不過倒是變化了一些~管理員登入後自動開啟node.js

不用再輸入啟動的bat檔..

管理員登出~Node.js被關掉的問題還是在...+.+|||

fillano iT邦超人 1 級 ‧ 2015-05-17 13:43:48 檢舉

這樣喔...簡單的解決方法是用排程來跑,這是系統執行的,所以應該不會因為登出而被關掉。

要把程式當做windows service的話,需要額外程式碼,透過node-windows來做。

還沒試...node-windows...

這個node-windows是建構在Node.js之上,感覺Node.js一樣會被登出的管理員kill it

可能要用vb.net寫個服務來常駐node.js

fillano iT邦超人 1 級 ‧ 2015-05-17 21:08:16 檢舉

跟是不是用node建構的沒關係啦,關鍵在於行程是哪個用戶擁有的。你可以用工作管理員看一下,是否可以讓行程的使用者不是你登入的用戶。所以我會說可以嘗試用排程來啟動看看,因為可以選用戶,例如用system用戶來跑。

你可以用工作管理員會SysInternalSuite中的procexp驗證一下。

我改了處理方式~用Window Service常註...

可是System用戶開不起Node.js Administrator可以開= =..

我測試Service是先踢除Node.exe (是可以踢除的掉)
再啟動Node.exe但沒有成功

可能卡在用戶權限問題吧..

目前都是遠端斷線~管理員不登出的方式處理這問題..可是要是遠端重開機就麻煩了...

對了~排程試過了...完全都沒反應~設定Administrator帳戶開啟bat檔也沒有用...

要手按bat檔才有反應..

fillano iT邦超人 1 級 ‧ 2015-05-18 07:39:52 檢舉

嗯,這樣有點怪,我用排程來跑是沒問題的,node就常駐而且用戶是system。我下的命令列是node的執行檔,參數是js擋,工作目錄是js擋的位置。這樣跑沒有什麼問題。

fillano iT邦超人 1 級 ‧ 2015-05-18 08:06:39 檢舉

不然用這個來裝裝看:https://nssm.cc/

fillano iT邦超人 1 級 ‧ 2015-05-18 14:10:32 檢舉

仔細看了一下您的回應...說不定是js檔跟目錄有權限的問題?也許調整一下權限就OK。我在Server2008上測試都沒問題阿XD

今天我又換個方式~

把啟動bat檔的路徑~改成用vb net開發的表單~

表單裡面用Shell指令啟動bat檔~

再把window排程原本是設定bat檔路徑,改成vb net開發的表單~就背景啟動成功了0.0..

當然那個表單最後一行有下關閉~所以程序管理員只出現node.exe

我在登出管理員~在測試一次~node有在啟動中~~哈...繞了好多條路...0.0"

題外話window Service沒有啟動成功...應該是卡在權限不夠吧..0.0

0
wtfsolution
iT邦新手 5 級 ‧ 2015-05-17 12:43:36

Run it Forever (until you kill it)
forever start test.js
You should be able to see it here

ps axl | grep node
And here

forever list
You can kill it using

forever stop 0

答非所問...

Give an irrelevant answer...-.-"

我要發表回答

立即登入回答