轉載地址:http://www.grati.org/?p=236
應lemonhall要求,寫一篇在windows中部署nodejs程式的文章,並提供了how to node上 “deploying-node-with-spark(如何使用spark部署node)“文章的連結(非常感謝lemonhall),今天有空正好說一下。
nodejs編寫的應用大都是網路服務,所以還是十分有必要使其能夠按照deamon的方式執行的。我對“以deamon方式執行”有兩點理解:1:能夠給實現開機自動執行,且無需使用者登入。2:deamon程式的有效使用者ID和組ID(決定deamon許可權)一般不是電腦的常用操作賬戶。 要想使應用程式在windows中以deamon方式執行,只需將其註冊為系統服務即可。在WindowsNT資源工具包中提供了兩個小工具Instrsrv.exe和Srvany.exe,按照微軟官方的說法這兩個小程式支援WinNT和Win2K,不過經過網上搜到的結果來看,他們同樣可以運行在XP上(至於WinServer2008能不能用,有條件的幫忙試一下)。 具體部署的方法,我轉載一篇Slyar的文章win下開機不登陸系統自動運行程式,就不再重新寫了。
最後說一點我的觀點,在windows中,nodejs是通過cygwin的中介層啟動並執行,所以效能和穩定性應該都不能和類Unix平台的原生程式相比。在Windows中使用nodejs應該只是調試目的,在生產環境穩定和效能第一,方便行就可以稍微犧牲一點。所以在生產環境還是部署在LinuxServer上比較好一點。
PPS:在說一點我對nodejs編程方法的理解:nodejs程式沒有好用的調試器,習慣vs的朋友可能會覺得非常彆扭,其實把單元測試細化,每實現一個功能甚至每寫一個函數都可以測試一下,看看函數有沒有按照期待的方式工作。還有,一定要把日誌輸出清楚。這樣,編寫程式就可以完全不用調試器,而且代碼品質還能夠提高,最後算算,開發速度不見得會變慢。
如下的服務註冊方法:
Windows NT Resource Kit 提供了2個小工具可以協助我:
Instrsrv.exe installs and removes system services from Windows NT.
Srvany.exe allows any Windows NT application to run as a service.
Instsrv.exe可以給系統安裝和刪除服務,Srvany.exe可以讓程式以服務的方式運行。下面我來說具體安裝過程。
1、將Instsrv.exe和Srvany.exe放置到某目錄下,下面用%path%代替路徑
2、開啟CMD,輸入以下內容,其中ServerName為你要建立的服務名稱
%path%\instsrv ServerName %path%\srvany.exe
3、開啟regedit登錄編輯程式,找到以下目錄
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServerName>
4、滑鼠右鍵單擊<ServerName>,建立一個”項”,名稱為”Parameters”
5、滑鼠左鍵單擊”Parameters”,在右邊點擊滑鼠右鍵,建立一個”字串值”(REG_SZ),名稱為”Application”,數值資料裡填寫你要執行的程式完整路徑。
6(可選)、滑鼠左鍵單擊”Parameters”,在右邊點擊滑鼠右鍵,建立一個”字串值”(REG_SZ),名稱為”DependOnService”,數值資料裡填寫該服務依存的服務名稱。不知道依存是什麼的,你可以保持繼續不知道,我不解釋。
7、開啟services.msc服務控制台,找到<ServerName>,滑鼠右鍵-屬性-登陸,勾選”允許服務與案頭互動”(一般你要啟動並執行程式都是有介面的吧)。 恩,一般這樣就可以了。
文中提到的兩個小工具下載。