[AWS] Amazon EC2 ubuntu에 springboot 배포 과정 정리

subbni·2023년 5월 21일

Lettrip

목록 보기
6/7

프론트와의 연결을 위해 생각보다 빠르게 배포하게 되었다 ..
약 7번을 만들고 지우고 반복하니까 이젠 .. 배포 기계가 되었다 ..^^

인스턴스 생성 & 접속

1. 인스턴스 생성 (ubuntu 20.04 LTS)

이 때 볼륨 크기(EBS) 잘 생각해서 만들기

  • 프리티어는 30GB까지인데 볼륨은 확대만 가능하고 축소가 안 된다
  • 혹시 모르니까 애초에 10GB나 15GB로 작게 만들자

보안그룹 - 인바운드 규칙

  • HTTP, SSH (집에서만 사용할거면 해당 ip 설정해주면 됨, 나는 어디에서나 다 개발할 생각이어서 다 열어줌)
  • ec2 내에서 사용할 포트가 있으면 열어주기 (redis, springboot 사용 => 6379,8080 열었음)

2. 키 생성해서 저장 (ex. lettrip-key.pem) / 이전에 생성한 키 쓰고 싶으면 해당 키 배정해줌

3. 키 저장한 디렉토리로 가서 ssh 로 접속

chmod 400 lettrip-key.pem
ssh -i lettrip-key.pem ubuntu@퍼블릭 DNS 또는 ip

EC2 기본 설정

1. 타임존 변경

  • 기존 미국 시간대를 한국 시간으로 변경 (KST)

    sudo rm /etc/localtime
    sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

  • date 명령어로 타임존 확인

    date

2. Hostname 변경

  • hostname 변경

    sudo hostnamectl set-hostname --static 원하는이름

  • exit으로 나갔다가 다시 들어오면 이름 바껴있음
  • /etc/hosts/에 hostname 등록하기

    sudo vim /etc/hosts

  • 127.0.0.1 옆에 있는 것들 지우고 바꾼 hostname으로 적어주고 저장

3. java 설치

sudo apt update
sudo apt upgrade

  • 주의 : apt-get 이랑 apt 혼용하면 에러 뜰 수 있으므로 하나만 정해서 사용하기

sudo apt install openjdk-17-jdk
java --version

4. Redis 설치

이메일 인증시 redis 사용하므로 설치했음

sudo apt install redis-server

기본적으로 6379 포트에 redis 서버 열림

redis-cli ping

위 명령어 쳤을 때 PONG이라고 뜨면 OK

redis-cli
exit

5. git 설치

sudo apt install git
git --version

6. ssh 키 발급받고 github에 등록하기

cd ~/.ssh
ssh-keygen -t rsa -C 깃헙계정메일

  • 뭐라뭐라 뜨는데 그냥 다 엔터 누르면 됨

cat id_rsa.pub

  • 나오는 키 복사
  • 깃허브 계정 설정 > ssh 설정 칸에 가서 ssh 등록하기

7. git clone 받기

  • 원하는 깃헙 레포지토리에서 ssh 복사

    git clone 복사한ssh

SpringBoot 프로젝트 설정

1. application.yml 추가

gitignore에 등록된 것이 있으면 해당 위치에 직접 추가해줘야 함
나같은 경우엔 application.yml가 gitignore 처리가 되어있어서 직접 추가해줘야 했음

mkdir resources
cd resources
vim application.yml

  • 전부 복사해서 넣어주고 바꿀 부분 바꾸기 (ex.redis 포트 6379로 설정해주기)

2. build 하기

  • build.gradle 있는 디렉토리로 이동

    ./gradlew build

빌드 완료
만일 너무 오래 걸린다면 걍 나와서 인스턴스 중지하고 새로 시작하면 되는 경우 98%

3. jar 실행하기

빌드되면 build/libs 폴더가 생김

cd build/libs
ls

  • 프로젝트이름-0.0.1-SNAPSHOT.jar 을 실행시키면 됨

nohup java -jar 프로젝트이름-0.0.1-SNAPSHOT.jar &

  • 위 명령어에서 &의 역할 : 터미널을 꺼도 인스턴스가 중지되지 않는 한 계속 실행

cat nohup.out

  • 위 명령어로 실행 로그들을 확인할 수 있음
    (+)

    cat /dev/null > nohup.out

  • nohup.out 초기화하기

프로젝트 변경사항 적용하기

일단 실행 중이라면 중단 시켜야 함

jobs

  • jobs로 현재 jar이 몇 번으로 실행중인지 확인 (난 springboot만 실행시키고 있었으므로 매번 1번이었다)

fg %1
^C

  • 실행 중인 jar번호로 가져와서 ^C로 중지시킴

git pull
./gradlew build

git pull 받고 다시 빌드 -> jar 다시 실행 시키면 됨


배포 스크립트 써서 사용하는 사람들이 많던데 일단 나는 이렇게 할란다


MongoDB 설치

환경 : ubuntu Server 22.04 LTS(HVM)

  1. wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
  2. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
  3. sudo apt-get update
  4. sudo apt-get install -y mongodb-org
  • 기본 포트 27017
profile
개발콩나물

0개의 댓글