본문 바로가기

DevOps/AWS

EC2서버에 프로젝트 배포 - properties, shell 파일 정리

스프링부트 프로젝트를 EC2에 배포하는 과정에서 설정 파일들을 정리해보려고 한다.

 

▶ application-oauth.properties

 

로컬에 있는 application-oauth.properties 파일 내용을 그대로 복사해서 서버의 application-oauth.properties파일에 붙여넣기한다.

 

 

 서버의 application-oauth.properties파일

 

로컬의 application-oauth.properties 파일은 .gitignore로 git에서 제외 대상이라 깃허브에는 올라가있지 않는다.

그래서 EC2에서 git clone으로 프로젝트를 클론받았을 땐, 이 파일이 없기 때문에 이런식으로 서버에 추가를 해줘야한다.

 

 

▶ application-real.properties (로컬)

 

* SpringBoot 2.4.X 이상 버전

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.session.store-type=jdbc

 

위처럼 코드를 쓴 뒤, application.properties에 spring.profiles.group.real=real,real-db,oauth 를 추가한다.

-Dspring.profiles.active=real로 실행하면 지정된 real, real-db, oauth가 적용된다는 의미이다.

 

 

application-real-db.properties 

 

spring.jpa.hibernate.ddl-auto=none
spring.datasource.hikari.jdbc-url=jdbc:mysql://rds주소:포트(기본은 3306)/database명
spring.datasource.hikari.username=db계정
spring.datasource.hikari.password=db계정 비밀번호
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver

 

rds주소는 엔드포인트를 적어주면 된다.

 

 

▶ 배포 스크립트

 

배포를 할 때마다 쳐야되는 명령어가 많고 하나하나 직접 타이핑하며 실행하는 것은 불편하기 때문에, 쉘 스크립트 파일을 작성해서 실행시킨다. 

 

deploy.sh

#!/bin/bash

REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=webservice

cd $REPOSITORY/$PROJECT_NAME/

echo "> Git Pull"

git pull

echo "> 프로젝트 Build 시작"

./gradlew build

echo "> step1 디렉토리로 이동"

cd $REPOSITORY

echo "> Build 파일 복사"

cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/

echo "> 현재 구동 중인 애플리케이션 pid 확인"

CURRENT_PID=$(pgrep -fl webservice | grep jar | awk '{print $1}')

echo "> 현재 구동 중인 애플리케이션 pid: $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
	echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
	echo "> kill -15 $CURRENT_PID"
	kill -15 $CURRENT_PID
	sleep 5
fi

echo "> 새 애플리케이션 배포"

JAR_NAME=$(ls -tr $REPOSITORY/*.jar | tail -n 1)

echo "> JAR Name: $JAR_NAME"

echo "> $JAR_NAME 에 실행권한 추가"

chmod +x $JAR_NAME

echo "> $JAR_NAME 실행"

nohup java -jar \
	-Dspring.config.location=classpath:/application.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties,classpath:/application-real.properties \
	-Dspring.profiles.active=real \
	$JAR_NAME > $REPOSITORY/nohup.out 2>&1 &

 

생성한 스크립트에 실행 권한 추가

chmod +x ./deploy.sh

 

쉘 스크립트를 다음 명령어로 실행

./deploy.sh

 

실행 후 nohup.out 파일을 열어서 로그 확인

vim nohup.out

 

 

 

 

 

 

 

'DevOps > AWS' 카테고리의 다른 글

[AWS] AWS EC2 초기 설정 - 타임존 및 호스트명 변경  (0) 2023.06.23