[Spring] 스케줄러 프로젝트[3] - AWS EC2에 배포하기

RedPanda·2023년 8월 2일
0

이번에 제대로 프로젝트 요청이 들어와서 본격적으로 개발하기로 했다. 요청과는 별개로 배포 후에 필요한 기능들을 추가해보기 위해 빠르게 배포부터 시도해보기로 했다.

배포를 위한 준비 단계

배포를 위해 선택한 클라우드는 AWS이다. 예전에 해본 EC2 Ubuntu(Linux)에 빌드한 파일을 올려서 배포해보고자 한다.

AWS 시작하기

프로젝트 빌드까지 마친 상태에서 AWS를 시작해보자. 프로젝트 빌드는 이전 게시글 내용을 참고하기 바란다.

EC2 진행 순서는 이러하다.

  • 보안그룹 설정
  • 인스턴스 생성
  • 키페어 생성
  • 인스턴스 시작

AWS 회원가입 및 로그인을 하면 메인화면이 나오는데, 여기서 EC2를 클릭하여 다음화면으로 이동한다.

좌측 탭에 보안 그룹을 설정해주어야 한다. 보안 그룹은 인바운드 규칙을 설정하는 곳이다.
해당 서버에 접속하려면 알맞는 포트번호를 뚫어줘야 한다. 현재 이곳에서 뚫어주지 않으면 서버를 문제없이 작동시켰음에도 접속할 수 없다.

다음은 인스턴스 탭으로 가서 "인스턴스 시작"을 클릭하자.
운영체제는 Linux 기반인 Ubuntu를 사용할 예정이다.

생성한 보안규칙을 설정해주고 키페어를 생성해준다. 키페어는 생성하면 다운로드 되는데, 분실되면 절대 안되므로 꼭 잃어버리지 말자.

이제 생성하고 나오면 인스턴스 상태가 "실행중"으로 바뀌어있을 것이다. 여기서 퍼플릭 IPv4 주소와 DNS를 사용할 예정이므로 잘 확인해두자.

EC2 서버에 접속하기

SSH를 사용하여 컴퓨터에서 접속할 것이다. 이때 필요한 것이 "키페어"이다.
cmd 창에서 다음을 입력해보자.(windows 환경은 SSH 클라이언트를 설치한 후에 진행이 가능하다.)

# macOS의 경우 권한때문에 sudo를 붙여줘야 한다. windows는 X
sudo ssh -i {개인키 경로} serverHost@{public IPv4 주소}

접속하면 다음 화면으로 넘어간다.

배포 서버에 빌드파일 실행하기

EC2 기본 세팅하기

EC2에 빌드파일을 실행하기 전에 실행 환경을 만들어줘야 한다.
다음은 우리가 해야하는 세팅 목록이다.

  • linux 업데이트
  • java 설치
  • nodejs 설치
  • git 설치
  • mariaDB 설치

리눅스 업데이트는 꼭 해주는게 좋고, 우리가 사용하는 기능 + git을 EC2에 설치하기 위해 다음을 EC2에 쳐주자.

# linux update
sudo apt-get update -y
# java 설치
sudo apt-get install openjdk-17-jdk
# node, npm, yarn 설치
sudo apt-get install nodejs -y
sudo apt-get install npm -y
sudo npm install -g yarn

# 버전확인
java -version
git --version
node -v
npm -v

설치 후에 버전확인을 해야하는데, 빌드한 Spring의 JDK 버전을 꼭 확인해서 설치해주자. 다르면 실행되지 않으니 주의하자.

MariaDB 세팅

다음은 mariaDB 설치인데, 비밀번호 설정 중에 "change password"와 같은 문구가 뜨는데 꼭 "Y"를 눌러주어 비밀번호를 바꿔주자. 이 비밀번호도 분실돼서는 안된다.

# mysql 설치 및 비밀번호 설정
sudo apt-get install mariadb-server mariadb-client -y
sudo mysql_secure_installation  // 비밀번호 설정 반드시 할것
mysql -u root -p  // 이후 비밀번호 입력

mariaDB가 깔렸다면 기본적인 세팅은 완료했다.

빌드파일 배포하기

이제 EC2에 빌드파일을 업로드해보자.

local의 cmd로 돌아와서 빌드파일이 있는 위치를 찾아주자.
나의 경우에 빌드파일을 spring 프로젝트 밖으로 빼서 따로 관리했다. (이름 수정도 가능하다.)

위치에 도착했다면 다음을 쳐주자. DNS 끝에는 설치할 경로인데, 기본경로로 해주었다.(/home/ubuntu)

# 파일 옮기기 (local의 빌드파일 위치에서 시작)
# sudo scp -i [키페어 경로] [빌드파일 이름] ubuntu@[public IPv4 DNS]:~
sudo scp -i /Users/bob_win_9/Documents/aws_key/spring_key.pem SpringTestServer_1.jar ubuntu@ec2-52-78-224-191.ap-northeast-2.compute.amazonaws.com:~


설치가 끝났다면 EC2에 접속하여 다음을 쳐보면 빌드파일이 실행된다.

# /home/ubuntu 위치
java -jar [빌드파일 이름]

마지막으로 public IPv4:[서버 포트번호]로 접속해보면 문제없이 잘 뜨는 것을 알 수 있다.

여담 + 참고자료

생각해보니까 DB가 문제인게, schedule 테이블의 컬럼이 너무많은데 전부 0 또는 1로 설정할거라 RDB로 짜는게 맞는지 의문이 계속 든다. 차라리 Document형 DB인 mongoDB로 만드는게 낫지 않을까... DB설계부터 차분히 해봐야겠다.

참고 자료

Ubuntu Setting
https://studynote.oopy.io/9e9d3792-e537-42ed-bf15-9a11db685296

mariaDB
https://devopscube.com/install-mariadb-on-ubuntu/

profile
끄적끄적 코딩일기

0개의 댓글