티스토리 뷰

pm2 에서 관리되는 모듈은 대부분이 데몬 형태이고 각각은 메모리에 항상 상주해야 하는 서비스일 것이다. 운영중에 죽는 모듈은 pm2 에 의해서 자동으로 재시작되겠지만 시스템이 재부팅된다면 어떨까? 당연히 답은 No 다. 아직 우리는 pm2 에게 그런 일을 시키지 않았으니까.

리눅스의 부팅 시스템 init.d 같은 곳에 스크립트를 만들어 넣는 등의 방법으로 부팅시에 우리 모듈을 시작시킬 수 있다. 하지만 이런 귀찮은 절차를 이미 pm2 에서는 자동으로 제공해주고 있다. 옵션 하나만 입력하면 된다. 바로 아래서 살펴보도록 하자. 

시스템에는 우리의 모듈 server 가 돌고 있는 상황이다.

현재 돌고 있는 서비스에 대해서 부팅 시스템에 등록하는 방법은 매우 간단하다. pm2startup 옵션을 넘겨주면 된다. 뒤에 추가 옵션으로 현재 플랫폼을 선택할 수 있기는 하지만 생략하는 경우 자동으로 플랫폼을 찾아서 사용 가능한 명령어를 돌려준다.

$ pm2 startup

위와 같이 startup 옵션을 넘겨주면 아래 sudo env ... 로 시작하는 명령어 라인을 볼 수 있다. 이 부분을 그대로 복사해서 터미널에 붙여넣기 하고 실행해주면 된다. 정말 그게 끝이다. 단, 부팅 스크립트로 등록되는 것은 사용자별 관리가 아닌 시스템 전체에서 관리되는 대상이기 때문에 앞에 sudo 를 붙였다. root 권한을 사용할 수 없다면 먼저 /etc/sudoers 파일을 편집해서 sudo 권한을 얻거나, sudo 권한이 있는 다른 계정에서 해당 명령어를 사용해야 한다.

암호를 정상적으로 입력하고나면 아래와 같은 내용을 확인할 수 있다. 정상적으로 등록되었다는 내용이고 어떤 과정으로 등록이 되었으며 어떻게 실행이 되는지에 대한 요약이라고 보면 되겠다.

여기 예제에서 사용된 CentOS 의 경우에는 아래와 같이 systemctl 명령어를 사용해서 pm2 모듈이 부트 스크립트에 정상적으로 등록된 것을 확인할 수 있다. 서비스 이름은 바로 위에 캡쳐를 참고해서 넣어주면 된다.


한편 부트 스크립트에 등록된 모듈을 제거하기 위해서는 unstartup 명령을 사용해주면 된다. 이렇게 자동으로 부팅 상황까지 고려해주는 pm2 의 세심한 배려에 다시 감탄하고 간다. :-)

(*) pm2 unstartup 이후에 다시 등록하려고 할 때는 pm2 startup 전에 pm2 save 를 한번 해줘야 이전 정보들이 말끔히 정리된다. 참고하도록 하자.

댓글
댓글쓰기 폼