본문 바로가기

개발자는 오늘도 달립니다.

[NodeJS] pm2 부트 스크립트 등록하기 (systemctl service) 본문

JavaScript/NodeJS

[NodeJS] pm2 부트 스크립트 등록하기 (systemctl service)

✍21시간 2020. 12. 8. 13:57

서버에서 무중단 서비스를 운영을 할 경우 무중단 데몬을 띄워 관리를 해줘야합니다!
Node.js의 경우 서버가 크래시나면 재시작을 하기 위해서 watchdog 같은 프로세스 관리자를 사용하게 됩니다.
저 같은 경우 서비스를 관리하는 매니저 모듈을 개발하여 동작시키거나 이후에는 Node.js 라이브러리 패키지인 nodemon이라든가 forever라는 도구를 사용했습니다.

하지만 현재는 Node.js 패키지인 PM2를 애용하고 있는데 다양한 기능과 깔끔한 monit 로 많은 개발자들이 사용하고 있습니다.

- pm2 install

sudo npm install pm2 -g

위와 같이 전역에 설치해서 사용하면 그만이긴 한데... 
서버가 재부팅하거나 했을 경우 서비스등록을 해줘야합니다~ 
리눅스의 경우 부트 스크립트로 service, systemctl 등으로 등록을 해서 사용해야하는데 pm2로 등록하는 방법을 아래와 같이 진행하시면 됩니다. 

pm2 에서는 OS가 부팅되고 나서 자동으로 프로젝트를 시작프로그램으로서 올려주는 startup 하는 과정을 제공한다. 
일단 pm2의 startup을 등록하려면 su가 아닌 실제로 프로젝트를 돌릴 계정에서 진행을 해야한다. (su로 하면 안된다.) 

pm2 startup [계정이름]

예시1

 

※ 커맨드 완료 후 나오는 내용 중 복사/붙여넣기 하라는 문구가 나오는데 잊어먹지 말고 꼭 해줍니다!

[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup pi

 

sudo 권한이 필요하니 만약 없으면 vi /etc/sudoers 파일에 꼭 해당계정 sudo계정을 추가해줍니다.

예시2

 

pm2에 데몬을 시작시킨 후 다시 한번 pm2를 startup 해주면 무중단 서비스 올리기가 완료 됩니다~!

pm2 start [실행파일절대경로주소] --name="[서비스별칭]"
pm2 save
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup pi

 

 

※ 부팅 시스템에 등록이 되어있는지 아래와 같이 확인하면 됩니다.

sudo systemctl status pm2-[등록서비스이름].service

예시3

 

※ startup 과 반대로 unstartup을 해주면 등록 된 서비스를 지울 수 있습니다.

Comments