AWS EC2에 Spring boot+React 프로젝트 배포하기

2025. 9. 16. 14:11·서버&인프라/Cloud

 

 

배포 방식

  • .jar 를 AWS EC2에 배포
  •  java -jar app.jar → 바로 실행 가능 (EC2에서 아주 간단)

 

 


 

EC2 생성

  • AWS 가입 및 로그인
  • EC2 선택 후 인스턴스 시작

 

 

 

인스턴스 기본 정보 입력

  • 인스턴스 이름 입력
  • OS : Amazon Linux

 

 

 

보안 그룹 설정

  • SSH와 HTTP 체크
유형 프로토콜 포트 소스 설명
SSH TCP 22 내 IP(권장) 또는 0.0.0.0/0 EC2 접속용 (관리용)
HTTP TCP 80 0.0.0.0/0 React 프론트 접속용
(선택) HTTPS TCP 443 0.0.0.0/0 나중에 SSL 사용 시
Custom TCP 8080 0.0.0.0/0 Spring Boot 직접 확인용

 

 

 

 

키 페어 생성

  • Mac이나 리눅스 사용자는 .pem 선택
  •  윈도우 사용자는 .ppk 선택 (최신 윈도우에서는 .pem이 가능하나, 일반적으로 PuTTY + .ppk 권장)
  • 생성 시 파일이 자동으로 다운로드되고, 인스턴스 생성 시 키페어를 선택할 수 있다. (파일은 잃어버리지 않게 잘 보관해야 한다.)

 

 


 

 

EC2 초기 설정

 

PuTTY 접속

  • IP : ec2-user@<EC2_PUBLIC_IP>
  • Port : 22
  • Connection Type : SSH

 

참고로 EC2_PUBLIC_IP는 아래 사진 위치에 있다.

EC2_PUBLIC_IP 위치

 

 

 

 

PuTTY 연결

  • 왼쪽 메뉴 → Connection → SSH → Auth
  • Private key file for authentication →  key.ppk  선택

 

 

 

정상 연결 확인

  • open 클릭 시 나타나는 화면

 

 

 

 


 

 

DB 연결

 

 

MySQL DB 덤프 추출

  • 로컬 cmd에서 실행
  • 현재 경로에서 .sql 파일이 생성된다.
mysqldump -u root -p <DB명> > dump.sql
# mysqldump -u root -p reactboard > reactboard_dump.sql

 

 

 

.ppk → .pem 전환

  • PuTTYgen 실행
  •  Load  →  key.ppk  선택
  • 상단 메뉴 Conversions → Export OpenSSH key →  key.pem  저장
    • (git bash에서는 .pem만 가능하기 때문에 변환)

 

 

덤프파일을 EC2로 전송

  • 전송하려면 ssh에 EC2가 연결되어 있는 상태여야 한다.
  • git bash에서 실행
scp -i /path/to/key.pem dump.sql ec2-user@<EC2-PUBLIC-IP>:/home/ec2-user/

 

 

 

AWS RDS 생성

  • Aurora and RDS → 데이터베이스 생성 → MySQL 선택
  • 이름, 암호 설정
  • 초기 DB 이름 입력 (reactboard)
  • 데이터베이스 생성 클릭 → 약 5~10분 정도 소요

 

 

EC2 보안 그룹 설정

  • EC2 콘솔 → 해당 인스턴스 선택 → 보안 그룹
  • 인바운드 규칙 편집:
    • 유형 : MySQL/Aurora
    • 포트 3306
    • 소스: 내 IP (또는 테스트용 0.0.0.0/0, 단 외부 공개 시 위험)

 

RDS 보안 그룹 설정

  • RDS 콘솔 → 해당 인스턴스 선택 → 보안 그룹
  • 인바운드 규칙 편집:
    • 유형 : MySQL/Aurora
    • 포트 3306
    • 소스: EC2 인스턴스가 속한 보안 그룹 선택

 

PuTTY에서 EC2로 RDS 접속

mysql -h <RDS-ENDPOINT> -u <DB_USER> -p
  •  <RDS-ENDPOINT>  : RDS 콘솔 → 데이터베이스 → 엔드포인트 복사
  •  <DB_USER>  : RDS 생성 시 설정한 마스터 사용자

 

 

덤프 씌우기

mysql -h <RDS-ENDPOINT> -u <DB_USER> -p <DB_NAME> < exam_dump.sql

 

  • 확인 결과 정상 이관됨을 볼 수 있다.

 

 

MySQL Workbench 연결

  • Hostname : RDS 엔드포인트
  • Username : root, admin 등의 마스터 사용자
  • Password : Store in Vault 클릭하여 입력
  • 만약, PuTTY에서는 DB 접속 되지만 workbench 등 DB 툴에서 접속 안 된다면 보안그룹이나, 라우팅이 잘못된 것

