Naver cloud 서버에 Spring Boot 프로젝트 배포하기 (Mac)

Vinci·2023년 7월 3일
1
post-thumbnail

8월에 있을 멋쟁이사자처럼 중앙해커톤에서 Naver cloud 크레딧을 지원해준다고 해서 서버 사용법을 공부해보았다

과정을 먼저 크게 살펴 보자면
서버생성 -> 공인ip 발급 -> ACG 설정 -> mysql 설정 -> jar 파일 배포
순서로 진행될것이다

작성하기 앞서 본 글의 목적은 테스트용 서버를 만들고 단순히 Spring Boot 프로젝트 배포를 실험하는것에 있기 때문에
서버환경은 Classic, 스토리지는 HDD, 타입은 Micro (가입 후 1년 무료)로 맞출 것이다

서버 만들기

먼저 Naver cloud platform에 회원가입을 하고 결제수단을 등록한다
이제 콘솔 창으로 들어가면 아래와 같은 창이 나온다

왼쪽 메뉴바에 Services 블록을 클릭하고 Compute 카테고리의 Server를 클릭한다
이제 서버를 만들 수 있다

메뉴바에 Platform 블록에서 Classic과 VPC를 선택할 수 있다. 두 환경은 사용목적을 고려해서 선택하면 되며, 필자는 Micro 서버타입 (Naver cloud 가입 후 1년동안 무료로 사용가능)을 이용할 것이기 때문에 Classic으로 설정해놓았다.

자 이제 본격적으로 서버를 만들어 보자

현재 위와 같은 페이지가 나올텐데 서버 생성 버튼을 누른다

서버 세부타입을 위와 같이 설정해주고 서버 이미지는 쓰고 싶은 거 고르면 된다 (필자는 ubuntu 18을 골랐다)

만약 centos 7을 선택한다면
centos 7의 yum 패키지 관리는 JDK 11까지만 지원 해주기 때문에 Spring Boot 프로젝트 초기설정 시에 Java 11로 만드는게 여러모로 편할 것이다
// 사실 JDK 17을 사용할 수 있긴 하다
// 알고 싶다면 아래 링크에서 확인해보시길
https://velog.io/@koreakky/CentOS-7%EC%97%90-OpenJDK17-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0


선택을 끝내면 서버설정 페이지가 나오고

  • 스토리지 종류: HDD
  • 서버세대: g1
  • 서버타입: Micro
  • 서버개수: 1

이렇게 설정해주고 서버이름은 마음대로 정하면 된다

이제 인증키 이름을 정해주고 생성하면 파일로 다운로드 되는데, 이따 관리자 비밀번호를 발급받으려면 필요하기 때문에 잃어버리지 않도록 잘 보관해두자

네트워크 접근 설정은 위와 같이 (보유하고 있는 ACG 중에서 선택) 해주고 마지막 최종확인까지 마치면

몇분 후에 서버가 만들어진다!

이제 관리자 비밀번호를 생성할건데
서버 관리 및 설정 변경에 들어가서 "관리자 비밀번호 확인"을 클릭한다

이런 화면이 나올텐데 아까 다운로드 받은 인증키 파일(.pem)을 올려주면
관리자 비밀번호를 발급 받을 수 있다 (서버접속 할 때 필요하니 반드시 복붙해두자)

공인 IP 발급받기

내가 만든 서버를 외부에서 접근하려면 공인 IP가 필요하다
다만 공인 IP는 월 마다 결제되는 유료 서비스이니 크레딧이 있다면 꼭 등록해두고 더 이상 사용하지 않을 것이라면 반납하길 바란다

메뉴바에서 "Public IP" 블록을 클릭하고 "+ 공인IP 신청" 버튼을 눌러 발급받는다

ACG 설정하기

ACG (Access Control Group)
서버로 들어오는 트래픽에 대해 프로토콜, IP주소 그리고 포트번호에 따라 접근을 제어할 수 있는 서비스

