답변:
파티에 늦었지만 노드 윈도우 도 트릭을 수행합니다.
시스템 로깅도 내장되어 있습니다.
코드에서 스크립트를 작성하는 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();
FD : 저는이 모듈의 저자입니다.
나는 너무 유용한 래퍼 ( npm , github )를 더 쉽게 사용할 수있는 것을 발견했습니다 .
설치 :
npm install -g qckwinsvc
서비스 설치 :
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
서비스 제거 :
qckwinsvc-제거
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
WinSer 는 인기있는 NSSM (Non-Sucking Service Manager)을 중심으로하는 node.js 친화적 인 래퍼입니다.
다음으로 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
나는 질문을 직접 다루지 않고 더 많은 node.js 방식으로 요구 사항을 충족시킬 수있는 대안을 제공합니다.
기능적으로 요구 사항은 다음과 같습니다.
프로세스 관리자 (PM)를 사용하고 시스템 시작시 프로세스 관리자를 시작하면 이러한 요구 사항을 충족 할 수 있습니다. Windows 친화적 인 두 가지 좋은 PM은 다음과 같습니다.
PM이 자동으로 시작되도록하는 가장 간단한 방법은 "시작시"트리거를 사용하여 예약 된 작업을 만드는 것입니다.
pm2
시작시 배치 스크립트 사용 을 시작하려고 하면 환경 변수를 포함시켜야합니다. 그렇지 않으면 작동하지 않습니다. 여기에서 논의하십시오 : github.com/Unitech/pm2/issues/1079
프로세스 관리자 + 작업 스케줄러의 접근 방식은 전 년 전에 몇 가지 일회성 서비스 설치와 함께 잘 작동 기록했다. 그러나 최근에는 소규모 서비스가 IPC를 통해 서로 통신하는 소규모 서비스 방식으로 시스템을 설계하기 시작했습니다. 따라서 각 서비스를 수동으로 구성 할 수 없게되었습니다.
수동 구성없이 서비스를 설치한다는 목표를 향해 서비스 로 실행 파일을 설치하는 명령 줄 도구 인 serman을 만들었습니다 npm i -g serman
. 쓰기 (및 한 번만 쓰기)는 실행 파일과 함께 간단한 서비스 구성 파일입니다. 운영
serman install <path_to_config_file>
서비스를 설치합니다. stdout
그리고 stderr
모두 기록됩니다. 자세한 내용은 프로젝트 웹 사이트를 참조하십시오 .
작동하는 구성 파일은 아래와 같이 매우 간단합니다. 그러나 그것은 또한 많은 유용한 기능을 가지고 <env>
와 <persistent_env>
아래를.
<service>
<id>hello</id>
<name>hello</name>
<description>This service runs the hello application</description>
<executable>node.exe</executable>
<!--
{{dir}} will be expanded to the containing directory of your
config file, which is normally where your executable locates
-->
<arguments>"{{dir}}\hello.js"</arguments>
<logmode>rotate</logmode>
<!-- OPTIONAL FEATURE:
NODE_ENV=production will be an environment variable
available to your application, but not visible outside
of your application
-->
<env name="NODE_ENV" value="production"/>
<!-- OPTIONAL FEATURE:
FOO_SERVICE_PORT=8989 will be persisted as an environment
variable machine-wide.
-->
<persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>