TYM - fly.io로 Node.js + Express 배포 완료

히진로그·2023년 6월 8일
0

스포티파이 api를 사용해서 만든 Track Your Music 백엔드를 드디어 배포했다!

처음엔 헤로쿠로 배포하려고 했는데, 무료 플랜이 끝났다는 걸 알고 뭐가 좋을 지 알아보다 fly.io가 간편하다는 블로그를 보고, fly.io로 Node.js + Express 배포에 관해 참고할만할 글이 많아서 fly.io로 배포를 시도하게 되었다.

처음 배포를 했을 때는 에러가 나서 무슨 에러인지도 모르겠고 공식문서를 뒤져도, 다른 사람의 배포 후기글을 봐도 모르겠어서 AWS ec2배포로 옮겼다. 근데 프론트를 vercel로 배포하고 https에서 ec2로 배포된 http로 api요청이 돼서 request가 block되어 서비스가 동작하지 않았다.

그 후로 배포를 다음 약속으로 미루고 있다가, 다시 fly.io 배포를 시도하게 되었다.

다시 fly.io로 배포한 블로그 글과 공식문서를 읽어보니, 그때 내가 놓친 점을 발견했다.

첫 번째는 scripts 명령어 문제.

나는 백엔드 서버를 npm run dev 명령어로 돌리고 있었는데, fly.io에서는 npm run start를 기본으로 하고 있다고 한다.(참고 블로그)

"scripts": {
    "dev": "nodemon server.js",
    "start": "node server.js", // start를 추가해줬다.
    "test": "echo \"Error: no test specified\" && exit 1"
  },

진짜 황당한(...) 실수이니, 꼭 scripts 명령어를 확인해보길 바란다.

두 번째는, port 설정.

프론트를 vite로 만들어서, 백엔드 포트를 5174번으로 설정해두고 돌리고 있었는데, port 번호 문제는 아니었고 port번호를 가져다 쓰는 방식이 문제였다.

fly.io에서는 배포 시 기본 포트를 8080으로 쓰는데, 개인이 쓰고 싶은 포트 번호를 설정 파일에 잘 적어주기만 하면 된다.
fly launch 명령어를 치면 생성되는 fly.toml 파일에서

[env]
  PORT = "5174" // 원래 8080으로 되어있음.
  
[http_service]
  internal_port = 5174 // 원래 8080으로 되어있음.

그리고 백엔드 코드를 적은 파일에서 다음 형식으로 port를 설정해주면 된다.
fly launch 명령어를 입력하면 저렇게 쓰라고 터미널에도 나온다.

const port = process.env.PORT || "8080" // 포트 번호는 원하는대로 변경 가능

이렇게 두 가지 놓친 점을 다시 수정해서 Node.js + Express로 만든 백엔드를 배포하니 거짓말처럼 배포가 되었다. (안돼서 실망하고 삽질하고 놓아버렸던 내 지난 시간은 뭘까...)

백엔드 배포 주소를 프론트에서 바꾸고, 로컬에서 시도했을 때는 200코드가 떠서 아주 잘되었는데

vercel로 배포한 프론트에서 백엔드 배포 주소를 연결하고 api 요청을 보내니 400에러가 뜬다. 이제 이걸 고치러 가볼 차례... ^^

0개의 댓글