转载地址: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>,鼠标右键-属性-登陆,勾选”允许服务与桌面交互”(一般你要运行的程序都是有界面的吧)。 恩,一般这样就可以了。

文中提到的两个小工具下载

注册nodejs程序为windows服务的更多相关文章

  1. 如何注册java程序为windows服务

    如何注册java 程序为windows 服务 最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件.由于我想编写的关机程序是运行在别人机器上,只能让该机器在 ...

  2. 黄聪:使用srvany.exe将任何程序作为Windows服务运行

    srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说sr ...

  3. 使用srvany.exe将任何程序作为Windows服务运行

    使用srvany.exe将任何程序作为Windows服务运行 2011 年 3 月 7 日 !本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使 ...

  4. 如何把一个c语言程序做成windows服务开机自启动

    原文:如何把一个c语言程序做成windows服务开机自启动 目前写的程序是一个用c语言实现socket侦听的,那么如何把这个程序做成开机自启动呢? 我们是通过vs6.0,编译后生成了.exe文件,然后 ...

  5. srvany把程序作为Windows服务运行

    srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说sr ...

  6. Java Service Wrapper 发布Java程序为Windows服务

    下载Windows版本:https://www.krenger.ch/blog/java-service-wrapper-3-5-37-for-windows-x64/ 转自:F:\java\bhGe ...

  7. 利用JAVA Service Wrapper把JAVA程序做成windows服务

    今天做了一个读取数据入库的程序.由于读取的数据每天都更新,于是就想把程序做成一个服务,每天定时执行.研究了一下,发现有几种方式可以做.下面我主要记录一下JAVA Service Wrapper方式. ...

  8. 将控制台程序做成windows服务

    一:添加windows服务 二:修改XXXInstaller1的StartType=Automatic,修改ProcessInstaller1的Account=LocalSystem 三:在progr ...

  9. 把java程序作为windows服务运行

    参考: https://www.jianshu.com/p/fc9e4ea61e13 https://blog.csdn.net/qq_28566071/article/details/8088250 ...

随机推荐

  1. maven下载及配置

    Maven是一个采用纯Java编写的开 源项目管理工具.Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xm ...

  2. 为什么 HTTP 有时候比 HTTPS 好?

    做为一家安全公司,我们在站点Stormpath上经常被开发者问到的是有关安全方面最优做法的问题.其中一个被经常问到的问题是: 我是否应当在站点上运行HTTPS? 很不幸,查遍整个因特网,你大多数情况下 ...

  3. 查看MySQL数据库的默认编码

    查看MySQL数据库的默认编码 1.使用status命令能够显示数据库的相关系信息,示例如下: mysql> status;————–mysql Ver 14.12 Distrib 5.0.77 ...

  4. javaweb笔记1之入门

    1 web应用的目录结构 web的根目录自定义 其中可以包括静态资源(html,image,css,js) |-WEB-INF(注意格式就是这样,大小写等等一模一样) |-class:存放的是字节码文 ...

  5. MongoDB的数据类型

    最近在写一个lua的MongoDB模块.MongoDB版本3.2,lua则是5.3.1.底层以C++来写,再把函数暴露给lua调用.但是在lua中打印结果时,发现了些奇怪的现象.首先,数据库中的内容: ...

  6. Wamp集成环境安装

    一.Wamp下载 点我下载WampServer2.1a-x32 二.Wamp安装步骤 三.修改语言为汉语 四.查看测试页面

  7. DevExpress之时间控件

    dateEdit和timeEdit 基本属性 DisplayFormat.FormatString-------失去焦点是控件显示的格式,timeEdit用不上 EditMask----------- ...

  8. 关于 视频同步vsync 信号在不同一时候钟域採样问题

    今天调试 视频 4k(3840 x 1920)的vsync信号(时钟为 297Mhz) 进入 170Mhz 的时钟域, 发现输出来的信号信号抖动特别厉害.后来才发现这是不同一时候钟域 造成的影响. 快 ...

  9. Word03-文档中的截图显示不全

    今天写文档时遇到个很蛋疼的问题,在doc文档中复制进去的截图总是显示不全,图片上半部分都被文字遮盖了,折腾半天,最后还是网上找到了答案. 解决方法如下: 将图片所在行的段落行距修改为其它值即可,原来为 ...

  10. ComboTree( 树型下拉框) 组件

    本节课重点了解EasyUI中Tree(树)组件的使用方法, 这个组件依赖于Combo(下拉框)和 Tree(树)组件.一. 加载方式//class 加载方式<select id="cc ...