[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 로 실행
'공부 이야기 > 책' 카테고리의 다른 글
[자기계발] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 1편 (0) | 2020.07.10 |
---|
댓글