Infra/AWS

AWS EC2 - EC2에 프로젝트 배포하기

guwon2 2024. 11. 19. 22:52

EC2에 프로젝트 배포하는 방법을 적어보려 한다.

 

지금 다루는 내용은 Docker와 CI/CD툴 없이 단순 EC2 내에서 빌드해 배포하는 내용을 다룬다.

 

배포는 보통 다음과 같은 순서로 진행된다.

1. EC2에 접속

2. JAVA 설치

3. 프로젝트 클론

4. 프로젝트 빌드

5. 실행

 

처음부터 살펴보자

 

1. EC2에 접속

 

ssh -i "프로젝트 pem key" 사용자 이름@퍼블릭 DNS

 

명령어를 통해 접속 가능하다.

 

2. JAVA 설치

 

EC2 컴퓨터에 java를 설치해준다.

 

sudo apt install openjdk-17-jdk

 

 

3. 프로젝트 클론

 

배포할 프로젝트를 클론해준다.

git clone ${remote-repository}

 

 

4. 프로젝트 빌드

 

프로젝트를 빌드한다.

./gradlew build

 

 

5. 실행

 

본인 프로젝트의 jar 파일을 실행시켜주면 배포가 완료된다.

nohup java -jar build/libs/paperplane-0.0.1-SNAPSHOT.jar &

 

 

 

배포 스크립트 작성

 

하지만 매번 코드가 변경될 때 마다 이렇게 일일히 pull 하고 빌드하고 실행하는 건 매우 귀찮은 일이다.

그래서 배포 스크립트를 작성하는 것이 좋다.

배포 스크립트를 실행하기만 하면 프로젝트를 배포할 수 있다.

 

 

배포 스크립트 예시

 

deploy.sh

#!/bin/bash

# 설정
REPO_URL= "레포 url"
APP_NAME= "app name"
APP_DIR= "app 위치"
LOG_FILE= "app.log"

# 1. 애플리케이션 디렉토리로 이동
cd "$APP_DIR" || { echo "Directory $APP_DIR not found! Exiting..."; exit 1; }

# 2. 이전 로그 삭제
echo "Removing old log files..."
rm -rf nohup.out "$LOG_FILE"

# 3. Git에서 최신 코드 가져오기
echo "Pulling latest code from Git repository..."
git pull origin main || { echo "Git pull failed! Exiting..."; exit 1; }

# 4. 빌드
echo "Building the application..."
./gradlew build -x test || { echo "Build failed! Exiting..."; exit 1; }

# 5. 실행 중인 프로그램 종료
echo "Stopping the running application..."
pkill -f "$APP_NAME"

# 6. 애플리케이션 실행
echo "Starting the application..."
nohup java -jar "build/libs/$APP_NAME" > "$LOG_FILE" 2>&1 &

echo "Deployment completed successfully!"

 

 

이렇게 작성하면 

 

./deploy.sh 를 통해 스크립트를 실행하면 배포가 된다!