언어&프레임워크/Node.js

[Node.js]패키지 매니저의 개념과 PM2 기능 살펴보기

밍풀 2023. 1. 14. 19:58

패키지 매니저와 PM2

 

NPM ; node.js 에서 가장 광범위하게 사용되는 패키지 관리해주는 패키지매니저

기본적으로 node.js 설치시 함께 설치됨

 

패키지 ; 소프트웨어 부르는 여러말 중 하나, 독립적으로 실행되는 프로그램, 프로그램안의 부품 프로그램 등

 

패키지 매니저는 이러한 소프트웨어 관리 생성 설치 업테이트 관리 삭제 등 관리해줌

각각 컴퓨터 언어 운영체제별 역할을 함 , NPM 그중 하나

 

NPM통해 프로그램 설치 하기

검색엔진 PM2 검색

PM2라는 패키지 나옴 

PROCESS는 프로그램을 부르는 다른 말 중 하나

실행중인 프로그램(노드를 통해 만든 main.js같은), 프로그램이 원하지 않는 순간 꺼질 수 있어, pm2같은 프로그램이 프로세스 감시하다가 꺼지면 다시 켜

아니면 코드 수정시 nodejs껐다가 다시 실행시켜야지만 변경 반영됐는데 pm2가 파일이 수정되는지 감시하다가 자동으로 껏다가 다시 켜서 수정할때마다 반복하던 작업 자동으로 하도록 함

 

pm2검색시 나오는 페이지 화면, 드래그로 표시된 코드 프롬프트화면에 입력시 설치됨

-g 는 독립된 소프트웨어이기에 이 컴퓨터 어디서든 사용할 수 있어야 한다는 의미

pm2 실행

pm2 로 main.js 를 실행한 것임

위와 같이 웹페이지 실행됨을 볼 수 있음

현재 pm2 로 실행중인 프로세스 리스트 보여주기; pm2 list

현재 pm2로 실행중인 것 뜸 ; pm2 monit, q버튼 누르면 나가짐

 

프로그램 끄고싶을때 pm2 list로 목록을 보고 끄고싶은 프로그램(main.js) 체크하고 pm2 stop main.js 입력 

 

pm2가 소스코드 변경시 자동으로 main.js 를 껐다 켜주기 때문에 직접 수정할때마다 껐다키지 않아도 됨

pm2 start main.js --watch 입력, watch 꼭 입력해야함

입력 후 main.js 변경시 원래는 ctrl+c 해서 다시 node main.js 입력해야 했다면

이제는 그냥 웹페이지 새로고침시 반영되어 나옴

 

그러나 node  main.js 로 실행시 문제점이 있다면 바로 프롬프트화면에 보여줬지만 pm2로 실행시 그렇지 않음

이를 위해 pm2는 pm2 log 입력시 문제점 볼 수 있음 

 

pm2 kill 

pm2 로 켜진 모든것을 꺼버림

pm2 start main.js --watch --no-daemon

pm2 를 실행하는 것과 동시에 로그까지 보이게함

 

daemon 은 백그라운드로 실행되는 프로그램들을 의미

즉 --no-daemon 입력시 데몬이 아닌상태로 실행되게 됨

나가려면 ctrl + C

그런데 pm2 list해보면 꺼질때도 있고 아닐때도 잇어

걍 pm2 kill 하기 

 

--ignore-watch="data/*"

data 디렉토리에 있는 모든 파일에 대해서 watch 를 무시한단 뜻 

 

pm2 start main.js --watch --no-daemon 을 입력시에 pm2 를 실행함과 동시에 log를 볼 수 있는데

웹페이지에서 create 할 경우 위와 같이 node.js 가 꺼졌다가 다시 켜지는 것을 볼 수 있음( restarting 부분에서 확인)

 

근데 나중에 세션이나 passport배우면 원하지 않는 타이밍에 프로그램이 꺼졌다가 켜지는것은 원하지 않는 것임.

우리가 세팅해놓은 여러 데이터가 사라지기때문.. 파일에 있는 데이터 아니고 메모리에 올라가있던 데이터가 사라져버림 

 

이런경우에는 --ignore-watch 를 사용하는 것임

파일을 수정하거나 추가하는 등 기능이 들어가는 경우는 ignore watch 기능 해서 꺼졌다 켜지는것 방지하기

 

+만약 여러 디렉토리 관리해야 하면 한칸 띄어쓰기 하고 디렉토리 추가 하면됨

data/* 한칸띄우고 session/* 입력