매번 새롭게 수정한 코드를 배포하기 위해선 이전에 한 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
주의
현재 properties 파일들은 github에 올라가 있지 않았다. properties 파일들을 aws 서버에 생성해주어야 완전한 배포가 이루어진다.
'ICT > AWS' 카테고리의 다른 글
AWS 이용해서 웹사이트 만들기 - DB 설정하기 (0) | 2022.06.14 |
---|---|
AWS 이용해서 웹사이트 만들기 - properties 파일 생성하기 (0) | 2022.06.13 |
AWS 이용해서 웹사이트 만들기 - GitHub을 이용한 배포 - Git 설치 토큰 Clone (0) | 2022.06.13 |
AWS 이용해서 웹사이트 만들기 - RDS PC에서 접속하기 with IntelliJ (0) | 2022.06.07 |
AWS 이용해서 웹사이트 만들기 - 파라미터 그룹 (0) | 2022.06.06 |
댓글