注册nodejs程序为windows服务
转载地址: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服务的更多相关文章
- 如何注册java程序为windows服务
如何注册java 程序为windows 服务 最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件.由于我想编写的关机程序是运行在别人机器上,只能让该机器在 ...
- 黄聪:使用srvany.exe将任何程序作为Windows服务运行
srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说sr ...
- 使用srvany.exe将任何程序作为Windows服务运行
使用srvany.exe将任何程序作为Windows服务运行 2011 年 3 月 7 日 !本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使 ...
- 如何把一个c语言程序做成windows服务开机自启动
原文:如何把一个c语言程序做成windows服务开机自启动 目前写的程序是一个用c语言实现socket侦听的,那么如何把这个程序做成开机自启动呢? 我们是通过vs6.0,编译后生成了.exe文件,然后 ...
- srvany把程序作为Windows服务运行
srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说sr ...
- Java Service Wrapper 发布Java程序为Windows服务
下载Windows版本:https://www.krenger.ch/blog/java-service-wrapper-3-5-37-for-windows-x64/ 转自:F:\java\bhGe ...
- 利用JAVA Service Wrapper把JAVA程序做成windows服务
今天做了一个读取数据入库的程序.由于读取的数据每天都更新,于是就想把程序做成一个服务,每天定时执行.研究了一下,发现有几种方式可以做.下面我主要记录一下JAVA Service Wrapper方式. ...
- 将控制台程序做成windows服务
一:添加windows服务 二:修改XXXInstaller1的StartType=Automatic,修改ProcessInstaller1的Account=LocalSystem 三:在progr ...
- 把java程序作为windows服务运行
参考: https://www.jianshu.com/p/fc9e4ea61e13 https://blog.csdn.net/qq_28566071/article/details/8088250 ...
随机推荐
- vector,list和deque区别
stl提供了三个最基本的容器:vector,list,deque. vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由 ...
- M0、M1、M2、M3都是用来反映货币供应量的重要指标
m2-反映货币供应量的重要指标编辑词条m2广义货币是一个经济学概念,和狭义货币相对应,货币供给的一种形式或口径,以M2来表示,其计算方法是交易货币(M1,即社会流通货币总量加上活期存款)以及定期存款与 ...
- POJ2104-- K-th Number(主席树静态区间第k大)
[转载]一篇还算可以的文章,关于可持久化线段树http://finaltheory.info/?p=249 无修改的区间第K大 我们先考虑简化的问题:我们要询问整个区间内的第K大.这样我们对值域建线段 ...
- XAMPP的MYSQL无法启动
昨天用各种方式试验MYSQL的数据库备份与恢复操作,恢复过程中,MYSQL就无法启动了. 提示如下: 22:59:43 [mysql] Attempting to start MySQL app... ...
- 【MySQL】关于MySQL错误日志信息的收集
为方便维护MySQL,写了个脚本用以提供收集错误信息的接口.这些错误信息来自与MySQL错误日志,而 通过grep mysql可以获取error-log的路径. #!/usr/bin/env pyth ...
- 数组字符串与指针字符串的区别 char s[]="***" 和char *s="***"的区别
char s[] = "wangshihui"; char *s = "wangshihui"; 皆宣告了s字符串,在C-style string的函数皆可使用 ...
- 【Spring MVC系列】--(5)理解AOP
1.java反射 实用:JAVA反射机制及应用例子 http://407827531.iteye.com/blog/1173930 系统:java反射原理 http://china-jianchen. ...
- HDU4612(Warm up)2013多校2-图的边双连通问题(Tarjan算法+树形DP)
/** 题目大意: 给你一个无向连通图,问加上一条边后得到的图的最少的割边数; 算法思想: 图的边双连通Tarjan算法+树形DP; 即通过Tarjan算法对边双连通缩图,构成一棵树,然后用树形DP求 ...
- (第三章)Java内存模型(中)
一.volatile的内存语义 1.1 volatile的特性 理解volatile特性的一个好办法是把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步.下面通过具体 ...
- Python顺序与range和random
range([start,] stop[, step]) start是开始,stop是停下,step是步长. >>> range(10) range(0, 10) >>& ...