EC2서버에 git에서 clone해온 프로젝트 파일이 잘 되어있음을 확인한 후 시작한다.
gradlew 파일은 그레이들이 설치되지 않는 환경이라도 그레이들을 쓸 수 있도록 지원해 주는 Wrapper 파일이다.
1. 배포 스크립트 만들기
작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다.
배포과정을 하나하나 하는건 불편하다. 그러므로 쉘 스크립트로 작성해 실행하면 자동으로 진행되게끔 구성해 보겠다.
vim ~/deploy.sh
#! /bin/bash
REPOSITORY=/home/ec2-user/app/step1
// 쉘에서는 $ 변수명으로 변수를 사용할 수 있다. 변수로 지정한것임.
PROJECT_NAME= fr-springboot
cd $REPOSITORY/$PROJECT_NAME/
// 프로젝트 파일로 이동
echo "> Git Pull"
// pull로 최신 내용 가져옴
git pull
echo "> 프로젝트 Build 시작"
./gradlew build
// gradlew로 build 수행함
echo "> step1 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY
// build 결과물인 jar 파일을 복사해 jar파일을 모아둔 위치로 붙여넣기함.
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)
// 기존에 수행중인 스프링 부트 애플리케이션 종료 하기 위해 찾음
echo "현재 구동 중인 애플리케이션pid: $CURRENT_PID"
if [ -z "$CURRNET_PID" ]; then
echo " > 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi
echo "> 새 애플리케이션 배포"
JAR_NAME=$(ls -tr $REPOSITORY/ |grep jar | tail -n 1)
// 새로 실행할 jar 파일명을 찾음, tail로 제일 최신꺼 찾는다.
echo "> JAR Name: $JAR_NAME"
nohup java -jar \
-Dspring.config.loaction=classpath:/application.properties,/home/ec2-user/app/application-oauth.properties \
$REPOSITORY/$JAR_NAME 2>&1 &
// nohup으로 jar파일 실행한다.
이후 ./deploy.sh로 쉘스크립트를 실행시켜준다.
cat nohup.out
이처럼 잘 실행 되었다면 오케이!
2. RDS에도 접근해보자
1. build.gradle에 의존성 추가
compile('org.mariadb.jdbc:mariadb-java-client')
Caused by: java.sql.SQLException: Unknown database 'aws-springboot2-webservice-rds'
만약 이런 에러가 난다면?
db이름이 틀렸을 확률이 매우 높다..
properties 파일에 spring.datasource.url 의 부분 database 이름을 aws_springboot2_webservice 와 같이 언더바로 바꿔주면 해결될 가능성이 높다.. (엄청난 삽질 끝에 알아낸 사실)
728x90
'개발 공부 기록 > 03. AWS' 카테고리의 다른 글
AWS에서 무중단 서비스를 구축해 보자. (1) | 2023.11.28 |
---|---|
AWS에서 Travis를 이용해 CI/CD를 해보자 (1) | 2023.11.28 |
Windows에서 putty를 이용하여 aws ec2와 rds 서버에 접속해보자. (1) | 2023.11.26 |
AWS RDS 데이터베이스 환경을 만들어보자. (0) | 2023.11.26 |
AWS EC2 회원가입 및 설정을 따라해보자. (3) | 2023.11.26 |