IT's Jenna

pm2 본문

서버배포/aws

pm2

developer Jenna 2021. 3. 23. 17:49

이전 포스팅에서 설명한 것처럼 처음 서버를 만들어서 터미널로 동작을 시키면 해당 터미널이 종료되거나 PC가 종료되었을 때 서버도 함께 종료된다. 하지만 서비스를 운영할 때 서버는 절대 종료되어선 안된다는 것은 기본이다!

 

따라서 이렇게 예기치 않게 서버가 종료되더라도 자동으로 다시 실행을 시켜주거나 서버 코드가 변경이 되었을 때 재시작을 시켜주는 모듈이 있고 그것을 pm2라고 한다.

 

pm2는 Process Manager의 약자로 말 그대로 프로세스를 관리하는 모듈로서 node.js로 만들어진 프로그램의 프로세스를 체계적으로 관리해준다.

 

프로세스 : 컴퓨터에 저장되어 있는 프로그램(정적인 코드 덩어리)이 실행되어 메모리에 올라가 있는 것 즉, 동작중인 프로그램

 

pm2의 주요 역할은 다음과 같다.

 

  • 프로세스를 계속 관찰하고 있다가 해당 프로세스가 꺼지면 자동으로 다시 켜지게 만들어 준다.
  • 파일 수정이 있는 경우 프로세스를 자동으로 재시작해준다.
  • 스레드의 숫자만큼 프로세스를 실행시켜 준다.
  • 컴퓨터 리부팅 시에 자동으로 프로세스가 시작할 수 있도록 설정할 수 있다.

위 기능들을 어떻게 설정할 수 있는지 pm2 명령어를 통해 알아보자.

 

  • pm2 examples : 자주 사용하는 명령어 확인 가능
  • pm2 ls : 현재 실행되고 있는 프로세스 목록 확인 가능
  • pm2 start 파일명 : 해당 애플리케이션을 프로세스로 만들어서 pm2가 관찰하게끔 만들어줌
  • pm2 stop (id/name) or all : 특정 프로세스 종료 또는 모든 프로세스 종료
  • pm2 restart (id/name) : 프로세스 재시작
  • pm2 delete (id/name) : 프로세스 삭제

 

  • pm2 start 파일명 --watch : 해당 파일을 계속 보고 있다가 수정되면 프로세스를 자동으로 껐다 켜줌
  • pm2 log : 실행 중인 프로세스들의 로그를 하나의 화면에서 확인할 수 있음
  • pm2-dev 파일명 : 파일을 watch 하면서 로그까지 함께 찍어줌

node js는 기본적으로 싱글 스레드 기반이다. 싱글 스레드랑 하나의 프로세스 안에서 하나의 스레드가 돌아간다는 것이다.

그런데 예를 들어 pc의 cpu가 6 코어에 사용할 수 있는 스레드가 총 12개인 경우에 그중에서 하나의 스레드만 사용하는 것은 상당한 자원 낭비이다. 그렇기 때문에 cluster 기능을 활용해서 16개의 스레드를 16개의 프로세스로 돌려주는 것이다.

 

  • pm2 start 파일명 -i max  : 해당 pc에서 돌릴 수 있는 스레드의 숫자만큼 프로세스를 실행시킨다

 

  • pm2 startup : 컴퓨터가 꺼졌다가 켜졌을 때, 미리 저장해둔 상태의 프로세스들이 자동으로 실행되게 할 수 있다.

startup 실행 순서

  1. pm2 start 파일명 : 앱 실행
  2. pm2 save : 상태 저장
  3. pm2 startup : startup 스크립트 생성
  4. 생성된 스크립트 실행

<pm2 startup>


AWS에서 pm2 사용하기

지난 포스팅에서 aws 인스턴스를 생성하고 해당 인스턴스에 서버를 만들고, local pc에 저장해둔 서버 코드를 업로드했다. 해당 서버에 pm2 모듈을 설치해보자.

 

우선 키파일이 저장되어 있는 파일 경로로 들어가서 ssh 명령어로 서버에 접속한다.

pm2 공식 사이트 (pm2.keymetrics.io/)에서 pm2 글로벌 설치 명령어를 확인할 수 있다 : npm install pm2 -g

이때 주의할 점은 aws 서버에 pm2 설치를 할 때 root 권한으로 설치를 해주어야 하므로 sudo npm install pm2 -g 명령어를 활용해야 한다. 그렇지 않으면 설치 과정에서 에러가 발생한다.

 

<EC2 서버에 pm2 설치>

 

pm2 설치 여부를 확인하고 싶다면 pm2 -v로 버전 확인을 해보면 된다. 아래 그림처럼 굉장히 멋지게 표시된다.

 

 

<pm2 버전 정보 확인>


pm2로 서버를 실행시키고 싶다면 서버가 돌아가는 bin/www의 위치를 찾아서 start를 해준다.

이제 해당 서버는 pm2기반을 돌아가게 되고 터미널을 종료하더라도 서버가 종료되지 않는다.

 

<참고>

www.youtube.com/watch?v=p1Hp09Fr8HQ&t=14s

'서버배포 > aws' 카테고리의 다른 글

AWS - IAM 사용자 추가  (0) 2022.09.15
AWS - S3 생성하기  (0) 2022.09.15
RDS  (0) 2021.03.25
AWS 인스턴스 연결 & 서버 생성  (0) 2021.03.23
AWS 시작하기  (0) 2021.03.14
Comments