ec2 spring 배포 쉘파일 만들기

도규원·2022년 2월 17일
0

새 EC2 인스턴스를 이용하면서 쉘스크립트가 없어졌기에 새로 만들었다.
깃에서 최신화하고 현재 구동중인 앱이 있다면 종료하고 JAVA로 실행하는 코드이다.

사전에 /home/ec2-user/app/step1/프로젝트 폴더 구조로 만든다.

#!/bin/bash

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

cd $REPOSITORY/$PROJECT_NAME/

echo "> Git Pull"

git pull

echo "> 프로젝트 빌드 시작"

./gradlew build

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

cd $REPOSITORY

echo "> Build 파일 복사"

cp $REPOSITORY/$PROJECT_NAME/build/libs/demo5-0.0.1-SNAPSHOT.jar $REPOSITORY/

echo "> 현재 구동중인 App id 확인"

CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)

echo "현재 구동중인 App 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 &
'''



real과 구분을 위해서는 아래와 같이 할 수도 있다.
'''
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 \
$REPOSITORY/%JAR_NAME 2>&1 &

에러가 발생했다.

:qa로 종료 시
no write since last change 에러
:wq로 종료 시
Can't open file for writing 에러
-> 권한 문제 sudo vim으로 파일 실행
-> 같은 오류 알트 제트로 강제종료
-> chmod 권한 수정 -> 파일이 없음 -> touch or vim으로 생성 자체가 안됨 -> sudo touch로 생성 -> 생성됨
-> sudo chmod 777로 권한 변경
-> vim 파일명으로 수정 wq로 저장
해결

profile
Engineer

0개의 댓글