[node.js] Windows 서비스로 node.js를 설치하는 방법?

node.js 실행 파일 을 다운로드했습니다 . 해당 실행 파일을 Windows 서비스로 어떻게 실행할 수 있습니까? node.js의 여러 버전을 동시에 실행해야하므로 표준 node.js 설치 프로그램을 사용할 수 없습니다.



답변

파티에 늦었지만 노드 윈도우 도 트릭을 수행합니다.

여기에 이미지 설명을 입력하십시오

시스템 로깅도 내장되어 있습니다.

여기에 이미지 설명을 입력하십시오

코드에서 스크립트를 작성하는 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 방식으로 요구 사항을 충족시킬 수있는 대안을 제공합니다.

기능적으로 요구 사항은 다음과 같습니다.

  1. 로직 (앱)이 백그라운드에서 실행되도록합니다.
  2. 논리를 시작 / 중지 할 수 있어야합니다
  3. 시스템 부팅시 로직 자동 시작

프로세스 관리자 (PM)를 사용하고 시스템 시작시 프로세스 관리자를 시작하면 이러한 요구 사항을 충족 할 수 있습니다. Windows 친화적 인 두 가지 좋은 PM은 다음과 같습니다.

PM이 자동으로 시작되도록하는 가장 간단한 방법은 “시작시”트리거를 사용하여 예약 된 작업을 만드는 것입니다.

여기에 이미지 설명을 입력하십시오


답변

프로세스 관리자 + 작업 스케줄러의 접근 방식은 전 년 전에 몇 가지 일회성 서비스 설치와 함께 잘 작동 기록했다. 그러나 최근에는 소규모 서비스가 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>


답변