aws에 배포하기

roon-replica·2022년 10월 5일
0
  • 참고 자료: 스프링부트와 aws로 혼자 구현하는 웹서비스

애플리케이션 서버 구성 (클라우드)

  1. aws 가입

  2. AMI(Amozon Machine Image) 선택
    AMI는 EC2 인스턴스를 시작하는데 필요한 정보?를 이미지로 만들어 놓은 것이라고 함.

  3. 보안그룹 설정
    SSH 접속 키 잘 보관해두기(pem 키 = RSA 키인듯)
    접근 허용 IP 설정.(난 걍 ssh에 대해 다 열어뒀음.)

  4. 고정 IP 할당, ec2에 연결

  5. ec2 서버에 접속

    ssh -i {pem key 위치} {ec2 ip address}

    ~/.ssh/config에 Host 등록하면

    ssh {config 파일에 등록한 서비스명} 으로 접속 가능하다고 함.

  6. ec2에 접속한 후

DB 서버 구성 (클라우드)

  • aws에서 Relational Database Service라는 크라우드 기반 RDB 제공
    모니터링, 알람, 백업, High Availability를 지원한다고 함..
  1. RDS -> create database
    MariaDB(프리티어) 선택
    마스터 유저(admin) id,password 설정
    public access 가능하도록 설정
    DB명 설정
  1. RDS 설정

    • 파리미터 그룹 수정 후 RDS에 연결
      timezone
      charset?
      max connection
  2. DB 클라이언트로 RDS 접속 테스트
    mysql과 mariadb가 100% 호환 안된다는 경고는 뜨는데 접속은 됨.
    (intellij에서 안되길래 mysql workbench로 접속해봄)

  3. ec2에서 RDS 접근
    ec2에 mysql 설치

     // 접속 
     mysql -u {계정} -p -h {host 주소} 

ec2에 애플리케이션 배포

  • git 설치
 sudo yum install git
 git clone {repo 주소}
  • 배포란?
    프로젝트 코드를 받아서
    maven / gradle로 테스트 및 빌드
    서버(ec2)에 해당 프로젝트를 실행(재실행)하는 것이라고 함.

  • 빌드 스크립트 작성

    • git pull
    • build
    • run application
#!/bin/bash

REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=toy-blog-be

cd $REPOSITORY/$PROJECT_NAME/

echo "> Git Pull"
git pull

echo "> building project..."
./gradlew build

echo "> cd step1"
cd $REPOSITORY
echo "now directory = $PWD"

echo "> copy build file"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/

echo "> checking running application's pid"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)

echo "running application's pid: $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
        echo "> no running application"
else
        echo "> kill -15 $CURRENT_PID"
        kill -15 $CURRENT_PID
        sleep 5
fi

echo "> deploying new application..."
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1)

echo "> JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
  • 빌드 스크립트 실행하면 nohup이란 명령어때문에 계속 실행된 상태를 유지한다고 함..
profile
집중 ➝ 프로세서↑ 시간 투자 ➝ 디스크↑

0개의 댓글