[Spring Boot] 스프링부트 GCP 배포하기 (Google Cloud Platform)

2025. 5. 11. 22:52·🍏 Spring Boot

 

오늘은 지금까지 만든 스프링 프로젝트를 구글 클라우드 플랫폼, GCP를 통해 배포해 보려고 한다.

구글 클라우드에서는 처음에 무료 크레딧을 주니 받아두면 좋다

 

 

https://cloud.google.com/free?gad_campaignid=17391149414&gad_source=1&gclid=Cj0KCQjwrPHABhCIARIsAFW2XBMd2UVlP5tGn22-5a-lcaOyilfwxbVdmR02FDEhIsZM1g52ICnGm-AaAnjOEALw_wcB&gclsrc=aw.ds&hl=ko&userloc_9213263-network_g=&utm_campaign=japac-KR-all-ko-dr-BKWS-all-cloud-trial-PHR-dr-1710102&utm_content=text-ad-none-none-DEV_c-CRE_631315581968-ADGP_Hybrid+%7C+BKWS+-+BRO+%7C+Txt+-GCP-General-google+cloud+platform-main-KWID_43700076520656808-kwd-318461527321&utm_medium=cpc&utm_source=google&utm_term=KW_%EA%B5%AC%EA%B8%80+%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C+%ED%94%8C%EB%9E%AB%ED%8F%BC

 

cloud.google.com

 

🦖GCP에 프로젝트 생성하기

구글 클라우드 콘솔에 접속해서 새 프로젝트를 만들어 준다.

 

그 후에 아래에 보이는 VM 만들기를 클릭하면

 

이 화면으로 이동하는데 사용 누르면 잠시 로딩하다가 사용 설정됨 이라고 뜬다.

그러면 다시 초기 화면으로 돌아가서

다시 한번 VM 만들기를 누른다.

 

이제 인스턴스를 만드는 과정에 접속되었는데

이름은 원하는 이름으로 설정하고, (난 그냥 알아보기 쉽게 간단하게 함)
리전은 asia-northeast3 서울로 설정,

 

아래로 스크롤해서 머신 유형은 ec2-micro로 설정한다. 아마 가장 저렴한 모델 같다.

이래도 월별 예상 가격이 9.14달러인 게 참 무섭다... 나는 간단하게 테스트 하고 바로 닫을 예정이다.

그리고 아래에 OS 및 스토리지를 누르면 기본 설정된 부팅 디스크 정보가 뜨는데

 

이걸 Ubuntu로 바꿔 준다. 다들 20.04 많이 쓰는 것 같아서 나도 이걸로 설정 

 

다음 네트워킹으로 넘어가서 

HTTP와 HTTPS 트래픽을 허용하고, 

 

보안 탭에서 
모든 Cloud API에 대한 전체 액세스를 허용해 준다.

그리고 만들기 클릭!

그리고 조금 기다리면 생성 완료

 

🦖Ubuntu 콘솔 접속해서 Spring 프로젝트 배포하기

이제 오른쪽에 SSH 연결을 누른다.

 

 

이제
sudo passwd
를 치고 비밀번호를 설정한 뒤

sudo su 
를 입력한다.

다음은 sudo apt update
로 최신 버전인지 확인한다.

그 후 sudo apt-cache search openjdk 를 입력하면 
사용할 수 있는 java jdk목록이 엄청 많이 뜨는데

sudo apt-get install openjdk-17-jre
sudo apt-get install openjdk-17-jdk

으로 각각 설치를 해 준다.
설치가 완료 되면
java --version
으로 버전을 확인해 보자

 

이제 SSH 키를 만들어 줘야 한다

cmd를 치고 window 터미널에 접속해서 
Users>사용자이름 으로 이동한 후 
mkdir .ssh

를 입력한다. 나는 이미 있는 폴더라서 패스 

ssh-keygen -t rsa -f gcp_key -C <구글 이메일 주소>
그리고 위 문장을 입력하면 enter passphrase를 치는데 나는 그냥 empty 함

다음으로
type gcp_key.pub
를 입력하여 생성된 키를 확인한다.

 

다시 Google Cloud로 돌아와서

compute engine에 접속한다.

 

왼쪽 메뉴의 하단에 보면 메타데이터 항목이 있다.
SSH 키 탭을 누르고 추가를 눌러
아까 확인한 ssh key 내용을 전부 입력하고 저장한다.

그리고 다시 윈도우 터미널로 돌아와서

ssh -i <키파일 로컬 경로> <user계정이름>@<인스턴스의 외부 ip>

ex) ssh -i /Users/abc/.ssh/gcp_key sonnet829@**
이렇게 입력해 준다

그럼 Are you sure 어쩌고 뜨는데 Yes 입력하고 엔터 치면
일단 연결 성공~

 

🦖방화벽 설정 (port 22)

서버에서 접속하기 위해서는 방화벽 설정을 해줘야 한다

네트워크 보안에 접속해 준 다음 방화벽 규칙 만들기를 누른다

 

