본문 바로가기

:SERVER/AWS

[easyupclass] EC2 서버에 스크립트로 배포하기(1)

반응형

1. 새 파일 생성
vi var.sh
i 키 클릭

#!/bin/bash
GITHUB_ID="codingspecialist"
PROJECT_NAME="aws-v2"
PROJECT_VERSION="0.0.1"
PROJECT_PID=""
JAR_PATH=""

export GITHUB_ID
export PROJECT_NAME
export PROJECT_VERSION
export PROJECT_PID
export JAR_PATH

esc 키
:wq 엔터

2. 환경 변수 파일 적용
source ./var.sh

3. 터미널 접속 종료 후 재접속

4. 새파일 생성
vi deploy.sh
i 키 입력

#!/bin/bash

echo $GITHUB_ID

esc 키 입력
:wq

5 파일에 권한 추가
chmod u+x deploy.sh

6. deploy.sh 파일 실행
./deploy.sh 엔터
그러면 GITHUB_ID 값이 표시되지 않는 것을 확인할 수 있다.

7. deploy.sh 파일 수정

vi ./deploy.sh

#!/bin/bash

source ./var.sh

echo $GITHUB_ID

esc 키
:wq

이 스크립트(deploy.sh)파일 내부에서만 var.sh 안의 환경변수를 작동시키고 싶을 때 위와 같이 작성하면 됩니다 (두번째 라인 source~)

8. 환경 변수 적용 범위
.bashrc 어디에서나 사용 가능
터미널 만들고 source 적용 : 터미널이 종료되기 직전까지만 사용 가능
쉘 스크립트로 변수를 만들고 다른 파일에서 실행하기 위해서는
.bashrc에 등록되어 있거나 [광역 설정]
source 로 터미널에 적용되어 있거나 [터미널 종료 시 사용 불가능]
파일에서 사용하려면 source 코드를 이용해서 사용하면 됩니다.


9. deploy.sh 파일에 cron 설정

#!/bin/bash

# 1. env variable
source ./var.sh
echo "1. evn variable setting complete"

# 2. cron delete
touch crontab_delete
crontab crontab_delete
rm crontab_delete
echo "2. cron delete complete"

crontab_delete 파일을 생성하고 crontab 명령어로 생성한 crontab_delete 파일을 호출하면 기존 cron이 종료된다.
크론 종료하는 이유

재배포를 하게 되면, 프로젝트가 종료되고 PID가 사라지게됨(서버가 종료됨). 재배포 중에 cron이 작동되면 꼬이게 됨
재배포시에는 cron을 잠깐 멈춰야 한다. 그리고 재배포가 다 완료되면 다시 cron을 등록해야한다

 


10. 서버 PID를 찾는 법
pgrep -f bash
aws-v2-0.0.1.jar 파일로 빌드되고 실행이 될 예정.
그러므로 서버의 PID를 찾으려면
pgrep -f aws-v2-0.0.1.jar
명령어로 찾기.


aws-v2 = settings.gradle 파일의 rootProject.name 값.
0.0.1 = build.gradle 파일의 version 에 있는 값.

gradle 빌드 시 생기는 파일. 라이브러리 a,b,c를 포함하는 파일은 aws-v2-0.0.1.jar 이고, 라이브러리 a,b,c를 포함하지 않는 파일은 aws-v2-0.0.1-plain.jar 파일

build.gradle 파일 설정.

// plain 파일을 생성하지 않는 설정
jar {
	enabled = false
}

 

11. var.sh 파일 수정

vi var.sh
i 키 입력
PROJECT_PID를 환경변수에 저장하는 부분 추가

#!/bin/bash
GITHUB_ID="codingspecialist"
PROJECT_NAME="aws-v2"
PROJECT_VERSION="0.0.1"
# pgrep -f aws-v2-0.0.1.jar 의 실행결과
PROJECT_PID="$(pgrep -f ${PROJECT_NAME}-${PROJECT_VERSION}.jar)"
# /home/ubuntu/aws-v2/build/libs/aws-v2-0.0.1.jar
JAR_PATH="${HOME}/${PROJECT_NAME}/build/libs/${PROJECT_NAME}-${PROJECT_VERSION}.jar"

export GITHUB_ID
export PROJECT_NAME
export PROJECT_VERSION
export PROJECT_PID
export JAR_PATH

esc 키 입력
:wq


출처이지업클래스 | 개발자를 위한 AWS DevOps 입문 [CI/CD 무중단 배포]
https://easyupclass.e-itwill.com/course/course_view.jsp?id=74&rtype=0&ch=course

반응형