이 글에서는 로컬에 생성한 스프링 부트 프로젝트를 Naver Cloud
에 배포한 뒤 외부에서 웹 서비스와 DB에 접속하는 방법을 안내한다.
Naver Cloud Platform을 이용해 Ubuntu 18.04 서버를 생성하였다.
서버 생성 방법은 아래 링크를 참고하면 된다.
https://guide.ncloud-docs.com/docs/server-create-vpc
그리고 Spring Initializr로 스프링 부트 프로젝트도 생성하였다.
로컬에서 Naver Cloud에 접속하려면 우선 포트 포워딩이 선행되어야 한다.
자세한 내용은 아래 링크를 참고한다.
https://guide.ncloud-docs.com/docs/server-manage-classic#%포트포워딩설정
포트 포워딩을 통해 설정한 포트와 IP는 아래와 같다.
이제 서버에 접속할 수 있도록 Bitvise SSH Client 또는 Putty와 같은 SSH Client가 필요하다. 본 글에서는 Bitvise SSH Client로 접속한다.
Naver Cloud Console
에서 서버 관리 및 설정 변경 - 관리자 비밀번호 확인
버튼을 클릭한다. 아래 화면에서 인증키를 첨부하면 root password
를 발급해준다.
우분투에 접속한 뒤 아래 명령어를 입력해 패키지를 최신 버전으로 변경한다.
sudo apt-get update -y && sudo apt-get upgrade -y
스프링 부트 2.7.6 버전을 사용하므로 자바 11 버전을 사용해야 한다. 따라서 우분투에 자바 11버전을 설치하겠다.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get install openjdk-11-jdk
자바 설치가 완료되었는지 확인한다.
JAVA_HOME
의 시스템 변수 설정을 위해 ~/.bashrc
파일에 아래 내용을 추가한다.
영구적으로 저장되기 위해선 source ~/.bashrc
를 입력해야 한다.
git이 기본적으로 설치가 되어 있으니 프로젝트를 git clone
으로 저장할 프로젝트 디렉토리를 생성한다.
mkdir app
디렉토리를 생성 했으면 HTTPS 주소를 복사한다.
복사한 주소를 이용해 git clone
을 진행한다.
git clone https://github.com/f-lab-edu/half-time
프로젝트 디렉토리로 이동해 파일들이 잘 복사 되었는지 ls -l
또는 ll
명령어로 확인한다.
잘 복사되었으니 이제 MySQL도 설치하자.
sudo apt-get install mysql-server
mysql -u root -p
명령어를 이용해 접속한다.
접속했으면 admin
계정을 만든다.
create user 'admin'@'%' identified by 'PASSWORD';
# 계정 확인
use mysql;
select user, host from user;
admin
계정으로 조회 가능한 데이터베이스를 생성한다.
create database TESTDB;
use TESTDB;
데이터베이스에 관한 모든 권한을 admin
계정에게 할당한다. 명령어는 아래와 같다.
grant all privileges on TESTDB.* to 'admin'@'%';
flush privileges;
원격 접속을 위한 계정 설정이 끝났다. 이제 원격 접속을 가능하게 MySQL
설정 파일을 변경하겠다.
cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf
설정 파일 안에 bind-address
가 127.0.0.1
로 되어 있다. 외부 접속을 허용하기 위해 0.0.0.0
으로 변경한다.
3306
포트를 허용하기 위해 우분투 방화벽을 열어준다.
ufw allow mysql
systemctl restart mysql.service
이제 Naver Cloud
방화벽 규칙을 설정하고 외부에서 서비스에 접속하기 위한 공인 IP까지 할당하면 모든 준비가 끝난다.
Naver Cloud
의 ACG
설정에서 아래와 같이 방화벽 허용 룰을 생성한다.
공인 IP 할당 방법은 아래 링크를 참고하면 된다.
https://guide-gov.ncloud-docs.com/docs/compute-compute-2-1-v2
방화벽 룰도 설정했고 공인 IP도 할당 받았다.
./gradlew build
명령어로 빌드 후 jar
파일을 실행하면 외부에서 서비스에 접속할 수 있다.
cd /build/libs
java -jar [file name].jar
스프링 부트가 정상적으로 실행되었다. 이제 외부에서 서비스에 접속해보겠다.
정상적으로 index.html
페이지가 출력된다.
이제 무료 Tool인 MySQL WorkBench
사용해 MySQL
에 접속되는지 확인하겠다.
워크벤치를 실행해 사용하는 DB 이름과 할당 받은 공인 IP 그리고 DB에 접속하는 계정을 입력한다.
성공적으로 연결되었고 DB에 접속하였다
외부에서 Naver Cloud
인스턴스 서버와 DB에 접속하는 방법을 알아봤다.
이번에 NCP로 배포를 하게 됐었는데 정말 도움이 많이 됐습니다!