티스토리 뷰

AWS

[AWS] 배포 스크립트

SdardewValley 2021. 10. 21. 22:00
반응형

배포란?

  • git clone이나 git pull을 통하여 새 버전의 프로젝트를 받음
  • Gradle이나 Maven을 통한 프로젝트 테스트와 빌드
  • EC2 서버에서 해당 프로젝트 실행 및 재실행

 

쉘 스크립트

  • .sh 확장자를 가진 파일
  • 리눅스에서 기본적으로 사용할 수 있는 스크립트 파일의 한 종류
  • 배포 과정을 편리하게 해줌

 

작성한 쉘 스크립트

 

  •   $REPOSITORY
    • 프로젝트 디렉토리 주소는 자주 사용하기 때문에 변수로 만듦
    • 쉘은 선언할 때 변수의 타입이 없음
    • $변수명 형태로 변수 선언

 

  • cd ~
    • 디렉토리로 이동

 

  • git pull
    • 디렉토리의 최신 내용을 받음

 

  • ./gradlew build
    • gradlew을 사용하여 프로젝트 build

 

  • cp ./build/*.jar $REPOSITORY/
    • build 후 생성된 jar 파일을 복사하여 jar 파일들이 있는 위치로 복사

 

  • CURRENT_PID=$(pgrep -f springboot-board) 
    • 기존에 수행중이던 스프링 부트 애플리케이션 종료
    • pgrep: 프로세스 id 만 추출하는 명령어
    • -f: 프로세스 이름으로 찾는 옵션

 

  • if ~ else ~ fi
    • 현재 구동중인 프로세스를 확인하고 상태에 따라서 기능을 수행
    • pid 값을 사용하여 프로세스가 있으면 해당 프로세스 종료

 

  • JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1_
    • 새로 실행할 jar 파일명 탐색
    • -n: 최신 jar 파일을 변수에 저장

 

  • nohup ~
    • JAR_NAME의 이름을 가진 jar을 nohup으로 실행
    • 내장 톰캣을 사용하여 jar 파일만 있으면 웹 애플리케이션 서버를 실행할 수 있음
    • java -jar 명령어로 실행할 수 있지만, 터미널 접속이 끊기면 애플리케이션도 같이 종료됨
    • nohup으로 터미널을 종료해도 애플리케이션 구동 가능

 

deploy.sh 파일을 보면 실행 권한이 없다.

 

실행 권한을 주었다.

 

쉘 스크립트를 실행한 모습

./쉘스크립트이름.sh

위의 명령어로 쉘 스크립트를 실행할 수 있다.

 

vi nohup.out

위의 명령어로 nohup.out 파일의 로그를 본다. nohup.out에는 실행되는 애플리케이션에서 출력되는 내용을 갖고 있다.

 

APPLICATION FAILED TO START가 보인다. 실행할 수가 없다고 한다.

 

that could not be found를 보면 ClientRegistration을 찾을 수가 없다고 나온다. 

 

ClientRegistrationRepository 새엉을 위해서는 clientId와 clientSecret이 필요한데, 로컬 프로젝트에서는 이 값이 있었지만 개인정보 보호를 위해서 git에 올리지 않아 문제가 발생하였다.

 

따라서 서버에서 이 설정을 해줘야 한다.

 

application-oauth.properties 파일을 생성한다. 

 

문제가 생겼다. 이 문제는 다음에 해결하도록 하자.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함