ACG는 어떤 트래픽이 나의 서버로 들어올 자격이 되는 녀석들인지 정하는 문지기 시스템이다
메뉴바에서 "ACG"를 선택하면 아까 서버생성 과정에서 선택한 ACG가 나온다

ACG를 선택하고 설정 버튼을 누른다

서버에 접속하기 위한 22포트, 또 Springboot의 포트번호는 8080이고, 필자의 MySQL DB와 통신할 때는 3306포트를 사용할 것이기 때문에 위와 같이 22포트, 3306포트, 그리고 8080포트를 허용해줄 것이다

예시)

  • 프로토콜: TCP
  • 접근소스: 0.0.0.0/0 (모든 IP가 가능하다는 의미)
  • 허용 포트 (서비스): 3306
  • 메모: MySQL (자유~)

이렇게 설정을 하고 추가 그리고 적용을 해주면 된다

MySQL 설정 및 JDK 다운로드

이제 서버에 접속해보자!!

$ ssh root@[공인IP주소]

터미널에서 ssh로 접속해주고
비밀번호는 아까 발급받은 관리자 비밀번호를 입력해주면 된다 (접속후에 비밀번호는 변경하자!)

서버에 mysql을 다운로드 하자

$ apt update
$ apt install mysql-server -y

mysql을 실행하고 환경설정은 본인 조건에 따라 해준다

$ services start mysql
$ mysql_secure_installation //환경설정

다음으로 서버 mysql에 외부ip가 접근 가능하도록 설정파일을 수정해주어야 한다

$ vim /etc/mysql/mysql.conf.d/mysqld.cnf

위 명령로 설정파일을 연다

필자의 서버에는 설정파일이 위의 경로에 mysqld.cnf라는 이름으로 존재했다 (리눅스는 mysqld.cnf, 윈도우는 my.ini, 맥(Unix)은 my.cnf로 설정파일이 만들어진다)

그리고 위와 같이 bind-address 라는 부분을 찾아서 왼쪽의 ip를 0.0.0.0으로 만들어주고 저장하면 된다

이제 mysql에 접속하고 DB를 만들어주자!

mysql -u root -p
create database [DB이름] default character set utf8;

위의 DB이름은 springboot 프로젝트의 .yml 파일에 적었던 DB이름과 동일하게 만들어준다

자 거의 다왔다
이따 jar 실행하기 위해서 먼저 서버에 JDK를 다운로드 해야한다
필자의 프로젝트는 JDK 17을 사용하기 때문에 17을 다운로드 해줄 것이다

$ apt install openjdk-17-jdk

위 명령어로 JDK 17을 다운로드 해준다

Spring Boot 프로젝트 서버에 배포하기

jar(java archive) 파일이란 java 클래스 파일과 관련 리소스등 배포에 필요한 파일들을 모아놓은 메타데이터이다

잠깐!*
jar 파일로 만들기 전에 application.yml을 잘 만들었는지 확인해보자
예를 들면 url 부분에 서버 ip를 안 넣는다던가..

이제 배포에 필요한 jar 파일 만들어 보자

보이는 것과 같이 Intellij에서 Gradle 메뉴에 bootJar를 클릭하면
build/libs 디렉토리에 jar 파일이 생성 된다

이제 로컬 터미널에서 서버로 jar 파일을 전송해야한다

$ scp [보낼 파일의 절대경로] root@ip주소:~/[받을 경로]

위와 같이 터미널에서 scp로 jar 파일의 위치와 서버에서 받을 경로를 각각 입력해주고 파일을 전송한다

다시 서버에 로그인하여 방금 보낸 jar 파일이 있는 경로로 이동한 뒤

$ java -jar [파일이름].jar

jar 파일을 실행하면

Spring Boot 프로젝트가 서버에서 실행되고 있는 걸 볼 수 있다!

profile
Chase the Truth!

0개의 댓글