Skip to main content

2024-07-03

백엔드 연결 셋업.

오늘은 죽어있는 서버를 살리는 작업을 했다. 한때 cloudtype 으로 넘어가겠다고 거기서 설쳤던 적이 있는데, 잘 알아보니 free tier는 하루에 한번 instance를 닫는다 그래서 다시 GCP 로 돌아왔다.

오늘의 중점

  1. nginx를 express 에 붙이는 것.

저번에 express 단독으로 열려고 하니깐 SSL 붙이는 것에 애를 많이 먹었었다. 그래서 이번에 nginx를 같이 도입하기로 했다. nginx에 HTTPS 붙이는 소개글이 많았기 때문이다. nginx가 또 중간 서버로서 cache기능도 해준다고 하니 배워보기로 했다.

  1. express 서버를 백그라운드 실행하는 방법을 찾는 것.

express 서버를 GCP VM에서 실행하려면 내가 아는 방법으로는 하나의 터미널 세션이 서버를 위해 열려있어야 했다. 터미널이 꺼져도 백그라운드에서 계속 돌고 있게 하고 싶은데.. 가 오늘의 가장 큰 고민이었다. 그래서 pm2를 도입하기로 했다.

  1. mongoDB의 데이터 불러오기를 성공하는것.

  2. local에서 API를 CORS 문제 없이 잘 읽어올 수 있는지.

끝나지 않는 버그잡이 정리

  1. dotenv 는 같은 디렉토리의 .env 파일만 인식해온다.

그래서 .env 파일을 같은 폴더 내로 옮겨주었다.

  1. GCP ubuntu 22.04 VM 위에서 춤추는 nodejs v20

GCP Cloud에서 튜토리얼 따라서 하려 했더니 VM에서 하지 않고 App Engine 이란걸 쓰라고 설쳐서 버렸다. 애초에 App Engine이 공짜가 아니기도 하고.

node 자꾸 GLIBC_2.28 not found 에러를 내서 찾아보니 apt-get으로 설치한 ubuntu 18.XX 버전 위에 nodejs v20 버전에서 패치가 안된 에러였다. 버전 낮춰 깔아보았다. 어차피 나중가서 다 지워버렸지만..

아무래도 GCP VM disk가 ubuntu 18.04 인 것이 패치 관련해 여러모로 귀찮게 해서, 디스크를 떨구고 22.04 짜리로 다시 붙여서 완전히 새로 깔았다. 완전히 강통 OS image로 시작해서 homebrew,curl,wget,node.. 이것저것 다 깔아보면서 삽질했다.

nginx로 포트 80을 열어두고, 이 포트로 오고가는 모든 통신을 내부 3000 포트로 포워딩해줬다.

  1. MongoDB 는 whitelist IP 에서만 DB 커넥션을 시도할 수 있다.

MongoDB 를 오래 안사용해서 셧다운 되어 있었다. 올리고 적당한 더미데이터를 넣어놓아 보았다.

내 로컬에선 DB가 잘 연결되는데 GCP VM 위에선 DB 커넥션 자체를 못만들길래 보았더니, MongoDB 에서도 whitelist IP 가 있어서 특정 IP에서만 연결을 시도할 수 있는 것이었다. GCP VM 외부 고정 IP 를 추가해주었다.

  1. 모듈 없는데 어케 찾아요

node 가 자꾸 express 를 import 못해오길래 CommonJS로 다운그레이드 어케하나 걱정했지만, 그냥 진짜로 npm install express를 안한것이었다..

  1. pm2 는 신이야