이렇게 네트워크의 모든 인스턴스로 설정하고
소스 IPv4 범위는 0.0.0.0/0 으로 입력하고
지정된 프로토콜 및 포트에서 TCP 8080 입력한다.

 

🦖스프링부트 .jar 파일로 빌드 후 배포

 

이제 내가 만든 스프링부트 프로젝트를 .jar 파일로 빌드해야 한다.

프로젝트가 있는 위치에서 터미널을 열고

gradlew build 한다

빌드 완료!

이제 build > libs > 안에 .jar 파일이 있다면 빌드 성공이다.

 

그리고 .ssh 폴더로 이동해서 

ssh -i C:\<경로>\.ssh\gcp_key <사용자 이름>@<외부 ip 주소>
로 서버에 접속한다.

나는 한참 timeout이 발생했었는데 회사나 학교 등 네트워크에서는
port 22를 막아놓는 경우가 많은 것 같다. 
핫스팟 켜니까 접속이 된다.

 

그리고 다시 터미널에서

scp 명령어를 통해 빌드한 스프링 jar 파일을 복사한다

그 후에 ssh 명령어를 통해 서버에 접속하고

java -jar <파일이름>-1.0-SNAPSHOT.jar 
이런 식으로 입력하면

익숙한 상황이 뜬다

이 에러는... firebase admin key를 찾을 수 없다는 것

그러니 다시 로컬에서 
scp -i <gcp_key 경로> <firebase admin key 경로> <사용자이름>@<외부 ip 주소>:~
를 통해 복사해야 한다 

그리고 프로젝트 내의 FirebaseConfig에서 경로도 수정해 준다. 
src/main/ -> home/<사용자이름>

그리고 인텔리제이 내에서 ./gradlew clean build 로 다시 빌드

다시 로컬에서 scp 명령어로 복사
다시 .jar 실행
그냥 오류 나면 이거 무한반복

 

+
추가로 인텔리제이 내에서 설정해둔 환경변수 들은

nano ~/.<이름>-env 파일을 만들어서
이 안에 export GOOGLE_CLIENT_ID ="" 이런 식으로 다 넣었다

그리고 실행하기 전에
source ~/.<이름>-env 하고 .jar 파일 실행

성공...

이제 브라우저에서 외부 ip로 접속했을 때 화면이 뜨면 성공이다!

 

 


아래는 참고 글입니다! :D

 

Spring 프로젝트 GCP (Google Cloud Platform) 서버 배포

Spring boot project 를 클라우드로 배포하는 과정을 정리함

velog.io

 

 

[Spring] Google Cloud Platform에서 Spring 프로젝트 배포하기 - 1

1. VM 인스턴스 생성 1) google cloud 가입 처음 가입시 3개월간 $300 크레딧 제공 https://cloud.google.com/ 클라우드 컴퓨팅 서비스 | Google Cloud 데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 G

developerkkyu37.tistory.com

 

 

[Spring] Google Cloud Platform에서 Spring 프로젝트 배포하기 - 2

https://developerkkyu37.tistory.com/81 [Spring] Google Cloud Platform에서 Spring 프로젝트 배포하기 - 1 1. VM 인스턴스 생성 1) google cloud 가입 처음 가입시 3개월간 $300 크레딧 제공 https://cloud.google.com/ 클라우드 컴

developerkkyu37.tistory.com

 

'🍏 Spring Boot' 카테고리의 다른 글

[Spring Boot] @Value 어노테이션 오류 / application.yml 값 인식 실패  (0) 2025.05.07
[Spring Boot] Gemini API, Vision API, Vertex AI와 Spring Boot 연결  (0) 2025.05.04
[Spring Boot] Firebase & Google OAuth2 로그인 / 액세스 차단 문제 해결  (0) 2025.04.30
[Spring Boot] Google OAuth2 로그인 설정  (0) 2025.04.14
[Spring Boot] Google Firebase와 Spring Boot 연결  (1) 2025.04.14
'🍏 Spring Boot' 카테고리의 다른 글
  • [Spring Boot] @Value 어노테이션 오류 / application.yml 값 인식 실패
  • [Spring Boot] Gemini API, Vision API, Vertex AI와 Spring Boot 연결
  • [Spring Boot] Firebase & Google OAuth2 로그인 / 액세스 차단 문제 해결
  • [Spring Boot] Google OAuth2 로그인 설정
cosmo225
cosmo225
개발자로 향하는 길 👽
  • cosmo225
    to cosmo!
    cosmo225
  • 전체
    오늘
    어제
    • 분류 전체보기 (19)
      • 🍏 Spring Boot (12)
      • 🦖 Git (3)
      • 🦎 프로그래밍 (3)
      • 🦕 etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    데이터베이스
    백엔드
    개발
    프로그래밍
    firebase
    깃허브
    oauth2
    Spring
    GIT
    스프링부트
    Programming
    github
    google
    Back-end
    구글로그인
    스프링
    springboot
    파이어베이스
    java
    배포
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
cosmo225
[Spring Boot] 스프링부트 GCP 배포하기 (Google Cloud Platform)
상단으로

티스토리툴바