Java/공중화장실 찾기

공중화장실 찾기 - 4 <Spring Boot GGP 배포>

요술공주밍키 2024. 9. 11. 11:19

2024.09.09 - [Java/공중화장실 찾기] - 공중화장실 찾기 - 3 <네이버 지도 API 적용>

 

공중화장실 찾기 - 3 <네이버 지도 API 적용>

2024.09.08 - [Java/공중화장실 찾기] - 공중화장실 찾기 - 2 " data-og-description="2024.09.06 - [Java/공중화장실 찾기] - 공중화장실 찾기 - 1 " data-og-description="최근 부쩍 단조로워진 나의 삶이 지루해져서 재미

magicmk.tistory.com

 

애플리케이션의 기능은 사실상 이전 포스팅에서 전부 다뤄보았다.

이번 포스팅에서는 기존에 로컬에서만 띄웠던 것을 GCP (Google Cloud Platform)을 이용하여 배포하려고 한다.


VM 인스턴스 생성

1️⃣ Google Cloud Platform 가입

https://cloud.google.com/

 

클라우드 컴퓨팅 서비스 | Google Cloud

데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.

cloud.google.com

 

GCP의 경우 최초 가입 시 약 $300의 크레딧이 제공된다.

무료 체험판

 

위 사진을 보면 $300가 제공되고 해당 금액을 전부 다 쓴 이후는 자동으로 청구되지 않기 때문에

잠시 사용하기 좋은 것 같다.

 

2️⃣ VM 만들기

VM 만들기

 

VM 만들기 상세

  1. 이름: 원하는 VM 이름 기입
  2. 리전: 서버의 물리적 위치 > 한국 서비스는 서울 선택
  3. 시리즈: 가격과 성능에 따라 고려 > 본인은 E2-small 선택
  4. 부팅 디스크: 이미지와 크기를 서비스 상태에 따라 고려 > 본인은 10GB에 ubuntu 20.04 설정했다.
  5. ID 및 API 액세스: 액세스 범위 > 모든 Cloud API 대한 전체 액세스 허용 선택
    방화벽 > "HTTP", "HTTPS" 트래픽 모두 선택
    ID 및 API 액세스

이제 만들기를 클릭하면 인스턴스가 생성된다.

 

생성된 인스턴스

 

여기서 SSH를 클릭하게 되면 생성된 VM에 접근할 수 있게 된다.

 

웹 콘솔


배포 작업

spring boot 프로젝트가 존재하고 linux에 대해 어느 정도 지식이 있다는 가정 하에 설명한다.

 

1️⃣ Java 설치

기존 패키지가 최신 상태인지 확인 > sudo apt update

 

사용 가능한 목록 찾기 > sudo apt-cache search openjdk

 

openjdk17 jre, jdk 설치 (각자 프로젝트에 맞춰서 버전을 변경하면 됨)

sudo apt-get install openjdk-17-jre

sudo apt-get install openjdk-17-jdk

 

자바 버전 확인 > java --version

 

java version

 

2️⃣ MariaDB 설치

https://velog.io/@xangj0ng/Linux-Ubuntu-Mariadb-%EC%84%A4%EC%B9%98

 

[Linux] Ubuntu Mariadb 설치

설치 전 패키지 업데이트서버, 클라이언트 설치클라이언트 설치 시 설정에 대해 묻는데, 만약 묻지 않는다면, 아래 명령어를 수행한다.root 비밀번호를 입력한다.위에서 비밀번호를 설정했기 때

velog.io

 

DB 설치는 위 블로그를 참고하면 될 것 같다.

참고로 MariaDB를 설치하고 난 뒤에는 대소문자 구분을 하지 않는 설정을 해야 한다.

해당 설정을 하지 않은 채 테이블을 만들었다가 애플리케이션이 테이블 이름을 찾지 못하는 불상사가 나타났었다.

 

https://velog.io/@ddmkim94/Linux-MariaDB-%ED%85%8C%EC%9D%B4%EB%B8%94-%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%EA%B5%AC%EB%B6%84-%EC%84%A4%EC%A0%95

 

[Linux] MariaDB 테이블 대소문자 구분 설정

MariaDB 테이블 대소문자 구분 설정

velog.io

 

대소문자 구분의 경우는 위 블로그를 참고하면 될 것 같다.

 

3️⃣ Project Build

기본적으로 ubuntu에 git을 설치한 뒤 github에 있는 repository를 clone 하는 것까지는 진행했다고 가정하고 시작한다.

https://coding-factory.tistory.com/502

 

[Linux] 우분투 Git 설치 / 다운로드 & 사용 방법

깃허브란? 깃(git)은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템입니다. 깃의 작업 폴더는 모두 기록하고 있어서 추적이 가능하고, 완전한 형태의 저장소입니다. 우분투에서 git

coding-factory.tistory.com

 

위 블로그 참고하면 될 것 같다.

 

project

 

기본적으로 gradlew는 필자와 다르게 하얀색으로 표시될 것이다. 해당 파일은 chmod를 통해 권한을 변경해줘야 한다.

> chmod +x gradlew

 

그리고 프로젝트를 빌드한다. > ./gradlew build

 

build 후 jar 확인

 

그리고 백그라운드에서 프로젝트를 실행시키면 마무리

nohup java -jar {jar name} &

 

4️⃣ 방화벽 규칙 생성

애플리케이션 기동까지 완료했다고 해서 마무리되는 것이 아니고 VM 인스턴스에서 방화벽 규칙을 통해

포트를 외부에서 접근할 수 있도록 열어줘야 한다.

 

 

필자는 spring boot project가 8080 포트를 쓰고 DB가 3306 포트를 쓰기 때문에 2개의 포트를 설정해 뒀다.


✅ 마무리

GCP라는 것을 처음 쓰다 보니 VM을 생성하고 내부에 파일을 넣는 등등 고난이 있었지만 금방 해결한 것 같다.

이 글을 통해 다들 쉽게 프로젝트를 배포하면 좋을 것 같다.

 

https://github.com/Kimmingki/suddenPoo

 

GitHub - Kimmingki/suddenPoo: 급똥이 마려울 때 얼른 화장실 찾아야지...

급똥이 마려울 때 얼른 화장실 찾아야지... Contribute to Kimmingki/suddenPoo development by creating an account on GitHub.

github.com