1) Infrastructrue as a Service(IaaS)
2) Platform as a Service (Paas)
3) Software as a Service (Saas)
pem키 복사
cp pem키를 내려받은 위치 ~/.ssh/
복사가 되었다면 pem키 권한 변경
chmod ~/.ssh/pem키명
config 파일 생성
vim ~/.ssh/config
Host 원하는 서비스 명
HostName ec2의 탄력적 IP주소
User ec2-user
IdentityFile ~/.ssh/pem키 이름
권한 설정
chmod 700 ~/.ssh/config
접속
ssh config에 등록한 서비스명
Git 설치
sudo yum install git
프로젝트를 저장할 디렉토리 생성
mkdir ~/app && mkdir ~/app/project
생성한 디렉토리로 이동
cd ~/app/project
GitHub에서 https 주소 복사
git clone 복사한 주소
코드들이 잘 수행되는지 검증
./gradlew test
deploy.sh 파일 생성
vim ~/app/project/deploy.sh
deploy.sh
#!/bin/bash
REPOSITORY=/home/ec2-user/app/oldbook
PROJECT_NAME=Old-Book-Store
cd $REPOSITORY/$PROJECT_NAME/
echo "> Git pull"
git pull
echo "> 프로젝트 Build 시작"
./gradlew clean build -x test
echo "> oldbook 디렉토리로 이동"
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 5
fi
echo "> 새 애플리케이션 배포"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1)
echo "> JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
실행 권한 추가
chmod +x ./deploy.sh
스크립트 실행
./deploy.sh
로그 출력
vim nohup.out