개발환경

1. 인텔리 J

2. JAVA11

3. Amazone Linux 2 AMI

4. Amazone RDS (Maria DB)

5. gradle

6. Spring boot

7. 배포 방법 jar

 

1. RDS 신청하기

RDS를 클릭

 

 

1. 프리티어를 클릭

2. DB 인스턴스 식별자는 말그대로 aws db 인스턴스 이름입니다.

3. 마스터 사용자 아이디, 패스워드 본인의 취향에 맞게 설정

 

스토리지 자동 조정 활성화 끔

 

퍼블릭 액세스 -> 예

VPC 보안 그룹 -> 새로 생성

새 VPC 보안 그룹 본인의 취향에 맞게 설정

 

자동 백업을 활성화 끔

 

마이너 버전 자동 업그레이드 끔

 

자동 업그레이드나 버전관리 같은거는 요금 폭탄 맞을수도 있어서 다 사용안하는걸로 하였습니다.

이후 데이터베이스 생성

 

방금 생성한 데이터베이스가 생성중으로 되어있을텐데, 사용가능이 될떄까지 몇분이 소요가 됩니다.

그동안 ec2 서버를 생성 하겠습니다.

 

2. ec2 서버 생성

ec2 클릭 - 인스턴스 시작

 

Amazone Linux2 AMI 맨위에있는거 선택 - 검토 및 시작 - 시작하기

 

해당 팝업이 나올텐데 기존에 키페어가 있는분은 기존 키 페어 선택 

없으신분은 새 키페어 생성 누른후 다운로드를 눌러서 받아야 합니다.

해당 키는 탈취될경우 외부의 사용자가 서버에 접속을 할수 있으므로 주의있게 보관해야합니다!

 

인스턴스 클릭하면 대시보드에 방금 생성한 서버가 보이는것을 확인할 수 있습니다.

 

전에 생성한 데이터베이스를 들어간후 상단에 수정 버튼 클릭

 

 

보안그룹을 자신이 생성했던 보안그룹으로 선택 수정

 

3. 이제 ec2 amazone server, rds 생성이 완료되었습니다.  rds 접속이 되는지 확인해보겠습니다.

 

엔드포인트를 복사후 hostname에 넣고 username과 password는 데이터베이스 생성할때 마스터 계정 패스워드를 입력하면 됩니다. 

입력후 Test Connection

 

 

 

 

4. rds 접속이 되는것이 확인되었습니다. 이제 ec2 amazone 서버를 접속해보겠습니다.

 

필자는 xshell을 사용하였습니다. 호스트에 퍼블릭 ipv4 주소넣고 접속

 

사용자 이름 : ec2-user 

amazone server는 기존 사용자 이름이 ec2-user

ubuntu는 기존 사용자 이름이 ubuntu로 서버마다 이름이 다릅니다.

 

shell에 접속이 되었습니다.

이제 jdk 11과 git을 설치 해보겠습니다.

 

jdk 11설치

# aws coreetto 다운로드
sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm

# jdk11 설치
sudo yum localinstall jdk11.rpm

# jdk version 선택
sudo /usr/sbin/alternatives --config java

# java 버전 확인
java --version

해당 코드를 차례대로 입력합니다.

 

sudo /usr/sbin/alternatives --config java 해당 코드를 입력했을때 해당화면이 나오는데 1을 입력하면 됩니다.

 

자바 버전 확인

- java --version을 확인하면 11버전으로 확인을 할 수 있습니다.

 

깃설치

sudo yum install git

 

깃버전 확인

git --version
cd /home/ec2-user
mkdir app
cd /app
mkdir git
cd git

해당 명령어를 차례대로 입력합니다.

 

프로젝트 구조

home 

------------------

ec2-user

ㄴapp

------------------

git

ㄴdeploy.sh

ㄴ받은 깃허브 프로젝트

ㄴ깃허브 프로젝트.jar

------------------

받은프로젝트

gradlew

build

gradle 관련 파일들

 

git clone 하기

- /home/ec2-user/app/git 해당 경로에서 git clone을 합니다.

git clone 깃허브httpUrl

git hub에 code - HTTPS에 있는 url을 넣으면 됩니다.

 

clone을 하면 폴더가 생성됩니다.

 

deploy.sh 파일 생성

- 이제 /home/ec2-user/app/git 경로에 배포 스크립트 파일 (deploy.sh)를 넣습니다.

vim deploy.sh
REPOSITORY=/home/ec2-user/app/git

cd $REPOSITORY/받은 프로젝트 이름/

echo "> Git Pull"

git pull

echo "> 프로젝트 Build 시작"

./gradlew build

echo "> Build 파일 복사"

cp ./build/libs/*.jar $REPOSITORY/

echo "> 현재 구동중인 애플리케이션 pid 확인"

CURRENT_PID=$(pgrep -f 받은 프로젝트 이름)

echo "$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 $REPOSITORY/ |grep '받은 프로젝트 이름' | sed -n '2p')

#위에 코드가 안먹히면 이코드를 넣으세여
#JAR_NAME=$(ls $REPOSITORY/ |grep '받은 프로젝트 이름' | tail -n 1)

echo "> JAR Name: $JAR_NAME"

nohup java -jar $REPOSITORY/$JAR_NAME &

받은 프로젝트 이름에 위에 생성된 폴더이름을 넣으면 됩니다.

저같은경우는 travel을 넣었습니다.

 

gradlew 권한수정

- 받은 프로젝트에 들어가보면 gradlew의 권한을 바꿔줘야 합니다.

sudo chmod 777 gradlew

 

deploy.sh 권한 수정

- deploy.sh 파일도 권한을 바꿔줘야 합니다.

sudo chmod 777 deploy.sh

 

인바운드 포트등록

- aws에 해당 어플리케이션의 인바운드 포트를 등록해줘야 합니다.

- 저같은경우는 어플리케이션이 8180이므로 8180으로 등록하였습니다.

 

deploy.sh 파일 실행

sudo ./deploy.sh

 

접속이 잘되는것이 확인이 되었습니다.

 

 

build.gradle

- 추가적으로 jdk 11에서 빌드할때 문제가 생기시는분은 아래코드를 build.gradle에 넣으시고 빌드하시면 해결 될수 있습니다.

// https://mvnrepository.com/artifact/org.javassist/javassist
implementation group: 'org.javassist', name: 'javassist', version: '3.15.0-GA'
복사했습니다!