인프런 커뮤니티 질문&답변

한글좋아님의 프로필 이미지

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

aws ec2에서 pm2 사용

21.08.02 01:29 작성

·

1.3K

0

안녕하세요. nodejs 공부 중인 학생입니다.

ec2로 공부용으로 시험삼아 한번 배포를 해보았습니다.
window에서 ssh로 연결하여 기존 예제들을 github에서 다운받아 실행 해보았습니다.
아무래도 일반적인 node app.js 명령어로 실행하면 ssh창을 종료할때 서버도 같이 종료되게 되니
pm2를 사용하여 창을 종료해도 서버는 계속 돌아가게 해보았습니다.

그런데 계속 ec2에선 pm2 status가 errored가 계속 뜹니다. 코드는 이상이 없는 것을 확인하였습니다. (예제를 활용하고, 개인 컴퓨터에선 정상작동 했기 때문에)


제가 몇시간 동안 계속 고민을 해봤는데 내린 결론은
pm2는 멀티 프로세스 방식이고, 저는 공부로 시험삼아 한거기 때문에 t2.nano ( 코어개수: 1) 로 하여서
pm2에 코어하나를 썼기 때문에 노드 서버를 실행할수있는 여분 코어가 없으니 계속 errored가 뜬다고 결론 지었습니다.

좀 내용이 길었지만, 제가 생각한 내용이 맞을까요?

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 08. 02. 01:32

아뇨. 코어 하나여도 pm2 됩니다. 프로세스와 코어는 상관없는 개념입니다. 에러는 반드시 에러 내용을 보고 판단하는 겁니다. pm2 logs --err --lines 100 입력해보세요.

한글좋아님의 프로필 이미지
한글좋아
질문자

2021. 08. 02. 01:48

빠른 답변 감사합니다.  해결하였습니다. !!
로그를 잘 읽고 해결하는 습관을 길러야 겠네요. ㅜㅜ

대충 아래 이런식의 애러 내용이고 리눅스에서 80번 포트를 실행하려면 root 권한이 필요한데 
sudo pm2 start app.js 이런식으로 실행을해도 root 권한이 적용이 안되는것 같습니다. 

그래서 관련 애러 내용을 가지고 검색 해본 결과 
https://stackoverflow.com/questions/35105100/start-app-as-root-with-pm2
위 링크를 찾았고 sudo chown -R ubuntu:ubuntu /home/ubuntu/.pm2 명령어를 통해 정상작동하게 되었네요 혹시 다른분중에서 저같은 경우를 겪으신분이면 참고하시길 바랍니다.
감사합니다. !

 code: 'EACCES',

0|app2     |   errno: 'EACCES',

0|app2     |   syscall: 'listen',

0|app2     |   address: '0.0.0.0',

0|app2     |   port: 80 }

0|app2     | { Error: listen EACCES 0.0.0.0:80