1탄에서 이어지는 내용입니다.
(4) pm2 설정하기
- pm2는 Node.js 프로세스 관리자이다.
- BackEnd 서버를 무중단 배포하기 위해 이 pm2 모듈을 사용할 것이다.
- 먼저 pm2를 Global로 설치한다.
- pm2를 사용하기 전에 npm start 를 통해 문제없이 서버가 시작되는지 확인한다.
- 나는 또 여기서 자꾸 아래와 같은 오류가 떴는데 nodejs의 버전 문제였다. (참고)
- 그래서 다음과 같이 버전을 업그레이드 해줬다.
nodejs -v / node -v
- 현재 버전 확인
sudo npm cache clean --force
sudo npm install -g n
sudo n stable
- n 플러그인을 이용해 버전 업그레이드
nodejs -v / node -v
- 업그레이드 된 버전 확인 - 버전 업그레이드 후에는 정상적으로 서버가 시작되는 걸 확인했다.
- 나는 또 여기서 자꾸 아래와 같은 오류가 떴는데 nodejs의 버전 문제였다. (참고)
- 문제없이 작동하는 걸 확인하면 백엔드 코드가 있는 폴더로 들어가서 pm2에 프로세스를 등록해준다.
pm2 --name back-server start npm -- start
- 여기까지 하면 이제 백엔드쪽 배포도 끝이 났다.
[04 도메인 연결 ]
- 이 부분은 지금 해도 되고 VM 세팅 전 인스턴스 생성 직후에 해도 된다.
- 나는 무료 도메인 이용 사이트 중 Freenom과 내도메인.한국을 고민하다가 내도메인.한국이 최상위 도메인(kro.kr)이 더 깔끔해서 여길 이용했다.
- 대부분 설정 환경은 비슷할텐데 도메인 관리 탭에 들어가서 IP연결(A)에 Public IP를 연결해주면 된다.
- IP연결(AAAA)는 IPv6를 위한 것이라고 한다.
- 나는 AWS 인스턴스 상세에 퍼블릭 IPv4 주소 라고 되어 있길래 IP연결(A)를 이용했다.
- 나머지 연결 방식 개념은 여기를 참고하자.
[05 방화벽 정책 추가 ]
(1) 도메인 접속
- 도메인 연결까지 하고 해당 도메인으로 접속하자 익숙한 우리 프로젝트의 메인 페이지가 떴다!
- 그런데 여기서 문제, 백엔드와 통신이 전혀 되지 않았다. 모든 요청에 위와 같이 ERR_CONNECTION_TIMED_OUT 에러가 났다. CONNECTION_REFUSED가 아닌 TIMED_OUT이길래 또 프리티어 사양이 너무 구린탓인가 했는데 그게 아니었다.
(2) AWS 방화벽 설정
- 위 에러에 대해서 또 열심히 구글링을 해보니 방화벽 문제일 수 있다는 의견이 많았다.
- 그래서 "방화벽? 무슨 방화벽 나 방화벽 설정은 하지도 않아서 다 열려있을텐데..." 하다가 "아! AWS 자체 방화벽 정책에서 막혀있나 보구나" 거의 뭐 유레카였다.
- 바로 AWS 인스턴스 설정을 찾아갔다. 보안 탭에서 아래로 내리면 인바운드, 아웃바운드 방화벽 정책을 확인할 수 있는데 VM으로 요청이 들어오는 게 문제니까 인바운드 정책을 추가하면 된다. 보안 그룹을 클릭해서 정책 설정 화면으로 넘어가자.
- 기존에는 SSH(22), HTTP(80), HTTPS(443)번 포트만 열려있었는데 거기에 백엔드 통신시 사용하는 5001번 포트를 추가해줬다.
[06 배포 완료 ]
- 이렇게 방화벽 설정을 마쳐주었더니 바로 응답을 잘 받아오는 것 확인!!!!!! 이거지 이거지~😆
[07 느낀점]
- 1, 2차 프로젝트 모두 내가 배포를 진행해서 AWS로 옮기는 작업도 해보고 싶었는데, 사실 프로젝트가 끝나고 코딩 테스트 스터디에 집중하느라 좀 미루다가 3차 프로젝트 직전에 배포를 끝마쳤다.
- 다행히 이제는 구글에 정보가 너무 많아서 약 6시간 만에 (내 기준 빠르게) 배포를 성공할 수 있었다.
- 하지만 여전히 HTTP로 동작하기 때문에 카카오맵에서 내 위치 사용은 되지 않을 것이다. 다음번에(이제 프로젝트 시작하면 언제가 될까😅) SSL을 적용하여 자물쇠 채우는 과정을 수행하고 포스팅해야지..!
'엘리스 AI트랙 4기 > 프로젝트' 카테고리의 다른 글
KakaoMap API로 "현위치 주변" 장소 검색 목록 보여주기_2탄 (0) | 2022.06.01 |
---|---|
KakaoMap API로 "현위치 주변" 장소 검색 목록 보여주기_1탄 (0) | 2022.06.01 |
AWS EC2에 프로젝트 배포하기_1탄 (0) | 2022.05.30 |
Youtube search API 사용해서 검색 목록 이용하기 (0) | 2022.05.16 |
express 웹서비스 프로젝트에 뉴스 크롤링 추가하기_2탄 (0) | 2022.05.12 |