Tech Collection

[AWS] 서버에 프로젝트 배포하기 - 무중단 배포 3 본문

Build/AWS 배포

[AWS] 서버에 프로젝트 배포하기 - 무중단 배포 3

eee_269 2021. 3. 10. 18:00
728x90
반응형

 

 

[AWS EC2] 서버 환경 만들기 - 무중단 배포 1

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 시큐리티를 활용한 소셜 로그인 등으로 애플리케이션을

jinny-1st.tistory.com

 

 

[AWS RDS] 데이터베이스 환경 만들기 - 무중단 배포 2

[AWS EC2] 서버 환경 만들기 - 무중단 배포 1 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 시큐리티를 활

jinny-1st.tistory.com

 

putty 를 통해 ec2에 접속한 후 진행한다.

 

 

sudo yum install -y git

- git 설치

 

git --version

- git 버전 확인

 

 

mkdir ~/app && mkdir ~/app/step1

- git clone 으로 프로젝트를 저장할 디렉토리 생성

 

cd ~/app/step1

- step1 폴더로 이동

 

git clone 프로젝트깃헙주소

- 프로젝트 clone

 

 

cd 프로젝트명
ll

- 내려받은 프로젝트명으로 폴더가 생겼을 것이니, 그 폴더로 이동해서

  폴더 안의 파일 목록들을 확인한다. (소문자 엘 두개)

 

1. Maven

 

 

[Spring] 메이븐(Maven) 설치하기 (Windows) | Jiwon Blog

 

jiwondh.github.io

위 사이트를 통해 먼저 컴퓨터에 maven 을 설치한다.

 


! 여기는 mvnw 파일이 없을 때 하면 된다.

cd 프로젝트가 존재하고 있는 폴더 경로

- 프로젝트가 있는 폴더경로로 들어가서 maven wrapper를 설치해줄 계획이다.

 

mvn -N io.takari:maven:0.7.7:wrapper

- maven wrapper 설치

 

프로젝트 ide 에서 github에 commit & push

 


다시 ec2로 돌아와서 실행

 

git pull

- github에 변경된 사항 다시 내려받기

 

chmod +x mvnw

- mvnw 파일 접근 권한 변경

 

./mvnw clean package

- maven 컴파일 + 빌드

- package 통해서 빌드할때 pom.xml에 아래 코드 들어가있는가 확인,,,

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>[버전]</version>
	<configuration>
		<archive>
			<manifest>
				<addClasspath>true</addClasspath>
				<mainClass>[메인 클래스]</mainClass>
			</manifest>
		</archive>
	</configuration>
</plugin>

 

 

ls -al

- target 이라고 새로 생긴 폴더가 생겼는지 확인

 

cd target
ll

*.jar 파일 또는 *.war 파일이 만들어 졌는지 확인

 

java -jar jar또는war파일

- 실행

 

 

 

2. Gradle

./gradlew test

- 코드들이 잘 수행되는지 테스트하기 

 

vim ~/app/step1/deploy.sh

- 쉘 스크립트 통해 명령어 한줄로 프로젝트 빌드 해결하기

 

#!/bin/bash

REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=프로젝트이름

cd $REPOSIROTY/$PROJECT_NAME/

echo "> Git Pull"

git pull

echo "> 프로젝트 build 시작"

./gradlew build --exclude-task test

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 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

- 애플리케이션에서 출력되는 모든 내용 갖고 있음

 

 

 

배포완료 ㅠㅠ


 

혹시 JDK 버전이 11이라 안된다면 밑의 포스팅을 참고하면 된다.

 

 

[Linux] JDK 11 Install

먼저, JDK 8 버전이 깔려 있어야 합니다. JDK 8 Install 더보기 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 - JDK 8 설치 sudo /usr/sbin/alternatives --config java - Java 버전 선택 sudo yum updat..

jinny-1st.tistory.com

 

728x90
반응형