[SpringBoot + React] 3. CodeDeploy 배포 그룹 생성

울상냥·2023년 4월 5일
0

배포

목록 보기
8/18

세번째로 S3에 업로드한 백엔드 프로젝트 빌드파일을 EC2로 배포해줄 CodeDeploy가 필요하다.

1. IAM 역할을 생성하자..

사용 사례에서 CodeDeploy 만 선택해주면 끝이다!

2. 애플리케이션을 생성하자..

이름을 입력해주고,, 컴퓨팅 플랫폼은 EC2/온프레미스 를 선택해주면 끝..!

3. 배포 그룹을 생성하자..

이름 입력해주고 서비스 역할에 아까 생성했던 IAM 역할을 입력해준다.

Amazon EC2 인스턴스선택 후 생성해둔 EC2 인스턴스의 태그 그룹을 넣어준다.

로드 밸런싱 활성화 는 해제해 주었다.

4. appspec.yml을 작성하자..

애플리케이션 사양 파일(AppSpec file)은 CodeDeploy에서 배포를 관리하는 데 사용하는 YAML 형식 또는 JSON 형식의 파일이다.

프로젝트의 최상단 디렉토리에 위치하도록 하여야 한다!!

appspec.yml

version: 0.0
os: linux
files:
  - source:  /
    destination: /home/ubuntu/github_actions
    overwrite: yes

permissions:
  - object: /home/ubuntu/github_actions
    owner: ubuntu
    group: ubuntu
    mode: 755

hooks:
  ApplicationStart:
    - location: deploy.sh
      timeout: 60
      runas: root

appspec.yml에 대한 자세한 내용은 참고 에서 확인하자..!

추후에 스프링부트의 로그를 보고 싶을 때는
/home/ubuntu/github_actions 경로에서 nohup.out파일을 확인하면 된다.

5. deploy.sh을 작성하자..

배포시 수행될 스크립트 파일을 작성하여 주었다.
appspec.yml과 마찬가지로 프로젝트 최상단 디렉토리에 작성해준다.

build.gradle 과 동일선상에 위치하면 된다!

deploy.sh

#!/bin/bash

REPOSITORY=/home/ubuntu/github_actions
cd $REPOSITORY

APP_NAME=demo
JAR_NAME=$(ls $REPOSITORY/build/libs/ | grep '.jar' | tail -n 1)
JAR_PATH=$REPOSITORY/build/libs/$JAR_NAME

CURRENT_PID=$(pgrep -fl java)

if [ -z "$CURRENT_PID" ]; then
    echo "NOT RUNNING"
else
    echo "> kill -9 $CURRENT_PID"
    kill -15 $CURRENT_PID
    sleep 5
fi

echo "> $JAR_PATH 에 실행권한 추가"
chmod +x $JAR_PATH

echo "> $JAR_PATH 배포"
nohup java -jar -Duser.timezone=Asia/Seoul $JAR_PATH > $REPOSITORY/nohup.out 2>&1 &

프로젝트가 실행중이면 kill후에 새로운 프로젝트를 실행하도록 하였다.

추후에 스프링부트의 로그를 보고 싶을 때는
/home/ubuntu/github_actions 경로에서 nohup.out파일에서 확인할 수 있다.


배포에대한 자세한 설정은 깊이 공부하지 않아서 필요하다면 그때 자세히 공부해봐야 겠다...

profile
안되면 되게하라

0개의 댓글