pm2란 NodeJS 서버를 백그라운드에서 실행하고 관리할 수 있게 해주는 도구이다. 노드 서버를 다룬다면 한 번쯤은 다루게 되는 프로세스 관리자이다. 리눅스 서버에서 노드 서버를 다룰 때 사용하게 된다.
서버를 켜고 끄는 것 말고도 모니터링, 최적화 등 여러 기능이 많은 도구이다. 이번 시간에는 자주 사용하는 pm2 명령어를 알아볼 것이다. 명령어가 어렵지 않고 직관적인 편이라 사용하기 용이했다.
pm2를 -g 옵션을 붙여 전역으로 설치한다. 어디서든 pm2 명령어를 사용할 수 있게 해준다. 서버 전체에서 프로세스를 관리하는 도구이기 때문에 전역으로 설치한다.
npm install -g pm2
pm2가 정상 설치되었는지 확인한다.
pm2 -v
pm2 start app.js
pm2 start app.js --name my-app
pm2 list
위에서 start명령어로 실행시킨 서버들이 돌아가고 있을 것이다. 아래 명령어로 전체 프로세스 목록을 확인할 수 있다.
start로 실행시킨 것, stop되어있는 것 등 삭제되지 않고 pm2로 올린 서버들 전체를 보여준다.
pm2 사용 시 가장 많이 사용하는 명령어이다. pm2 status도 같은 명령어이다.
pm2 show my-app
pm2 stop my-app
pm2 reload my-app
restart는 그냥 껐다 키는 것이지만, reload는 무중단 재시작이라고한다. (단, 클러스터 모드일 때)
pm2 delete my-app
pm2에서 제거된다. stop은 서버를 중단하지만, delete는 완전 제거이다.
실무에서 정말 많이 사용하는 명령어 중 하나이다.
pm2 logs
pm2 logs my-app
pm2 logs --lines 100
로그 파일 위치는 ~/ .pm2/logs/에서 확인할 수 있다.
pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u ubuntu --hp /home/ubuntu
1번에서 startup명령어를 통해 실행시키면 해당 경로에 맞는 명령어를 알려준다. 그대로 실행시킨다.
pm2 save
이제 서버 재부팅해도 자동으로 실행된다.
실무에서 정말 유용한 명령어이다.
이 작업을 해두지 않으면 현재 pm2를 이용해 띄운 서버들이 존재하는 엄마 서버(?)가 죽으면 다시 켰을 때 서버들이 당연히 종료되어 있기 때문에 수동으로 다시 켜줘야하는데, 이 명령어를 통해 방지할 수 있다.
pm2 start app.js -i max
다음 시간에는 ecosystem.config.js 파일을 이용하여 사용하는 것도 알아볼 것이다.
pm2 list 를 통해 아이디를 확인할 수 있는데 아이디를 이용해서도 명령어를 이용할 수 있다. pm2 start app.js 대신 pm2 start 0 과 같이 사용한다.
pm2 start 1 #서버 시작
pm2 list #모든 서버 리스트 출력
pm2 logs #전체 로그 출력
pm2 logs 1 #하나의 서버 로그 출력
pm2 reload 1 #서버 재시작
pm2 stop 1 #서버 중단
pm2 detete 1 #서버 삭제