fly.io 서버 배포 및 API 테스트 방법
2023년 3월 15일에 작성한 글 입니다.
1. 배경
2023년 2월동안 팀 프로젝트로 스터디에 도움을 주는 웹 앱을 만들게 되었습니다. 마지막 배포를 위해 여러 플랫폼을 찾던 중 무료 플랫폼인 fly.io를 통해 배포를 하기로 하였고 성공적으로 서버 배포를 하였습니다.
첫 배포이다보니 크고 작은 시행착오들이 있었어서 시행착오들 해결을 포함한 배포 방법과 배포 이후 API 테스트까지의 내용을 정리하겠습니다.
준비물은 개발 완료된 소스코드(빌드된)만 있으면 됩니다.
2. fly.io 배포
우선, powershell 로 진행했습니다.
2-1. flyctl 다운로드
powershell 에서 아래 명령어를 입력하여 flyio ctl을 다운로드합니다.
ctl은 커맨드라인 유틸리티입니다.
iwr https://fly.io/install.ps1 -useb | iex
2-2. flyctl 로그인
flyctl 을 통해 fly.io 계정에 접근하기 위하여 아래 명령어를 입력 후 뜨는 브라우저에 로그인합니다.
flyctl auth login
2-3. 배포 대상 프로젝트 경로로 이동
배포할 프로젝트의 경로로 이동합니다.
cd 프로젝트 경로
2-4. 배포 런치
배포를 시작하기 위해 아래 명령어를 입력하여 배포 프로세스를 시작합니다.
flyctl launch
위 명령어를 입력하게되면 아래와 같은 y/N question이 나오는데 간단한 영어라 잘 읽어보시고 필요에 따라 진행하시면 됩니다. 저는 아래와 같이 진행했습니다.
Would you like to set up a Postgresql database now? => No
Would you like to set up an Upstash Redis database now? => No
Would you like to deploy now? => Yes
2-5. 배포 명령
launch 과정을 성공적으로 마무리했다면 아래 명령어를 통해 배포 명령을 하면 됩니다.
flyctl deploy
성공적으로 배포가 완료되었다면 아래와 같이 deployed successfully 명령어가 나올 것 입니다.
--> v1 deployed successfully
3. fly.io 환경 변수 설정 방법
프로젝트 내에 필요한 환경변수는 아래 명령어을 통해 설정할 수 있습니다.
fly secrets set 변수명 = 값
4. fly.io 배포 중 발생 오류
배포 후 로그 모니터링 중 아래와 같은 오류가 발생했습니다.
원인은 소스코드의 listening 포트였습니다.
소스코드에서는 로컬 환경에 맞추어 server.listen(3002);
코드를 통해 3002번 리스닝하게 해놓았으나 배포 시 http Alternate 포트인 8080 을 리스닝하게 해놓아야 합니다.
또한, 모든 ip에서의 접속을 리스닝할 수 있도록 아래와 같이 소스코드를 변경해주면 됩니다.
5. API 테스트 시 주의할 점
배포 후 정상적으로 서버가 작동하는지 확인하기 위해 postman을 통해 API 테스트를 진행했습니다.
배포한 서버를 대상으로 api 테스트를 처음해보아서 삽질을 좀 오래하였는데 해결 방법은 생각보다 간단했습니다.
배포한 서버의 api를 테스트할때는 로컬에서 진행할 때와 조금 차이가 있습니다.
첫번째, 로컬에서 http 로 시도했다면 fly.io 배포 후에는 https 로 시도해야합니다.
ex. 로컬 환경 테스트 api
ex. 배포 환경 테스트 api
두번째, 포트를 로컬에서처럼 지정할 필요가 없습니다.