프로젝트 Clone
2021-04-01 기준으로 EC2 18.04 Ubuntu free tier 를 새로 만들면 git은 깔려 있다.
그래도 혹시 모르니, git 설치 및 버전 확인을 해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sudo apt update
sudo apt upgrade
sudo apt install git
git --version # 이후에 다 깔렸는지 확인차 버전 확인 !
mkdir /home/ubuntu && mkdir /home/ubuntu/step1 # clone 받은 프로젝트를 저장할 디렉터리 생성
cd /home/ubuntu/step1 # 생성된 폴더로 이동
git clone (github에서 복사한 주소) # 이동 후 clone
cd /home/ubuntu/step1/{project-name} # 해당 프로젝트로 이동
chmod +x ./gradlew # gradlew 에 실행 권한 부여
배포 스크립트 만들기
step1 디렉터리에 deploy.sh 파일 생성 및 작성
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
31
32
33
34
35
36
37
38
39
40
REPOSITORY=/home/ubuntu/app/step1
PROJECT_NAME=spring-nginx-CD
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/*.war $REPOSITORY/
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -fl {war파일 이름} | awk '{print $1}')
echo "현재 구동 중인 애플리케이션 pid: $CURRENT_PID"
if [ -z "$CURRENT_PID" ]; then
echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi
echo "> 새 애플리케이션 배포"
WAR_NAME=$(ls -tr $REPOSITORY/ | grep **.war | tail -n 1)
echo "> WAR Name: $WAR_NAME"
nohup java -jar \
-Dspring.config.location=classpath:/application.properties,/home/ubuntu/app/application-rds.properties \
$REPOSITORY/$WAR_NAME 2>&1 &
deploy 만든 위치에서 ./deploy.sh 명령어로 실행 후 확인!
gitignore 된 properties 만들어주기
보안을 위해 git 에 올라가지 않은 파일들을 만들어줘서, Spring Server 에서 환경설정을 불러올 수 있게 만들어 주자.
서버에서 직접 이 설정들을 가지고 있으면 된다.
/home/ubuntu/app 디렉터리에 ignore 된 properties 파일 생성
ex) vim /home/ubuntu/app/application-rds.properties
기존 프로젝트에 있는 application-rds.properties 파일의 내용을 복사 - 붙여넣기
인바운드 규칙 수정
ec2 보안정책에서 인바운드 규칙 수정을 해서 외부에서 접근이 가능하도록 만들자.
spring boot 의 기본 포트인 8080 포트를 모든 IP에서 접근 가능하도록 수정
그 다음 해당 포트로 접속 후 제대로 된 response 가 날라오는지 확인하자.