IT

EC2 deploy server: 프로세스를 백그라운드에서 실행시키기

紫紅 2019. 10. 15. 01:05
반응형

EC2에 원격 접속하여 sudo node app.js 등의 명령어로 서버를 켜둬봐야 원격접속을 끊는 순간 서버가 꺼지기 일쑤다.
어떻게 해결해야할까?

node라면 pm2 등을 이용한다

node의 경우는 forever, pm2 등 다양한 패키지를 제공한다. 이를 사용하면 프로세스가 충돌나서 뒤져도 다시 실행시킬 수 있는 안정성을 보장 받기 때문에, 가장 올바른 방법이다. 해당 패키지들은 sudo npm install -g "패키지 이름"으로 설치가 가능하다. 해당 패키지로 앱을 실행시킨 뒤, exit 명령어를 입력해 원격접속을 종료하면 아마 프로세스가 계속 살아있을 것이다.

패키지 없이 실행하기

하지만 npm 업데이트 등의 이슈 발생 혹은 node가 아닌 다른 서버의 경우라면 어쩔텐가?(물론 버전 호환 문제라면 npm, node를 업데이트해주면 된다)
리눅스의 경우, 프로세스를 백그라운드에서 실행시키는 명령어를 지원한다. 즉, 특별한 모듈 없이도 백그라운드에서 실행 가능하단 것. 프로세스 뒤져도 재실행시키는 것 또한 가능은 하다만, 이번 포스트에선 생략.

sudo nohup node app.js &

실행된 것을 확인한 후,

disown %1
exit

로 나오게 되면, 아주 특별한 일이 없는 한 프로세스는 계속 살아있을 것이다.

요약

  1. sudo nohup 실행 명령어 &
  2. disown %1
  3. exit
반응형