pm2로 Node.js 서버 관리하기

1 분 소요

Node.js 기반 서버를 ssh로 접속한 컴퓨터에서 구동하려면 nohup, pm2 등 여러 방법이 있다. 오늘은 pm2로 원격 컴퓨터에서 Node.js 서버를 구동해볼 것이다.

준비물

  • NPM이 포함된 Node.js 환경

원격 컴퓨터에서 작업해도 되고 로컬 컴퓨터에서 작업해도 상관없다. pm2는 사용 가능한 Node.js 환경만 있으면 동작한다.

pm2 설치하기

터미널을 열어서 다음 명령어를 입력해서 pm2를 설치한다.

npm install -g pm2

사용하기

pm2에서 서버를 실행하는 모드는 fork 모드와 cluster 모드로 나뉘는데, fork 모드는 일반적인 Node.js의 특징인 싱글 스레드로 실행되어 서버의 사양에 따라 최대 성능을 내지 못할 수 있고, cluster 모드는 여러 코어를 활용해 사용할 수 있는 자원을 최대로 활용할 수 있다는 특징이 있다.

fork 모드로 실행하려면 다음 명령어를 입력하면 된다.

pm2 start <실행할 코드 파일>

cluster 모드로 실행하려면 다음 명령어를 입력하면 된다.

프로세스 갯수에는 max 키워드로 사용 가능한 최대 프로세스 갯수를 할당할 수도 있다.

pm2 start <실행할 코드 파일> -i <프로세스 갯수>

어느쪽이든 pm2 list를 입력했을 떄 아래 사진처럼 나오면 프로세스가 실행중이라는 뜻이다.

pm2_list

pm2 monit을 입력하면 아래 사진처럼 현재 실행중인 프로세스들의 로그와 업타임 등 여러 정보를 볼 수 있다.

pm2_monit

pm2의 실행중인 프로세스에 적용 가능한 명령어는 4가지다.

pm2 restart <앱 이름>   # 프로세스 재시작(클러스터 선택시 모두 프로세스 종료 후 재시작)
pm2 reload <앱 이름>    # 프로세스 재시작(클러스터 선택시 최소 프로세스 하나를 남겨서 다운되지 않게 함)
pm2 stop <앱 이름>      # 프로세스 정지
pm2 delete <앱 이름>    # 프로세스 제거

위의 명령어에서 앱 이름 대신 프로세스의 id로 특정하거나, 또는 all 키워드로 모두 선택할 수 있다.

자동 시작 설정

컴퓨터를 재부팅할 때마다 일일이 pm2의 세팅을 다시 해주는 것이 귀찮다면 pm2의 상태를 저장한 후 컴퓨터 부팅 시 pm2가 시작하게 세팅하는 방법도 있다.

유닉스 계열에 설정

pm2의 공식 문서에 따르면 유닉스 계열의 경우 다음의 프로세스 초기화 시스템이 설정되어 있어야 한다.

  • systemd: Ubuntu >= 16, CentOS >= 7, Arch, Debian >= 7
  • upstart: Ubuntu <= 14
  • launchd: Darwin, MacOSx
  • openrc: Gentoo Linux, Arch Linux
  • rcd: FreeBSD
  • systemv: Centos 6, Amazon Linux

만약 설정되어 있다면 다음 두 명령어로 세팅을 완료할 수 있다.

pm2 startup # 이 명령어로 설정된 프로세스 초기화 시스템을 자동 탐지해서 시작 스크립트를 생성한다.
pm2 save    # 현재 실행중인 프로세스 목록을 저장해서 다음 부팅에 사용할 수 있게 만든다.

윈도우에서 설정

명령어 3줄로 세팅을 완료할 수 있다.

npm install pm2-windows-startup -g  # npm에서 시작 스크립트 다운로드
pm2-startup install                 # 시작 스크립트 설치
pm2 save    # 현재 실행중인 프로세스 목록을 저장해서 다음 부팅에 사용할 수 있게 만든다.

댓글남기기