Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

김쥬르에 개발일지

Spring Boot AWS 배포 본문

Spring boot

Spring Boot AWS 배포

김쥬르 2024. 1. 11. 14:00

지금까지 만든 웹 서비스를 AWS Elastic Beanstalk를 이용하여 배포해보도록하겠습니다.

 

Elastic Beanstalk?

서버 구축 및 배포에 필요한 EC2 RDS를 한 번에 설정하는 AWS 서비스입니다.

서버 업로드용 코드 작성만으로 서버를 쉽게 올릴 수 있고, 그외의 기능들

로드 밸런싱, 오토 스케일링, 모니터링, 배포 등을 일래스틱 빈스토크 메뉴 안에 직접 구성하거나

설정 파일로 자동 처리할 수 있습니다. 일래스틱 빈스토크는 추가 비용 없이 애플리케이션을 저장 및 실행하는데 필요한 AWS 리소스에 대해서만 요금을 지불하게됩니다.

 

(AWS 계정 생성 과정은 생략합니다)

 

https://ap-northeast-2.console.aws.amazon.com/elasticbeanstalk/home?region=ap-northeast-2#/welcome

 

애플리케이션 생성 버튼을 클릭해줍니다.

 

자유롭게 애플리케이션 이름을 설정해줍니다.

 

저희는 JAVA를 사용하니 플랫폼을 JAVA로 설정해주고 나머지는 JAVA로 설정하였을때 디폴트값으로 둡니다.

 

외에 사항들은 전부 디폴트 값으로 두고 다음 버튼을 눌러줍니다.

 

새 서비스 역할 생성 및 사용을 눌러주고

EC2 인스턴스 프로파일에 권한 세부정보 보기를 눌러줍니다.

 

위와 같은 화면이 나오면 IAM 콘솔을 눌러

IAM 대시보드 화면으로 이동합니다.

\

 

저는 이미 만들어둔 역할이 있어 9로 나오고 AWS 사용여부에 따라 숫자는 달라집니다.

역할에 숫자를 눌러줍니다.

 

 

역할 생성을 눌러줍니다.

 

사용 사례에 "서비스 또는 사용 사례" 를 EC2로 선택해주고 다음을 눌러줍니다.

 

AWSElasticBeanstalk 를 검색해준후

AWSElasticBeanstalkWebTier

AWSElasticBeanstalkWorkerTier

AWSElasticBeanstalkMulticontainerDocker

3개를 찾아 선택해주고 다음 버튼을 눌러줍니다.

 

 

역할 이름에 aws-elasticbeanstalk-ec2-role 를 적어주고

나머지는 디폴트 값으로 둔 후 스크롤을 내려 역할 생성을 눌러줍니다.

 

화면이 전환되면 설정하던 ElaticBeanstalk 화면으로 이동해서

EC2 인스턴스 프로파일 오른쪽에 새로고침 버튼을 눌러줍니다.

 

 

IAM에서 생성 해준 역할 이름으로 설정해준뒤 검토 단계로 건너뛰기를 눌러준 후

다음 화면이 나오면 스크롤을 내려서 제출 버튼을 누릅니다.

 

 

제출이 완료되면 이러한 화면이 나오며 서버를 자동으로 세팅하는 중이니

작업이 완료될 때 까지 기다려줍니다.

 

 

상단에 환경이 성공적으로 시작되었습니다. 또는 상태에 OK표시가 되면

도메인에 링크를 눌러 접속이 잘 되는지 확인해줍시다.

 

이제 데이터베이스를 생성해줍니다.

처음 화면으로 돌아와 왼쪽 카테고리에 구성을 눌러줍니다.

 

 

네트워킹 및 데이터베이스 에 편집 버튼을 눌러줍니다.

 

 

스크롤을 내려 데이터베이스 부분에 데이터베이스 활성화 버튼을 눌러주고

사용자 이름과 암호를 자유롭게 기입합니다.

나머지 설정은 디폴트로 둔후 적용 버튼을 눌러줍니다.

 

해당 작업도 어느정도에 소요시간이 있으므로 기다려준 후

다시 카테고리에 구성을 누르고 다시 데이터베이스 편집에 들어갑니다.

스크롤을 내려보면 데이터베이스 엔드포인트 라는것이 생겼을겁니다.

엔드포인트 주소를 복사해줍니다.

구성 화면으로 돌아와 이번에는

업데이트 , 모니터링 및 로깅에 편집을 눌러줍니다.

 

 

스크롤을 쭉 내려 환경 속성에 해당 내용을 입력 후 적용 버튼을 눌러줍니다.

 

