스프링부트 프로젝트를 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 |
---|