반응형

개발환경 : Windows10, VScode, Node.js(ver 15.12.0)

 

node.js 공부를 하다 보면 서버를 생성하고 계속 수정하는 과정에서

Ctrl+C로 종료 후 내용을 수정하고 다시 node main.js 명령어로 실행해야 하는 경우가 많습니다.

그리고 Node.js 애플리케이션은 싱글 스레드로 동작하고 단일 CPU 코어에서 실행되기 때문에 CPU 멀티코어 시스템을 사용할 수 없습니다. 또한 서버 에러 발생 시 프로세스가 중단되므로 문제가 발생합니다.

그렇기 때문에 이러한 문제들을 해결하기 위해 여러 가지 Process Manager들이 등장하였는데 이번 포스팅에서는 그중에서도 PM2에 대해서 설명하고자 합니다.

 

PM2 패키지 설치

$ npm install pm2 -g

중간에 error나 denied가 뜨면 명령어 앞에 sudo를 붙여 관리자 권한으로 설치하시길 바랍니다.

 

 

PM2 실행

$ pm2 start main.js

 

 

실행된 프로세스 목록 보기

$ pm2 list

 

 

PM2 자체를 종료

$ pm2 kill

pm2 kill 후 pm2 list로 목록을 보면 모든 프로세스들이 종료된 것을 확인할 수 있습니다.

 

 

코드 수정 실시간 반영

$ pm2 start main.js --watch

watch 옵션을 넣게 되면 이제 코드 수정 혹은 변동사항이 있을 때마다 Node.js를 재시작하게 됩니다.

 

간단하게 HTML로 문서를 작성하고 서버로 해당 파일을 띄웠을 때를 살펴보면

<index.html>

<!doctype html>
<html>
<head>
  <title>pm2 test</title>
  <meta charset="utf-8">
</head>
<body>
<p>test</p>
</body>
</html>

<main.js>

var http = require('http');
var fs = require('fs');
var app = http.createServer(function (request, response) {
    var url = request.url;
    if (request.url == '/') {
        url = '/index.html';
    }
    if (request.url == '/favicon.ico') {
        response.writeHead(404);
        response.end();
        return;
    }
    response.writeHead(200);
    response.end(fs.readFileSync(__dirname + url));

});
app.listen(3000, function () {
    console.log("server is runing...")
});

 

localhost:3000 에서는 "test"라는 문자가 출력되고

index.html 파일을 수정했을 시에 (8번째 줄 "test" => "test2") 

main.js를 종료하지 않고 페이지 새로고침 시 변동사항이 적용된 것을 확인할 수 있었습니다.

 

 

로그 확인하기

$ pm2 log

실행 중인 PM2의 로그를 확인하는 명령어입니다. 실시간 에러나 변동사항을 볼 수 있습니다.
(빠져나올 때는 Ctrl+C로 빠져나오면 됩니다.)

 

 

모니터링 하기

$ pm2 monit

실행 중인 프로세스들을 모니터링하는 명령어입니다. q로 빠져나올 수 있습니다.

 

 

프로세스 중단하기

$ pm2 stop main

pm2 list로 살펴보니 main이라는 프로세스가 실행 중이므로 pm2 stop main 명령어로 main 프로세스를 중단하였습니다.

 

 

반응형

+ Recent posts