如何将node.js安装为windows服务?

TN.*_*TN. 120 windows-services node.js

我已经下载了node.js可执行文件.如何将该可执行文件作为Windows服务运行?我不能使用标准的node.js安装程序,因为我需要同时运行多个版本的node.js.

Cor*_*rey 172

晚到派对,但节点窗口也会起作用.

在此输入图像描述

它还内置了系统日志记录.

在此输入图像描述

有一个API可以从代码创建脚本,即

var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'Hello World',
  description: 'The nodejs.org example web server.',
  script: 'C:\\path\\to\\helloworld.js'
});

// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});

svc.install();
Run Code Online (Sandbox Code Playgroud)

FD:我是这个模块的作者.

  • 第二个“很棒”。我只是按照您的自述说明进行操作,它开箱即用-非常罕见!您可能需要添加到自述文件中的一件事:如何在CLI上运行创建的js脚本:即>节点set_up_win_service.js ... (2认同)

Har*_*pal 32

我发现这个东西非常有用,我在它周围构建了一个更容易使用的包装器(npm,github).

安装它:

npm install -g qckwinsvc
Run Code Online (Sandbox Code Playgroud)

安装您的服务:

qckwinsvc

prompt: Service name: [name for your service]
prompt: Service description: [description for it]
prompt: Node script path: [path of your node script]
Service installed
Run Code Online (Sandbox Code Playgroud)

卸载您的服务:

qckwinsvc --uninstall

prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
Run Code Online (Sandbox Code Playgroud)

  • qckwinsvc 不再维护。有新版本 qckwinsvc2 (npm i qckwinsvc2 -g) (2认同)

Pre*_*vić 27

WinSer是一个node.js友好包装流行的NSSM(非吸吮服务管理器)

  • @FelicePollano NSSM认为它是“不吸吮”,因为它监视托管的应用程序,这与其他解决方案(如srvany)使服务处于运行状态(即使被包装的进程终止)相反。 (2认同)
  • @FelicePollano托管应用程序退出并不意味着坏事.重点是:NSSM反映(或者可以反映,如果配置正确)真实服务状态,因此可以监控服务,而不是像其他服务管理器一样假设运行状态(作为用户我可以杀死托管进程,srvary仍会显示处于运行状态的服务). (2认同)

Mic*_*ski 15

来自这个博客

接下来,我想将节点作为服务托管,就像IIS一样.这样它就可以启动我的机器,在后台运行,如果它崩溃则自动重启等等.

这就是非吸烟服务经理nssm进入图片的地方.此工具允许您将普通.exe作为Windows服务托管.

以下是我用于将节点应用程序实例设置为服务的命令,像管理员一样打开cmd并键入以下命令:

nssm.exe install service_name c:\your_nodejs_directory\node.exe c:\your_application_directory\server.js
net start service_name
Run Code Online (Sandbox Code Playgroud)


KFL*_*KFL 13

我不是直接解决这个问题,而是提供一种替代方案,可以通过更多node.js时尚方式满足您的要求.

功能上的要求是:

  1. 让逻辑(app)在后台运行
  2. 能够启动/停止逻辑
  3. 系统启动时自动启动逻辑

通过使用流程管理器(PM)并使流程管理器在系统启动时启动,可以满足这些要求.两个对Windows友好的PM是:

要使PM自动启动,最简单的方法是使用"启动时"触发器创建计划任务:

在此输入图像描述