본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/AWS

AWS 이용해서 웹사이트 만들기 - GitHub을 이용한 배포 - deploy script 작성

by dazwischen 2022. 6. 13. 16:31
반응형

aws-웹사이트-구축-github-deploy-script-썸네일이미지이다.
aws 웹페이지 구축 github deploy script

매번 새롭게 수정한 코드를 배포하기 위해선 이전에 한 Github에서 자료들을 aws로 clone 하고 테스트 코드를 실행하고 배포하는 과정을 거쳐야 한다. 할 때마다 반복해야 하는 작업이기 때문에 자동화할 수 있도록 쉘 스크립트를 작성해 두면 좋다.

Shell Script

Shell이란?

쉘이란 운영체제와 커널 사이에 위치한 인터페이스로써 다양한 기능을 수행하지만 직관적으론 명령어를 해석해 운영체제에 전달해 주는 역할을 수행한다.

Shell Script란?

쉘 스크립트란 미리 명령어를 프로그램으로 작성해 놓은 것을 말한다. 이 스크립트를 실행하면 안의 명령어들이 순서대로 실행되어 반복되는 일을 자동화하는데 이용할 수 있다. 웹사이트를 서버에 배포하는 과정도 일정하고 반복적이기 때문에 명령어들을 Shell Script에 모두 모아 작성해 놓으면 스크립트만 실행해도 Github을 다룰 때 사용한 명령어를 일일이 입력하지 않아도 된다.

Shell Script 기본 작성 방법

Shell Script는 sh의 확장자를 가진 파일이고 파일의 맨 처음에 "#!/bin/bash"를 작성해주어 스크립트 파일이라는 것을 명시한다.

#!/bin/bash

그 다음엔 자유롭게 command 창에서 작성했던 명령어들을 작성하면 된다.

Github Clone Deploy Sheet

Github에서 데이터를 불러오고 배포하는 과정을 담은 쉘 스크립트를 작성해보자. 배포를 목적으로 하기 때문에 파일 이름은 deploy.sh로 해주면 적당하다.

deploy.hs 작성

EC2 서버에 터미널로 접속한 후 아래의 명령어를 실행해 터미널에서 직접 작성할 것이다.

$ vim ~/app/step1/deploy.sh

 

새로운 빈파일이 열이면 아래와 같이 작성을 시작한다.

#!/bin/bash

REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=자신의프로젝트이름

cd $REPOSITORY/$PROJECT_NAME/

echo "> GIT PULL"
git pull

echo "> PROJECT BUILD START"
./gradlew build

echo "> CHANGE DIRECTORY TO STEP1"
cd $REPOSITORY

echo "> BUILD FILES DUPLICATE"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/

echo "> CURRENT RUNNING APPLICATION PID CHECK"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)

if [ -z "$CURRENT_PID"]; then
	echo "> NONE OCCUPIED PID"
else
	echo "> kill -15 $CURRENT_PID"
    kill -15 $CURRENT_PID
    sleep 5
fi

echo "> NEW APPLICATION DEPLOY"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1)
echo "> JAR NAME : $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &

위와 같이 작성을 완료한 다음엔 "esc"를 누른 다음 ":wq" 명령어로 저장 종료를 한다.

$ :wq

권한 부여

deploy.sh 파일이 성공적으로 작성이 되었다면 다면 실행 권한을 부여해줘야 한다. 실행 권한은 다음의 명령어를 작성해 주면 된다.

$ chmod _x ./deploy.sh

실행

이제 deploy.sh만 실행해 주면 된다. 실행은 파일 이름만 작성해 주면 된다.

$ deploy.sh

build successful

주의

현재 properties 파일들은 github에 올라가 있지 않았다. properties 파일들을 aws 서버에 생성해주어야 완전한 배포가 이루어진다.

반응형

댓글