AWS EC2 Spring boot 배포하기

jaybon·2023년 3월 7일
0

인프라 infra

목록 보기
3/4

개요

  • EC2와 mobaXterm을 연결한다.
  • 리눅스에 한국 시간으로 timezone 설정을 한다.
  • 리눅스에 JDK를 설치한다.
  • Spring boot와 AWS RDS와 연결한다.
  • 프로젝트를 jar 파일로 빌드한다.
  • Spring boot 서비스를 배포한다.
  • 로그파일에서 로그를 확인한다.

AWS EC2 연결하기

https://velog.io/@jaybon/AWS-EC2-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0


Spring boot 예제

이 예제 사용시 RDS는 배포하지 않아도됨
(h2 메모리DB 사용)

https://github.com/jaybon1/mybatis_project


AWS RDS mariaDB 배포하기

https://velog.io/@jaybon/AWS-RDS-mariaDB-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0


영상

https://www.youtube.com/watch?v=s1Sysxw9JIA

EC2 접속

mobaXterm으로 EC2에 접속한다.

clear를 입력하여 화면을 비운다.

수월하게 작업하기 위해 슈퍼유저를 사용한다.

sudo su

ubuntu 계정에서 root 계정으로 변경

타임존 확인.

timedatectl

한국시간으로 타임존을 설정한다.

타임존 설정을 하지 않으면, 서버에서 날짜 관련 데이터를 처리할 때 잘못된 날짜가 들어갈 수 있다.

아래 코드를 한줄씩 입력한다.

mobaXterm은 Ctrl + V 가 되지 않고 Shift + Insert로 붙여넣기를 한다.

sudo ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

또는

sudo timedatectl set-timezone Asia/Seoul
sudo echo Asia/Seoul > /etc/timezone

입력하면 반응이 없는데, 리눅스는 성공적으로 작업이 되면 반응이 없다.

아래 명령어로 시간이 바뀌었는지 확인해본다.

timedatectl

.

apt 리파지토리 목록을 업데이트한다.

sudo apt update

openjdk 17 버전을 다운로드 한다. (버전은 자신에게 맞게 다운로드)

sudo apt install -y openjdk-17-jdk

아래와 같이 입력했을 때 버전이 잘 나오면 설치 된 것이다.

java --version

스프링 부트의 yml 파일로 이동한다.

주소 넣는 곳에 RDS 엔드포인트를 입력하자.

프로젝트가 로컬에서 잘 작동되는지 꼭 확인 후 넘어가자.

터미널에서

./gradlew bootJar

또는

./gradlew build

코드를 입력하고 엔터를 친다.

build 경로에 jar파일이 생성되어 있다.

윈도우 탐색기에서 오픈한다.

.

mobaXterm의 오른쪽 화면에서

아래 경로를 잘 확인하고,

/home/ubuntu/

아래 이름의 폴더를 만든다.

todo_app

todo_app 폴더로 이동하고, 빌드한 jar 파일을 드래그 앤 드롭한다.

todo_app 폴더로 이동한다.

아래와 같이 타이핑한다.

nohup java -jar mybatis_project-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
  • nohup : 유저가 콘솔에 접속 중이지 않더라도 서버 실행 유지
  • java -jar : 자바 jar파일을 실행시킨다. (내부 톰캣용)
  • 파일명 : m 만 치고 탭을 누르면 자동완성 된다.
  • 1>log.out : 1은 표준출력을 뜻한다. 문제가 없을 때는 log.out 파일에 로그를 기록
  • 2>err.out : 2는 에러출력을 뜻한다. 문제가 있을 때는 err.out에 출력
  • & : 백그라운드 실행 (유저가 로그아웃하면 꺼진다. nohup과 같이 사용하면 실행 유지 가능)

아래 코드로 잘 작동되는지 확인해보자.

ps -ef | grep m*.jar

.

인터넷 창을 켜서 EC2 아이피 주소를 입력해보자.

아이피주소/todoList 를 입력하고 화면이 뜨는지 확인.

.

tail은 파일의 끝 10줄을 출력한다.

2번 에러출력은 리눅스의 에러만 처리한다. 서버 내부에러는 처리하지 않는다.

tail err.out

tail에 -f 옵션을 붙이면 새로 들어오는 로그를 모니터링 할 수 있다.

tail -f  log.out

Ctrl + C 로 빠져나올 수 있다.

.

프로세스의 PID를 확인하려면 아래와 같이 검색한다.

ps -ef | grep m*.jar

pgrep는 PID만 출력한다.

pgrep -f m*.jar

하나더 나오는 것은 grep의 프로세스다.
java라고 적혀 있는 프로세스의 번호를 찾는다.

.

프로세스를 멈추려면

kill -9 프로세스아이디


profile
티스토리 블로그 https://ondolroom.tistory.com/

0개의 댓글