Project/spring boot + aws 게시판

스프링 부트와 AWS로 혼자 구현하는 웹 서비스) EC2 프로젝트 Clone 받기 + 배포 스크립트 만들기 내용정리

프로그래멍 2020. 3. 16. 02:41

스프링 부트와 AWS로 혼자 구현하는 웹 서비스) 

 

EC2 프로젝트 Clone 받기 

./gradlew test 

결과 실패함.

원인 : 명령어 실행 권한을 주지 않아서.. 처음 하시는 분들은 다들 실패 할 것이다.

 

chmod +x ./gradlew

입력한 뒤 다시 test 해보면 정상으로 진행 할 수 있다.

 

 

배포 스크립트 만들기

vim ~/app/step1/deploy.sh 

명령어로 deploy.sh 파일생성.

 

파일을 생성하고 혹시 모를 일을 대비해서 insert 라고 작성후 저장(:w) 해본다.

내 경우엔 다 작성 한 후 저장을 하려했는데 오류메시지가 뜨면서 저장을 할 수 없었다.

오류는 "~/app/git/deploy.sh" E212: 쓸 파일을 열 수 없습니다.

 

putty종료 후 파일을 다시 만들어서 작성 하였다.

 

쉘 스크립트 작성.

#!/bin/bash

REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=springboot-freetec >> 내 프로젝트 명

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 -f ${PROJECT_NAME}*.jar)

echo " 현재 구동중인 애플리케이션pid: $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
        echo "> 현재구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
        echo "> kill -15 $CURRENT_PID"
        kill -15 $CURRENT_PID
        sleep
fi

echo "> 새 애플리케이션 배포"

JAR_NAME=$(ls -tr $REPOSITORY/ | grep .jar | tail -n 1)

echo "> JAR Name: $JAR_NAME"

nohup java -jar \
        -Dspring.config.location=classpath:/application.properties,/home/ec2-user/app/application-oauth.properties \
        $REPOSITORY/$JAR_NAME 2>&1 &

 

작성 한 스크립트에 실행 권한 추가

chmod +x ./deploy.sh 
./deploy.sh

실행 완료 후

nohup.out 실행되는 애플리케이션에서 출력된는 내용을 갖고 있으므로 파일을 열어본다.

vim nohup.out

여기서 책 내용엔 오류가 발생해야 된다고 써있는데 

필자는 오류가 발생하지 않았다. 그래도 그냥 따라해본다.. 오류가 나야되는 이유는 책으로 확인하였다.

application-oauth.properties 가 없어서 오류가 발생했어야 됐는데....
오류가 발생하지 않았다.. 이유를 알 수 없다...
오류는 발생하지 않고 jar 파일이 생성됨

jar 파일이 생겨버렸다

 

외부 Security 파일 등록

공개된 깃 저장소에 ClientId 와 ClientSecret을 올릴 수 없으니 서버에서 직접 이 설정들을 가지고 있게 한다.

application-oauth.properties 생성 후

deploy.sh 파일을 수정해준다.

 

deploy.sh 다시 실행

완료

톰켓 8080 포트까지 띄우긴 했지만

잘 된건지 모르겠다.

 

이 완료가.. 중간에 application-oauth.properties 없어서 오류 메시지를 보냈어야 됐는데

application-oauth.properties 파일이 있을 때나 없을 때나 동일하게 완료가 되어버렸다.