EC2에서 애플리케이션을 배포하는 Shell 스크립트를 작성하려면, 다음과 같은 작업을 자동화할 수 있습니다.
✅ 스크립트 주요 기능:
- 시스템 패키지 업데이트
- Java 및 Gradle 설치 (Spring Boot 애플리케이션 배포 시)
- 애플리케이션 실행 및 로그 관리
- 방화벽 설정
📌 EC2 배포용 Shell Script (deploy.sh)
sh
복사편집
#!/bin/bash
# 1️⃣ 업데이트 및 필수 패키지 설치
echo "🚀 시스템 패키지 업데이트 중..."
sudo apt update -y && sudo apt upgrade -y
# 2️⃣ Java 및 필수 패키지 설치 (필요 시 추가)
echo "☕ Java 및 필요 패키지 설치 중..."
sudo apt install -y openjdk-17-jdk unzip curl git
# 3️⃣ Gradle 설치 (Gradle 사용 시)
echo "📦 Gradle 설치 중..."
wget <https://services.gradle.org/distributions/gradle-8.5-bin.zip> -P /tmp
sudo unzip -d /opt/gradle /tmp/gradle-8.5-bin.zip
echo "export PATH=/opt/gradle/gradle-8.5/bin:\\$PATH" >> ~/.bashrc
source ~/.bashrc
# 4️⃣ 애플리케이션 배포 디렉토리 설정
APP_DIR="/home/ubuntu/app"
JAR_NAME="myapp.jar"
echo "📁 애플리케이션 디렉토리 설정..."
mkdir -p $APP_DIR
cd $APP_DIR
# 5️⃣ 기존 실행 중인 애플리케이션 종료 (포트 8080 기준)
echo "🛑 기존 애플리케이션 종료 중..."
APP_PID=$(pgrep -f $JAR_NAME)
if [ -n "$APP_PID" ]; then
sudo kill -9 $APP_PID
fi
# 6️⃣ 새 애플리케이션 배포 (GitHub 또는 S3에서 다운로드)
echo "⬇️ 최신 애플리케이션 다운로드 중..."
sudo rm -rf $APP_DIR/*
git clone <https://github.com/username/myapp.git> $APP_DIR
cd $APP_DIR
# 7️⃣ 빌드 및 실행 (Gradle 사용 시)
echo "🏗️ 애플리케이션 빌드 중..."
./gradlew build
echo "🚀 애플리케이션 실행 중..."
nohup java -jar build/libs/$JAR_NAME > app.log 2>&1 &
# 8️⃣ 방화벽 설정 (필요 시)
echo "🔒 방화벽 규칙 추가 (포트 8080 열기)"
sudo ufw allow 8080
echo "🎉 배포 완료! 애플리케이션이 실행되었습니다."
📌 실행 방법
- EC2에 접속 후 deploy.sh 파일을 생성
- sh 복사편집 nano deploy.sh
- 위 스크립트 내용을 붙여넣고 저장
- 실행 권한 부여
- sh 복사편집 chmod +x deploy.sh
- 실행
- sh 복사편집 ./deploy.sh
📌 추가 사항
- GitHub/S3에서 JAR 파일을 직접 다운로드하는 경우 git clone 부분을 수정
- Spring Boot 외 다른 언어(Node.js, Python 등)로 개발된 경우 실행 명령 수정
- AWS CodeDeploy, Docker 등을 사용할 경우 추가 설정 필요
이 스크립트를 사용하면 EC2 서버에서 자동으로 Spring Boot 애플리케이션을 배포하고 실행할 수 있습니다. 🚀
- backend api server
if [ ! -f "$JAR_FILE" ]; then echo "JAR 파일 '$JAR_FILE'이 존재하지 않습니다. 빌드 실패." exit 1 fi # 애플리케이션 종료 stop_application # 애플리케이션 시작 start_application
- reboot.sh
- frontend
- if [ ! -d "$BUILD_DIR" ]; then echo "빌드 디렉토리 '$BUILD_DIR'이 존재하지 않습니다. 빌드 실패." exit 1 fi # 애플리케이션 종료 stop_application # 애플리케이션 시작 start_application
'개발공부 > AWS' 카테고리의 다른 글
RDS 화이트리스트 설정하기 (0) | 2025.02.13 |
---|---|
EC2 크기에 따른 비용 절감 (0) | 2025.02.13 |
RDS - 화이트리스트 추가 및 후기 (1) | 2025.02.13 |
GCP(Google Cloud Platform)란? (0) | 2025.02.13 |
AWS vs GCP 의 장단점과 차이점 (0) | 2025.02.13 |