- 배포 단계
- git clone 혹은 git pull을 통해 새 버전의 프로젝트를 받음
- Gradle이나 Maven을 통해 프로젝트 빌드
- EC2 서버에서 해당 프로젝트 실행 및 재실행
- 배포 스크립트 만들기 - 쉘 스크립트로 작성해 스크립트 실행만으로 배포
- 주의 : application-oauth.properties 또는 application-real-db.properties 파일 등 외부에 노출될 파일은 전달 public GIT에 push 하지 말고 ec2서버에 직접 넣어야 한다.
더보기
배포 쉘 스크립트
# 자주 사용하는 값 변수에 저장
REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=springboot-webservice
# git clone 받은 위치로 이동
cd $REPOSITORY/$PROJECT_NAME/
# master 브랜치의 최신 내용 받기
echo "> Git Pull"
git pull
# build 수행
echo "> project build start"
./gradlew build
echo "> directory로 이동"
cd $REPOSITORY
# build의 결과물 (jar 파일) 특정 위치로 복사
echo "> build 파일 복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)
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/ | grep jar | tail -n 1)
echo "> Jar Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
# 스프링 설정 파일 위치 지정
nohup java -jar \
-Dspring.config.location=classpath:/application.properties,classpath:/application-real.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties \
-Dspring.profiles.active=real \
$JAR_NAME > $REPOSITORY/nohup.out 2>&1 &
'AWS' 카테고리의 다른 글
ec2서버에서 s3 이미지 업로드 시 permission denied 해결 방법 (2) | 2022.08.09 |
---|---|
s3 업로드 시 파일용량 제한 오류 해결 방법 (0) | 2022.08.01 |
AWS RDS 생성 (0) | 2021.10.02 |
EC2 인스턴스 서버에 필수 설정 (0) | 2021.10.02 |
EIP (탄력적 IP) 할당 (0) | 2021.10.02 |