이번에는 Spring Boot 프로젝트를 EC2 인스턴스에 배포해보겠습니다.
Node.js 기반의 Express 서버와 달리, Java 기반인 Spring Boot는 환경 설정이 조금 다르지만, 흐름은 거의 동일합니다.
❗ 리눅스 명령어나 Spring Boot 코드에 대한 설명은 생략합니다.
이 글은 EC2에 이미 완성된 Spring Boot 서버를 배포하는 실습용 가이드입니다.
✅ 1. Ubuntu에 JDK 17 설치하기
Spring Boot 3.x 버전은 최소 JDK 17 이상이 필요합니다.
먼저 EC2(Ubuntu) 인스턴스에 JDK 17을 설치해봅니다.
$ sudo apt update && /
sudo apt install openjdk-17-jdk -y
✅ 2. 설치 확인
아래 명령어로 JDK가 정상 설치됐는지 확인합니다.
$ java -version
설치가 잘 됐다면 Java 17 버전이 출력됩니다.
✅ 3. GitHub에서 프로젝트 clone하기
예제용 Spring Boot 프로젝트를 GitHub에서 가져옵니다.
$ git clone https://github.com/JSCODE-EDU/ec2-spring-boot-sample.git
$ cd ec2-spring-boot-sample
✅ 4. application.yml 직접 만들기
Spring Boot 설정 파일인 application.yml은 일반적으로 Git에 포함되지 않습니다.
그래서 EC2 인스턴스 안에서 직접 만들어주는 게 좋습니다.
server:
port: 80
80번 포트는 기본 웹 접속 포트입니다. (보안 그룹에서 반드시 포트 80을 열어둬야 접근이 가능합니다.)
✅ 5. 프로젝트 빌드 및 서버 실행
이제 프로젝트를 빌드하고 실행합니다.
$ ./gradlew clean build # 기존 빌드된 파일을 삭제하고 새롭게 JAR로 빌드
$ cd ~/ec2-spring-boot-sample/build/libs
$ sudo java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar
🔸 백그라운드 실행 (옵션)
터미널을 닫아도 서버가 꺼지지 않도록 하려면 다음과 같이 실행합니다:
$ sudo nohup java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar &
- nohup은 터미널을 닫아도 프로세스를 유지해주는 명령어입니다.
- &는 백그라운드 실행을 의미합니다.
✅ 6. 접속 확인하기
브라우저에서 EC2 인스턴스의 탄력적 IP를 입력해봅니다:
cpp
복사편집
http://<탄력적-IP>
정상적으로 배포되었다면, 아래와 같은 메시지를 볼 수 있습니다.
✅ 정리
단계내용
JDK 설치 | JDK 17 설치 (openjdk-17-jdk) |
프로젝트 clone | GitHub에서 Spring 프로젝트 복제 |
설정 파일 | application.yml 직접 생성 (port 80 설정) |
빌드 | ./gradlew clean build |
실행 | java -jar ... 또는 nohup java -jar ... & |
접속 | http://<탄력적-IP>로 접속 확인 |