AWS를 이용하게 되면 로컬에서 직접 실행하는 것이 아니라 클라우딩 컴퓨팅 서비스를 이용하여 배포할 수 있게 된다.
AWS는 계정 생성 후 1년 동안 프리티어 자격을 준다. 이것을 이용하여 지정된 한도 내에서 무료로 AWS 서비스를 이용할 수 있다.
AWS에 접속하여 회원가입을 해준다.
ec2의 사용이 불편하다는 점을 보완한 Elastic Baenstalk를 이용하는 것이다.

지역을 서울로 변경해준다.
검색창에 IAM을 검색한 뒤 역할 -> 역할 생성을 클릭한다.

권한 추가에는 아래 항목을 체크해준다.
AWSElasticBeanstalkMulticontainerDockerAWSElasticBeanstalkWebTierAWSElasticBeanstalkWorkerTier
ec2를 검색 후 키페어를 눌러 생성을 해준다.

검색 창에 Elastic Beanstalk을 검색한 뒤 애플리케이션을 눌러준다.




사용자 이름과 암호는 작성 후 다른 곳에 적어둔다.

생성이 다 끝나고 도메인에 있는 url을 클릭 시 아래와 같은 화면이 나오게 된다.

Elastic Beanstalk -> 구성 -> 네트워킹 및 데이터베이스 구성으로 들어가서 엔드포인트를 복사해준다.
모니터링에 들어가서 아래와 같이 추가 해준다.

Elastic Beanstalk는 기본적으로 포트 5000에서 애플리케이션을 실행하기 때문에 port를 바꿔준다.
이렇게 설정한 환경 속성 값은 애플리케이션 실행 시 스프링 부트의 환경 변수 즉 application.yml 역할을 한다.
server:
port: 5000
프로젝트 파일도 위와 같이 수정해준다.
AWS 검색 창에서 RDS를 검색해준다.
왼쪽 메뉴바에서 데이터베이스 클릭 -> DB 식별자 클릭 -> VPC 보안 그룹 클릭
-> 보안 그룹 ID 클릭 -> 인바운드 규칙 편집

내 IP를 추가해준다.
다른 곳에서도 사용할 경우 아래와 같이 설정해준다. 하지만 보안 위험이 있다.

이제 MySQL 설정을 추가해준다.

Intellij에서 DB 연결을 추가하면 쿼리 자동완성 기능을 사용할 수 있다.
HOST는 RDS에 구성에 있는 엔드포인트를 입력해주면 된다.
그 후 전에 작성했던 User와 Password를 작성해준다.
이제 application.yml 에서 srping 항목의 datasource 항목들을 변경해준다.
spring:
datasource:
url: jdbc:mysql://RDS 엔드포인트:3306/DB이름
username: taeheon
password: rlaxogjs5656
엔드포인트은 RDS 연결 및 보안에서 확인 가능하고
DB 이름은 구성에서 확인 가능하다.
이제 h2를 사용하지 않으니 NoSuchBeanDefinitionException (H2ConsoleProperties) 에러가 발생하지 않게 수정해준다.
// @Bean
// public WebSecurityCustomizer configure() {
// return (web) -> web.ignoring()
// .requestMatchers(PathRequest.toH2Console())
// .requestMatchers(new AntPathRequestMatcher("/static/**"));
// }
위 코드를 제거하거나 주석처리 해준다.
// MySQL
implementation 'mysql:mysql-connector-java:8.0.33'
인텔리제이를 실행해서 Gradle -> Tasks -> build -> build를 눌러 빌드를 진행한다.

빌드가 끝나게 되면 Build -> libs에 빌드 파일이 생성 된다.
jar 파일은 -<버전>으로 끝나는 것과 -<버전>-plain으로 끝나는 것 두 가지가 있는데 이중에 -<버전>을 기억하기 쉬운 위치에 저장해둔다.
버전 정보는 build.gradle에 version = '0.0.1-SNAPSHOT'으로 변경 가능하다.
이제 Elastic Beanstalk로 가서 환경 이름을 클릭하고 업로드 및 배포를 클릭해준다.

현재 배포시 자바 버전이 맞지 않아 문제가 생겨 프로젝트의 자바 버전을 21 버전으로 낮춰준다.


gradle에서도 자바 버전을 변경해준다.
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
도메인을 누르면 페이지가 정상적으로 작동하는 것을 볼 수 있다.
하지만 OAuth2로 로그인을 하게 되면 오류가 발생한다.
이 오류를 해결하기 위해 승인된 URI를 추가해준다.
구글 클라이언트 콘솔에 접속하여 Elastic Beanstalk에서 띄워준 서버의 URI를 추가해준다.
API 및 서비스 -> 사용자 인증 정보 -> OAuth2 클라이언트 ID -> 승인된 리디렉션 URI 추가
http://[ElasticBeanstalk 도메인 주소]/login/oauth2/code/google
Naver Developers에 접속하여 내 어플리케이션 -> API 설정에서 추가해준다.
http://[ElasticBeanstalk 도메인 주소]/login/oauth2/code/naver