
我们知道,优质的服务,是7*24小时、随叫随到。计算机所提供的,也是一样。与和生活中不同的是:服务有可能器宕机重启、服务程序也可能因为某些错误而停止运行。这就要求在部署服务器的时候满足一下两个条件:
- 保证服务程序在服务器开机后自动重启
- 保证服务程序停止后自动启动。
要达到以上两种目的,需要开启守护进程。在Linux中,有很多种方式, supervisor 就不错。在windows,其原理是把应用程序或者启动程序的bat文件添加到windows服务中并设置自动启动。有一些应用,如tomcat,xampp、mysql等,在安装时会自动完成这一系列操作。而某些应用或者自己开发的程序,就需要自己手动添加到后台服务。添加exe为windows service服务,这个方法可行,但我觉得不够好。nssm工具,方便,操作简单(在windows 10 和windows server 2012上测试成功 )。nssm下载链接nssm.cc
以下是使用步骤:
- 下载nssm 解压到没有中文和空格的盘符下。如下图

2. 以管理身份打开cmd或powershell,输入一下命名(cd nssm对应的文件下(win64|win32根据 自己电脑系统选择) )如图
cd H:installnssmwin64

3. 输入以下命令 (videoflvSer 安装服务的额名字、可以自己指定)
nssm.exe install videoflvSer
4. 如果运行成功,会弹出一下界面 选择参数之后,点击 install service

解释
Application Path:要注册为服务的程序的路径
Startup directory:要注册为服务的程序所在的文件夹
Arguments:启动参数
这里其实是一个node的程序 这个服务相当于 node app.js 启动一个node的程序,同理可得,如果是python的程序呢,同样适用。这是我发现的,windows系统上,最适合python守护进程的工具了。
5. 打开服务查看器查看是否成功。将启动类型修改为自动。便可解决满足文章开始的两个要求

6. 验证。开机启动=就不验证了,这里验证一下,当程序停止后是否会自动。

解释:这里我添加的app.js 启动的是8000端口,第一步我先用netsat查询8000端口的进程,第二步使用taskkill 停止该任务进程,第三步再次查询8000的端口的时候,又开了一个新的进程。所以,这一番操作后,在程序意外停止后,会自动启动改程序的。
7. 最后,如果想卸载服务,使用如下指令
nssm.exe remove <服务名称>
这方法应该适用于任何winows上,需要后台运行的程序。并且自动重启的程序.