공부 기록/Front-End

[Node.js] PM2 명령어로 프로세스 관리 (+jar 파일 배포)

뵤옹 2024. 2. 7. 15:52

 

프로젝트에서 front-end와 back-end의 프로세스 관리를 PM2를 사용하여 관리하고 있는 상태이다.

이 포스팅은 PM2가 무엇인지, 또 PM2를 설치하고 어떤 명령어들을 사용할 수 있는 정리한 포스팅이다.

또한 기록용으로 백엔드 서버 기동을 위한 Spring Boot의 jar 파일을 PM2 명령어로 실행하는 명령어도 남겨두려 한다.

 

PM2란?

PM2는 Node.js 애플리케이션을 관리하는 강력한 프로세스 매니저이다.

PM2로 애플리케이션을 다운타임없이 재시작할 수 있고, 애플리케이션이 계속 실행되도록 유지할 수 있다. 기존에는 자바스크립트 파일을 테스트하려면 node [파일명]으로 실행하여 터미널이 종료되면 프로세스가 종료되는 단점이 존재했다.

하지만 PM을 사용하면 노드 프로세스를 계속 유지할 수 있다. 또한 프로세를 여러 개 실행시키면 각 프로세스마다 포트가 할당되고 이를 통해 로드밸런싱하여 프로세스의 작동을 분할 할 수 있다.

 

PM2 설치

npm install pm2 -g

 

PM2는 package.json, node_modules 없이도 노드 프로세스를 관리할 수 있기에 전역으로 설치한다.

 

PM2 명령어

PM2 프로세스 실행

pm2 start [파일명]
# pm2 start index.js
# pm2 start fruit.js

PM2를 간단하게 시작하려면 start 뒤에 파일 명을 붙여 실행하면 된다.해당 파일에 대한 노드 프로세스가 실행되어 중단없이 애플리케이션을 계속 실행할 수 있다.

 

이름을 지정하여 프로세스를 실행할 때는 --name 옵션을 붙이면 된다.

pm2 start --name [지정할 이름] [파일명]
# pm2 start --name sample index.js

 

PM2 중단

pm2 stop [파일명]
# pm2 stop index.js
# pm2 stop fruit.js

 

PM2 재시작

pm2 restart [파일명]
# pm2 restart index.js
# pm2 restart fruit.js

 

PM2 프로세스 삭제

pm2 delete [파일명]
# pm2 delete index.js
# pm2 delete fruit.js

 

PM2 목록 확인

pm2 list
pm2 status

 

해당 명령어를 사용하여 현재 실행중이거나 중단되 프로세스 목록을 확인할 수 있다.

pm2 delete로 삭제된 프로세스는 확인할 수 없다.

 

PM2 Git revision 정보 확인

pm2 show [pm2에 저장된 프로세스 명칭]
pm2 show [pm2 프로세스 id]
pm2 show [파일명]
# pm2 show sample

PM2를 사용하여 올린 프로세스가 Git으로 관리되고 있다면 pm2 show 명령어를 사용하여 Git revision 정보를 확인할 수 있다.

이는 서버에서 현재 실행된 애플리케이션이 어떤 소스를 기반으로 실행되어 있는지 확인할 때 유용하다.

 

PM2 로그 확인

pm2 log
pm2 logs

현재 실행 중인 프로세스에서 찍힌 로그를 확인할 수 있다.

간단하게 확인하려면 index.js 파일을 생성 후, console.log로 간단하게 로그를 찍으면 PM2 로그 목록에 해당 로그가 기록된 것을 확인할 수 있다. pm2 log 명령어를 입력하면 로그가 실시간으로 쌓이는 것을 확인할 수 있다. 프로세스는 계속 실행되기 때문에 해당 프로세스에 추가되는 로그를 실시간으로 확인할 수 있다는 특징이 있다.

 

특정 프로세스의 로그 확인

pm2 log [프로세스 아이디]
pm2 log [프로세스명]
# pm2 log 1
# pm2 log sample
# 프로세스 아이디와 명은 pm2 list로 확인 가능

 

PM2 모니터링

pm2 monit

프로세스의 목록과 로그를 동시에 확인할 수 있는 모니터링 대시보드를 보여준다.

 

jar 파일 PM2로 배포하기

pm2 start --name (pm2에 올릴 프로세스 명) /(사용할 java 파일 위치)/java -- -jar -Dspring.profiles.active=prod /(jar파일의 위치)/your.jar --jasypt.encryptor.password=(암호화 key)

 


[ 참 고 ]

 

[ 추가로 보면 좋을 포스팅]