Node.js
다운 타임없이 Node.js 애플리케이션 배포.
수색…
다운 타임없이 PM2를 사용하여 배포합니다.
ecosystem.json
{
"name": "app-name",
"script": "server",
"exec_mode": "cluster",
"instances": 0,
"wait_ready": true
"listen_timeout": 10000,
"kill_timeout": 5000,
}
wait_ready
리스닝 이벤트를 기다리는 것을 다시로드하는 대신 process.send ( 'ready')를 기다리십시오.
listen_timeout
앱이 수신 대기하지 않는 경우 재로드를 강제 실행하기 전의 시간 (밀리 초).
kill_timeout
마지막 SIGKLL을 보내기 전의 시간 (ms).
server.js
const http = require('http');
const express = require('express');
const app = express();
const server = http.Server(app);
const port = 80;
server.listen(port, function() {
process.send('ready');
});
process.on('SIGINT', function() {
server.close(function() {
process.exit(0);
});
});
응용 프로그램이 DB / 캐시 / 작업자 / 기타와의 연결을 유지할 때까지 기다려야 할 수 있습니다. PM2는 온라인으로 신청서를 검토하기 전에 기다려야합니다. 이렇게하려면 프로세스 파일에 wait_ready: true
를 제공해야합니다. 이렇게하면 PM2가 해당 이벤트를 수신 대기하게됩니다. 응용 프로그램에서 process.send('ready');
를 추가해야합니다 process.send('ready');
귀하의 신청서가 준비된 것으로 간주되기를 원할 때.
프로세스가 PM2에 의해 중지 / 재시작 될 때, 일부 시스템 신호는 주어진 순서대로 프로세스로 전송됩니다.
먼저 SIGINT
시그널이 프로세스로 보내진다. 시그널은 프로세스가 멈출 것임을 알리기 위해 잡을 수있다. 응용 프로그램이 1.6s (사용자 정의 가능) 이전에 단독으로 종료하지 않으면 프로세스가 강제 종료되도록 SIGKILL
신호를받습니다. 따라서 응용 프로그램이 상태 나 작업을 정리해야 할 경우 SIGINT
신호를 잡아서 응용 프로그램을 종료 할 준비를하십시오.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow