목표
로컬에서 개발한 Spring Boot 프로젝트를 AWS EC2(Ubuntu) 서버에 업로드하고, MariaDB와 연동하여 무중단으로 실행한다.
사전 준비
- AWS EC2 인스턴스 생성 완료 (OS: Ubuntu 22.04 LTS 권장)
- 보안 그룹(Security Group) 설정:
22(SSH),8080(Spring Boot) 포트 개방 - SSH 키 파일(.pem) 보유
1. EC2 접속 및 환경 설정
Git Bash 등의 터미널로 EC2에 접속해 필요한 파일을 설치한다.
1-1. SSH 접속
ssh -i "키파일.pem" ubuntu@<EC2-퍼블릭-IP>
1-2. 기본 패키지 업데이트 및 설치
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
# (openjdk version "17.0.x" ... 출력을 확인)
sudo apt install mariadb-server -y
sudo systemctl start mariadb
sudo systemctl enable mariadb
2. 데이터베이스(MariaDB) 설정
application.properties에 설정된 DB명과 계정 정보를 생성한다.
2-1. DB 접속
sudo mariadb
2-2. Database 및 User 생성 쿼리
SQL 프롬프트(MariaDB [(none)]>)에 아래 내용을 한 줄씩 입력한다.
CREATE DATABASE 데이터베이스;
CREATE USER '아이디'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON 데이터베이스.* TO '아이디'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3. 프로젝트 빌드 및 업로드
3-1. 프로젝트 빌드
프로젝트 루트 폴더에서 터미널을 열어 빌드 파일을 생성한다.
./gradlew build -x test
- 빌드에 성공한 경우
build/libs/프로젝트명-버전-SNAPSHOT.jar파일이 생성된다. - 필자의 경우 자바 버전 오류 때문에 빌드에 실패했었는데, 여기서 Amazon Corretto 17을 다운받아 설치해서 빌드에 성공했다.
Downloads for Amazon Corretto 17 - Amazon Corretto 17
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com
3-2. EC2 업로드
FileZilla 등을 사용해서 루트 폴더에 jar 파일과 env 파일을 업로드한다.
4. 서버 실행 및 배포
4-1. 백그라운드 실행
터미널을 종료해도 서버가 계속 돌아가도록 nohup을 사용한다.
nohup java -jar shopping-mall-0.0.1-SNAPSHOT.jar &
4-2. 로그 보기
서버가 성공적으로 실행되었는지 확인하려면 nohup.out 파일을 확인해야 한다.
tail -f nohup.out
4-3. 서버 종료
프리티어라도 잘못하면 요금 폭탄을 맞을 수 있기 때문에 사용하지 않는다면 서버를 종료하자.
pkill -f java