라우팅 세팅은 아래 글 참고

 

AWS RDS가 PuTTY에선 연결되지만 workbench 연결 안 되는 오류

AWS RDS DB로 MySQL을 생성한 뒤PuTTY에선 접속되지만 클라우드 콘솔이나 MySQL Workbench에서 접속되지 않는 오류 오류 원인DB RDS의 보안 그룹 설정은 됐으나, 서브넷 연결 오류VPC > 라우팅 테이블 > RDS에

oeuni.tistory.com

 

 

 

Spring Boot [application.properties] 수정

  • url 부분 :  localhost:3306  →  <RDS-ENDPOINT>:3306 
  • username, password 수정

 

 


 

 

 

배포

 

 

리액트쪽 요청 url 수정

 

기존 url

const res = await axios.post("http://localhost:8080/join", {

 

 

수정 후 url

const res = await axios.post("http://<EC2_PUBLIC_IP>:8080/join", {

 

 

 

로컬에서 빌드하여 .jar 생성

# 그래들 빌드
PS C:\ReactProject\exam> .\gradlew build

# jar가 있는 폴더로 이동
PS C:\ReactProject\exam> cd .\build\libs 

# jar 확인
PS C:\ReactProject\exam\build\libs> ls

 

 

 

서버 업데이트 & Git/Docker 설치

  • 이후 PuTTY에 아래 명령어 입력하여 설치
# 서버 업데이트
sudo dnf update -y

# Docker, Git 설치(선택사항)
sudo dnf install -y docker git

 

 

 

 

.jar를 EC2로 전송

  • git bash에서 명령어 실행
# 워크스페이스로 이동
cd /c/ReactProject

# .jar를 EC2로 전송
scp -i /c/key.pem <.jar Path> ec2-user@<EC2_PUBLIC_IP>:/home/ec2-user/

 

 

 

.jar 실행

  • PuTTY에서 명령어 실행
# java 설치
sudo yum install java-17-amazon-corretto -y

cd /home/ec2-user/

# .jar 실행
java -jar exam-0.0.1-SNAPSHOT.jar

 

  • 또는 백그라운드 실행(서버 종료 시에도 지속)
nohup java -jar exam-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &

 

 

 

 

브라우저 접속 확인

http://<EC2_PUBLIC_IP>:8080

 

정상 배포됨을 확인!

 

 

 

'서버&인프라 > Cloud' 카테고리의 다른 글

CI/CD 파이프라인 구축으로 배포 자동화하기 - EC2와 Github Actions 연동  (0) 2025.09.19
AWS RDS가 PuTTY에선 연결되지만 workbench 연결 안 되는 오류  (0) 2025.09.16
Google Cloud Run으로 배포한 서비스를 가비아 도메인과 연결하기  (0) 2025.01.10
docker 이미지를 Google Cloud Run에 배포하기  (0) 2025.01.09
Docker war 파일 못찾음 not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type 에러 해결 방법  (0) 2025.01.07
'서버&인프라/Cloud' 카테고리의 다른 글
  • CI/CD 파이프라인 구축으로 배포 자동화하기 - EC2와 Github Actions 연동
  • AWS RDS가 PuTTY에선 연결되지만 workbench 연결 안 되는 오류
  • Google Cloud Run으로 배포한 서비스를 가비아 도메인과 연결하기
  • docker 이미지를 Google Cloud Run에 배포하기
오은이
오은이
  • 오은이
    오은이 하우스
    오은이
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • 일기 (2)
      • Python (1)
      • Java (4)
      • CS (2)
      • 코딩테스트 (26)
        • 백준 (25)
        • 프로그래머스 (1)
      • 웹 개발 (17)
        • Spring (6)
        • JavaScript (3)
        • WebSquare (5)
        • React (3)
      • DB (5)
        • MySQL (4)
        • Oracle (1)
      • 서버&인프라 (18)
        • Server (5)
        • Cloud (12)
        • Linux (1)
      • 자격증 (4)
        • 정보처리기사 (1)
        • AICE (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    dockerspring
    websquare
    AICE Associate
    자바
    리액트
    tomcat
    google cloud run
    docker
    db
    AICE
    EC2
    톰캣
    티스토리챌린지
    AI
    머신러닝
    cloud DB
    백준
    Apache
    오블완
    백준자바
    Spring
    Java
    SpringBoot
    클라우드
    클라우드 배포
    docker배포
    MySQL
    react
    웹스퀘어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
오은이
AWS EC2에 Spring boot+React 프로젝트 배포하기
상단으로

티스토리툴바