Spring boot 프로젝트 deploy하기(feat.AWS) -1

개발자·2022년 4월 1일
0
post-thumbnail
post-custom-banner

Spring 관련 프로젝트를 수없이 해봤지만 그동안 AWS를 이용해 제대로 배포를 해본 적은 없다.

거의 반자동으로 배포를 해주는 Heroku와 같은 플랫폼을 이용한 적은 있지만, 제대로 된 배포라고 생각하지 않기 때문에...

이번엔 AWS를 이용해 배포를 하려고 시도해봤다.

먼저 이번에 진행됐던 프로젝트는 Spring Boot, Spring Security, JPA, MySQL, JSP(SPA)를 이용했다.

가장 먼저 AWS에 회원가입을 해주고, EC2 서비스에서 인스턴스를 등록해줬다.

22년 1월에 참석 했던 AWS Builders 온라인 시리즈 덕분에 1년 무료 사용권이 있었음에도 불구하고 unbuntu 프리티어를 사용했다.

헤로쿠에서는 DB연동을 제대로 해주지 않아 수없이 오류가 났었기 때문에 이번에는 확실하게 하기 위해 AWS RDS를 이용해 MySQL과 연동을 해주었다.

IntelliJ에서 .jar 파일을 만들어 주어야 하는데 이번 프로젝트는 gradle이 아니라 maven을 이용했기 때문에 compile을 하여 build 후 .jar 파일을 생성해주었다.

그리고나서 터미널에서 jar파일을 직접 빌드해줘도 되지만 FileZilla를 이용해 이전에 생성한 .jar파일을 주입해주고, 터미널에서 우분투에 접속 후 build를 해주었다.

이전에는 데이터베이스 연동 때문에 EntityManger를 찾을 수 없다는 등의 Application Error 메세지가 자주 떴었지만 이번에는 Application Started라는 반가운 메세지를 곧바로 볼 수 있었다.

설레는 마음으로 로컬이 아닌 Public IP를 입력하고 EC2를 생성하면서 설정해주었던 보안그룹의 인바운드의 8080포트로 접속을 했다.

하....?

이유가 뭘까?

수없이 생각 했다.

모든게 정상적이라고 생각했는데 어째서 반갑지 않은 저 친구가 찾아온걸까...

곧바로 에러 메세지를 확인 했다.

Error Parsing HTTP header라는 키워드로 구글링을 한 결과.

현재는 HTTP로 접속이 되고 있는데 이걸 HTTPS로 리다이렉션을 해주어야 정상적으로 페이지 출력이 된다는 말...

곧바로 해결법을 찾았다.

AWS에서 SSL을 통해 인증서를 발급 받고, 도메인도 발급 받고, HTTPS로 리다이렉션을 해주던가,

아니면 우분투에서 빌드를 하기 전에 securty properties에 있는 설정들을 그대로 입력해줘야 한다고 했다.

SSL과 도메인을 발급할 경우엔 돈이 들어가고, 자세히는 아직 시도는 안해봤지만 빌드를 다시 해주려면 머리가 터질 것 같고...

아직 해결은 못했다.

해결법은 아는데 해결을 안한거다.

머리좀 식히고 다시 해결해봅시다...!

P.S 왜 HTTP를 HTTPS로 리다이렉션을 해주어야 할까?

그건 아마도 내가 facebook, google, naver, kakao와 같은 소셜 로그인 api를 사용하기 위해 OAuth를 썼기 때문...이라고 짐작한다. security,properties에 있는 내용들도 전부 OAuth니까?

무튼 이전에 AWS 배포를 배우기 위해 간단하게 만들었던 Spring boot 프로젝트에서는 DB연결도 안해줘도 되고 인증서, 도메인발급, security 설정들도 안만져도 됐는데 프로젝트가 거대하고 무거워지다보니 앞으로 배워야할 것도 많고 신경서야 할 부분도 많아지는 것 같다.(그래도 이번에 참 많은걸 배웠다 크크)

profile
I DEVELOP THEREFORE, I AM 😄
post-custom-banner

0개의 댓글