개발환경 : 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 프로세스를 중단하였습니다.
'🟩Node.js' 카테고리의 다른 글
[Node.js] mongoose로 mongoDB 조작하기 (0) | 2021.11.04 |
---|---|
[Node.js] 공공데이터 포털 API 문서 Node.js로 크롤링 후 DynamoDB에 저장하기 (1) | 2021.10.31 |
[Node.js] HTML을 Parse 하여 웹 정보 크롤링하기 (6) | 2021.04.24 |
[Node.js] GET, POST 방식 요청 처리하기 (HTML form에서 데이터 받기) (1) | 2021.04.03 |
[Node.js] Node.js로 웹서버 구축해보기 (0) | 2021.03.27 |