공부 이야기/책

[자기계발] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 2편

한희성 2020. 7. 13.
반응형

[6장] 인텔리제이로 스프링 부트 시작하기

 

- Infrastructure as a Service (Iaas, 아이아스, 에이스) : 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스입니다.

    기상머신, 스토리지, 네트워크, 운영체제 등의 IT인프라를 대여해 주는 서비스

    Aws의 EC2, S3등

 

- Platform as a Service (Pass,  파스) :  아이아스를 한 번더 추상화 한 서비스, 기능이 더 많이 자동화 되어 있다

                                                 AWS의 Beanstalk, Heroku 등

 

- Software as a Service (Saas, 사스) : 소프트웨어 서비스를 이야기합니다. 구글드라이브, 드롭박스 와탭 등

 

#!/bin/bash


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


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 ${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"


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


chmod +x ./deploy.sh


echo "> $JAR_NAME 실행"


nohup java -jar  $REPOSITORY/$JAR_NAME 2>&1 & 

 

나의 첫 쉘코드 전에는 무심코 복붙만 하면서 사용했는데 하나하나 쓰면서 다시 들여다보니 이용할 가치가 많은듯하다

 

REPOSITORY : 변수지정 $REPOSITORY 로 사용

 

git pull 수행 
빌드 수행

cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/ : 레포/프로젝트의 .jar 를 복사해 $REPOSITORY 복사

 

CURRENT_PID=$(pgrep -fl ${PROJECT_NAME}*.jar) : 기존의 수행중인 boot application 종료, pgrep 은 process id 만 추출 -f 프로세스 이름으로 찾습니다.

 

if ~ else 수행

JAR_NAME=$(ls -tr $REPOSITORY/ | grep *.jar | tail -n 1) : 새로 실행할 jar 를 찾습니다. 여러 jar 가 생기기 때문에 tail -n로 가장 나중의 jar파일(최신)을 변수 지정

 

nohup java -jar  $REPOSITORY/$JAR_NAME 2>&1 &  : 찾은 jar nohup 로 실행, 터미널을 종료해도 구동될 수 있도록 nohup 로 실행

 



반응형

댓글

💲 추천 글