클라우드 서비스인 AWS 스프링 부트로 코딩된 게시판을 배포해볼 것이다. DB는 H2 DB를 사용하였다.

AWS 프리티어로 사용할 계정은 이미 존재한다고 가정한다.

스프링 부트 : 3.3.4 version

DB : H2

VM : AWS EC2

OS : Ubuntu 22.04

AWS EC2 인스턴스 생성

AWS의 EC2 가상머신 인스턴스를 생성해주자.

EC2는 프리티어에서 사용할 수 있는 OS버전과 가상머신 사양으로 진행할 것이다.

EC2 인스턴스 시작을 눌러준다.

OS는 Ubuntu 22.04 LTS로 설정한다.

인스턴스 유형을 프리티어에서 사용 가능한 t2.micro로 설정한다.

키페어를 생성한다. 필자는 putty로 EC2에 접속할 생각이기 때문에 .ppk로 생성한다.

기본 VPC에 서브넷을 선택하고 새로운 보안그룹을 생성해준다.

보안 그룹 규칙에서 일단 현재 IP로부터 SSH 22번 포트로의 인바운드 트래픽을 허용하고

나머지 값들은 기본값으로 두고 우측 하단의 [인스턴스 시작]을 클릭한다.

보안 그룹 규칙을 편집한다.

AWS 보안 그룹의 인바운드 규칙을 설정한다.

SSH는 EC2 생성할때 규칙을 만들었으니 그대로 둔다. HTTPS와 HTTPS, 8080포트는 웹 접속을 테스트 해야하니 어드 IP에서든 허용한다.

SSH : 필요한 IP 오픈

HTTP / HTTPS : 애니 오픈

8080 포트: 애니 오픈

규칙을 지정했으면 우측 하단에 [규칙 저장]을 클릭한다.

탄력적 IP 할당으로 IP 고정

EC2를 생성하고 퍼블릭 IP가 있으면 AWS의 EC2에 접속하고 서비스 또한 사용할 수 있다. 그러나, 부득이 하게 EC2를 중지하거나 재시작 해야할 때, 그럴 때마다 기존에 사용하던 IP가 폐기되고 새로운 IP가 할당되는 문제가 생긴다.

이렇게 되면 EC2를 재시작 할 때마다 다시 IP를 바꿔서 접속해야하는 문제가 생긴다. 이를 해결하기 위해 [탄력적 IP]주소를 할당 받아 EC2에 할당해주면 EC2를 리스타트하더라도 계속 같은 IP를 사용할 수 있다.

생성한 EC2 인스턴스에 연결해준다. 이제 EC2를 다시 시작하더라도 IP를 그대로 사용할 수 있다.

EC2에 원격 접속

Putty로 EC2에 원격으로 접속한다.

사용자 home 디렉토리 밑에 sbb라는 디렉토리를 생성했다.

sudo mkdir sbb

.jar 파일 생성해서 EC2 인스턴스에 SFTP로 전송하기

.jar파일을 생성해서 FileZilla를 통해 SFTP로 EC2 인스턴스에 .jar 파일을 전송한다.

필자는 SpringToolSuite4라는 IDE를 사용했다.

Run -> Run Configurations -> Gradle Task/sbb -> 우측하단 Run클릭

코드의 수정이 몇 번 있었던 관계로 sbb-0.0.3.jar 이름의 파일로 생성했다.

파일질라로 전송한다.

.jar 파일을 EC2에 전송했다.

~/sbb 디렉토리에서 파일들의 목록을 보자

ubuntu@TZif2:~/sbb$ ls -lrt
total 194636
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 5 09:31 logs
-rw-rw-r-- 1 ubuntu ubuntu 66427056 Nov 5 11:53 sbb-0.0.3.jar

start.sh, stop.sh 파일을 만들어 .jar 파일을 실행/정지할 스크립트를 작성한다.

sudo vi start.sh
#!/bin/bash

JAR=sbb-0.0.3.jar
LOG=/dev/null
export spring_profiles_active=prod

nohup java -Dspring.profiles.active=prod -jar $JAR > $LOG 2>&1 &
sudo vi stop.sh
!/bin/bash

SBB_PID=$(ps -ef | grep java | grep sbb | awk '{print $2}')
if [ -z "$SBB_PID" ];
then
echo "SBB is not running"
else
kill -9 $SBB_PID
echo "SBB stopped"
fi

.jar 파일을 실행해주자.

./start.sh

AWS에서 8080로 게시판 배포 성공

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다