RDS_HOSTNAME : 복사해두었던 엔드포인트 숫자4개와 : 을 지우고 입력해줍니다.

RDS_PORT : 지웠던 엔드포인트 맨 뒤에 숫자 4개 (3306)

RDS_DB_NAME : ebdb 고정입니다.

RDS_USERNAME : DB 설정할 때 적은 ID

RDS PASSWORD : DB 설정할 때 적은 PW

 

이제 RDS 로 이동하여 DB 인스턴스를 눌러줍니다.

 

 방금 생성된 DB 식별자를 눌러줍니다.

 

VPC 보안 그룹에 링크를 눌러줍니다.

Security group ID 에 링크를 클릭합니다.

 

인바운드 규칙 편집을 눌러줍니다.

 

규칙 추가 버튼을 누른후 유형은 MYSQL/Aurora로 선택해주고

소스는 Anywhere-IPv4로 해준 뒤에 저장해주고 먼저 있던 TCP 유형의 인바운드 규칙은 삭제해주고 규칙 저장을 눌러줍니다.

 

 

이제 인텔리제이를 열어 DB를 연결해주겠습니다.

먼저 application.properties 파일을 연뒤 해당 내용을 지워줍니다.

ctrl + shift + A 를 누른후 Plugins 를 검색후 Database Navigator를

다운받고 다시 시작해줍니다.

 

왼쪽 DB Brower를 누른 후 플러스 버튼을 누르고 MySQL을 선택해줍니다.

 

 

내용을 적어준 후 TEST CONNECTION를 눌러 위와 같이 나오면 성공입니다.

적용된 스프링 부트 DB에서 sql 콘솔 창을 추가해준 후 SQL 문을 작성하고

순서대로 실행시켜줍니다.

create database blog;

use blog;

create table article (
    id bigint not null AUTO_INCREMENT,
    author varchar(255) not null,
    content varchar(255) not null,
    title varchar(255) not null,
    created_at timestamp,
    updated_at timestamp,
    primary key (id)
);

create table refresh_token (
    id bigint not null AUTO_INCREMENT,
    refresh_token varchar(255) not null,
    updated_at timestamp,
    primary key (id)
);

create table users (
    id bigint not null AUTO_INCREMENT,
    email varchar(255) not null,
    nickname varchar(255),
    password varchar(255),
    updated_at timestamp,
    primary key (id)
);

 

 

이제 오른쪽에 Gradle 탭에서 Tasks -> build -> build를 더블클릭해줍니다.

이렇게 나오면 성공입니다.

 

 

프로젝트 구성에서 build -> libs -> SNAPSHOT.jar -> open in -> explorer

를 눌러 파일에 위치를 기억해주고 다시 Elastic Beanstalk로 돌아가

업로드 및 배포를 누르고 파일선택을 눌러 파일을 업로드합니다.

 

 

배포가 완료되었다면 다시 구성에

업데이트 , 모니터링 및 로깅 편집에 들어가

내용을 추가해줍니다.

SERVER.PORT : 5000

JWT_SECRET_KEY : study-springboot

SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_ CLIENT_ID

<구글 OAuth2에서 발급받은 클라이언트 아이디>

SPRING_SECURITY_0AUTH2_CLIENT_REGISTRATI0N_G00GLE_ CLIENT_SECRET

SPRING_SECURITY_0AUTH2_CLIENT_REGISTRATI0N_G00GLE_ SCOPE : email,profile

여기서 설정한 값은 배포 파일에 비밀키를 보호해줍니다.

이제 구글 클라우드 콘솔로 이동하여 

 

 

 

 

elastic beanstalk 주소 + /login/oauth2/code/google  을 승인된 리디렉션 ID로 추가해줍니다

이제 본인 서버에 도메인 주소로 접속해보면

로컬 환경에서 와 같은 화면이 나오는걸 볼수 있고

구글 로그인을 통해 홈페이지 접속도 문제없이 되는걸 확인할수 있습니다.

위는 EC2 서버로 접속한 화면이며 다른 PC에서도 접속이 잘되는걸 확인할수 있습니다.

다음 포스팅은 CI/CD에 대해서 포스팅해보도록 하겠습니다.

 

 

 

 

 

'Spring boot' 카테고리의 다른 글

Spring Boot OAuth2  (0) 2024.01.08
Spring Boot JWT TestCode  (1) 2024.01.06
Spring Boot JWT  (1) 2024.01.05
Spring Boot 스프링 시큐리티  (0) 2024.01.01
Spring Boot 각종 뷰  (1) 2023.12.31