2 분 소요

화난다.


210907 어떻게 하면 해결될까?

사건의 발단: ec2로 서비스 중인 express 서버를 인스턴스에서 로그아웃 해도 돌아가게 하고 싶다. 당연함. 서버 돌리려고 aws 계속 켜놔야 하면 로컬에서 돌리는거랑 다른게 없잖아.
[ npm ] nohup

foreground에서 돌아가는 서버를 background로 돌리는 법은 간단하다.

nohup {서버 실행 명령어} & 하면 됨.

예를 들면 nohup node server.js &. 근데 나는 npm을 이용해서 nohup npm start & 함.

근데 안되더라? 왜인지 궁금해서 nohup.out 파일을 확인해봤다. nohup.out은 프로그램을 포어그라운드로 실행 시 커널에 출력 될 메세지들을 백그라운드로 실행했을 때도 나중에 볼 수 있도록 모아놓는 파일이다.

sh: nodemon: command not found

nodemon을 찾을 수 없단다.
[ npm ] nodemon

nodemon은 파일이 바뀔 때마다 감지해서 node를 자동으로 재시작 해주는 라이브러리다.

사용법도 간단해서, node server.js로 실행하던 서버를 nodemon server.js로 실행해주면 끝이다.

환경 셋팅은 이미 끝난 상황인데 대체 왜 멀쩡히 설치되어 있는 nodemon을 인식하지 못하는지 분통이 터졌지만, 세상은 넓고 구글은 신이다. 이미 같은 상황을 겪은 분들이 계셨다. 친절한 설명 감사합니다.

근데 난 저래도 안되더라. 이유가 궁금해서 처음으로 돌아가기로 했다.

node server.js

역시, 안되더라. 기존에 사용하던 포트~~임의로 56번이라 하자.~~가 안열려있대.
[ AWS EC2 / linux ] port 열기

EC2 인스턴스 위에 올라간 linux 서버에서 외부와 통신을 하려면, 다음과 같은 과정을 거쳐야 한다. 아래 과정을 하도 반복해서 정확하지 않을 수 있음 / Cent OS 7이상은 다른 문법을 사용함 주의

  1. EC2 보안그룹 Inbound 포트 확인
  2. 방화벽 열려있는지 확인 2-1. 포트 LISTEN 상태인지 확인 netstat -nlpt ps -ef 2-2. 누군가 이미 사용 중인 포트라면 PID를 확인해서 죽이기 port 번호로 PID 확인: netstat -nlpt|grep {port 번호} PID로 프로그램 죽이기: kill -9 {PID} 2-3. 아무도 사용하지 않고 LISTEN 상태가 아니라면 방화벽 열어주기 iptables -I INPUT 1 -p tcp --dport {port 번호} -j ACCEPT

나는 LISTEN 상태도, 누가 포트를 사용하고 있는 상태도 아니었는데 위의 과정을 아무리 반복해도 LISTEN 상태의 56번 포트를 만날 수 없었다. 그래서 포트를 열었다가 죽였다가 해서 미지의 선점자로부터 포트를 빼앗아왔다. 그런데 금방 다시 원상태로 돌아가는 일이 반복되었고, 결국은 다른 포트를 사용하는 것으로 해결했다.

오늘의 교훈: 왠만하면 default로 설정되어 있는 포트를 이용하자. 다들 많이 쓰니까 해결법 찾기도 쉽다.

번외: EC2 인스턴스 선택하기

삽질을 하다보니 처음 인스턴스를 만들 때 어떤 옵션을 선택해야 하나 고민했던 기억이 났다. 결론적으로 말하자면, 왠만하면 ubuntu나 cent OS 쓰세요. 당연히 프리티어를 기준으로 하는 말이지만, 사람들이 익숙한 windows를 안쓰고 linux를 선택하는데는 다 그만한 이유가 있는 법이다. 가뜩이나 공짜폰보다도 못한 최저사양인데, windows는 리소스를 너무 많이 잡아먹어요. GUI를 사용할 수 있다는 장점이 있지만, 인터넷 접속 할 것도 아닌데 어차피 cmd 쓸거면 그게 왜 필요할까요? linux 중에서는 레퍼런스 얼마 없는 Amazon linux보다는 WSL도 되는 ubuntu나 가장 범용적으로 쓰는 Cent OS가 낫다고 생각합니다.


결과적으로 다른 포트를 사용하고, nohup을 이용하지 않고 해결했다. 아마 기존에 인수인계 받지 않은 부분에 따로 백그라운드 실행 설정이 들어가 있는 모양이다. 나중에 확인해 봐야지.

내일이나 모레 중으로 확인 해보고, github hook 설정도 마무리 해야겠다.

업데이트:

댓글남기기