스프링 부트와 AWS로 혼자 구현하는 웹 서비스) EC2 프로젝트 Clone 받기 + 배포 스크립트 만들기 내용정리
스프링 부트와 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 파일이 생성됨
외부 Security 파일 등록
공개된 깃 저장소에 ClientId 와 ClientSecret을 올릴 수 없으니 서버에서 직접 이 설정들을 가지고 있게 한다.
application-oauth.properties 생성 후
deploy.sh 파일을 수정해준다.
deploy.sh 다시 실행
톰켓 8080 포트까지 띄우긴 했지만
잘 된건지 모르겠다.
이 완료가.. 중간에 application-oauth.properties 없어서 오류 메시지를 보냈어야 됐는데
application-oauth.properties 파일이 있을 때나 없을 때나 동일하게 완료가 되어버렸다.