loading

새소식

Cloud/AWS

[AWS] Springboot 프로젝트 빌드 후 AWS Lightsail 클라우드 서버 배포하기

  • -
728x90
반응형

 

 

 

 

 


 

 

 

이번에 데이터 분석 프로젝트를 진행하면서

웹으로 간단히 시각화를 표현하기로 결정했다.

 

일단 웹 개발 환경과 툴은 다음과 같다.

 

Web-tools

 

프로젝트에 간단히 설명하자면

전처리가 완료된 데이터들을 데이터베이스에 저장하고(여기까지 Jupiter Notebook(Python) 으로 진행)

이를 Jdbctemplates 를 사용하여 간단한 쿼리문으로 데이터를 불러온 후 

이를 Thymeleaf 에서 Chart.js 라이브러리를 이용해서 시각화를 진행했다.

 

그리고 AWS Lightsail 에 배포하는 과정에서 필요한 툴/프로그램은 다음과 같다.

 

Server-tools

 

 

간단한 프로젝트라 테스트코드를 작성하지 않아서 

배포 준비가 된 Springboot 프로젝트의 테스트 폴더 내부 ApplicationTest.java 의 내용을

 

@SpringBootTest
class MrwattApplicationApplicationTests {
}

 

 

위와 같이 만들었다.(내부에 @Test 어노테이션과 contextLoads() 함수를 삭제했다.)

테스트 코드를 작성한 사람이라면  굳이 지울 필요 없다.

 

그 다음, 왼쪽 (Ctrl + B) Explorer (탐색기) 부분에

 

Springboot-MAVEN

 

 

MAVEN 이 보일 것이다.

열어보면 맨 상단에 본인 어플리케이션 이름과 함께 그 하위에 수많은 플러그인과 의존성들이 보일 것이다. 

상단 본인 어플리케이션 이름을 우클릭 후 

 

Springboot-package

 

 

Run Maven Commands -> package 를 클릭한다.

이는  컴파일된 코드를 JAR 또는 WAR와 같은 배포 가능한 형식으로 패키지화하여 target 폴더 내부에 생성시킨다.

install 과 deploy 도 마찬가지로 배포 명령어지만 차이점은 다음과 같다.

install : 패키지를 로컬 저장소에 설치하여, 다른 프로젝트에서 이 패키지를 의존성으로 사용할 수 있게 한다.

deploy : 패키지를 원격 저장소에 배포한다. 다른 개발자들이 공유하거나 프로젝트를 실행하는 데 사용할 수 있다.

 

물론 install 과 deploy 둘 다 .jar 파일을 생성한다.

 

이렇게 프로젝트 폴더 내에 terget 파일 내부 .jar 파일이 나오면 빌드에 성공한 것이다.

이 .jar 파일의 이름은 ... SNAPSHOT ~ .jar 라고 적혀있을텐데 보기쉽게

본인의 프로젝트 명으로 변경뒤 원하는 디렉터리에 저장해 놓는다.

 

 

AWS Lightsail 에 접속한다.

 

Lightsail-Instance

 

 

인스턴스를 하나 생성한다. () 값은 필자가 선택한 것

인스턴스 생성은 리전선택(한국) -> 플랫폼 선택(Linux/Unix) -> 블루프린트 선택(OS전용/Ubuntu) -> 인스턴스 이름(default)

 

 

인스턴스가 생성되면 인스턴스 세부 설정에 들어간다.

연결 탭을 선택하고

다음으로 연결(IP주소): 값과 사용자 이름 값을 확인한다.

그리고 밑 SSH 키 아래에 기본 키 다운로드 를 클릭하여 키 파일을 원하는 디렉터리에 저장해 놓는다.

 

다음,  네트워킹 부분에서 IPv4 방화벽 부분에서

규칙 추가를 클릭 후 

 

Lightsail-Instance_rules

 

애플리케이션 : 사용자 지정(default)
프로토콜 : TCP(default)
포트 또는 범위8080

 

설정 한 뒤 생성한다. 

 

그 다음 FileZilla 를 실행한다.

FileZilla-menu

 

사이트 관리자에 들어가

 

FileZilla-site_manager

 

 

새 사이트를 생성 후

프로토콜 : SFTP - SSH File Transfer Protocol
호스트 : Lightsail 인스턴스 IP 값
로그온 유형: 키파일
사용자 : 인스턴스 사용자 이름
키 파일 : 다운로드 했었 던 키 파일

 

 

설정 후 연결 버튼을 클릭

팝업 창이 뜬다면 전부 확인

 

상태 : ...디렉터리 목록 조회 성공 이라고 뜬다면 성공

 

왼쪽 중간부분에 리모트 사이트를 보면 각각의 인스턴스 서버 이름으로 폴더가 생성되어 있을 것이다.

FileZilla-remote_site

 

이곳에 .jar 파일을 업로드 하면 끝이다.  =>  /ubuntu/(본인의 .jar 파일) 

 

그 다음 이제 서버에 연결해서 java .jar 파일을 실행시켜야 한다.

 

AWS Lightsail 의 본인 인스턴스에 들어가 연결 탭을 클릭하고

브라우저 사용 바로 밑에 있는

SSH를 사용하여 연결

 

SSH를 사용하여 연결 버튼을 클릭하여 서버를 켠다.

 

ls

 

를 입력하여 본인의 .jar 파일이 있는지 확인한다.

 

일단, 아무것도 없는 클라우드 서버에 

Springboot 를 실행하려면 java 가 설치되어 있어야 하기에

명령어를 다음과 같이 입력하여 패키지 목록을 업데이트 한다.

 

sudo apt update

 

 

다음으로 JRE를 설치해야하는데

 

sudo apt install openjdk-17-jre-headless

 

 

본인의 springboot 프로젝트의 java 버젼을 입력하면 된다.

 

springboot 프로젝트 pom.xml

 

필자는 17 버젼을 사용하고 있어서 17로 입력했다.

설치가 완료되면 다음과 같은 명령어를 입력해서 설치가 제대로 완료되었는지 확인한다.

 

java -version

 

 

확인이 되었다면 

 

sudo java -jar (본인의jar파일이름).jar &

 

 

을 입력하여 실행한다.

// example

sudo java -jar dataproject.jar &

 

 

 

새 창을 띄워 주소 창에

 

http://(본인의인스턴스IP):8080

 

를 입력 후 접속이 가능한지 확인한다.

example =>  http://2.78.103.66:8080

 

접속이 되지 않는다면 본인의 서버 창을 확인 하거나 FileZilla 의 상태 창을 확인한다.

본인의 springboot 프로젝트의 하위 주소가 알맞은지 확인한다.

( / 루트 페이지가 존재하지 않고 /home 이나 /main 일 경우 로컬에서 접근했던 것과 같이 포트 번호 뒤에 본인의 페이지 주소를 입력한다.)

 

 

 

다른 컴퓨터에서도 접속할 수 있는지 확인한다.

 

잘 실행이 되는 것을 볼 수 있다.

(필자는 도메인을 사서 연결을 해봤다.)

 

 


 

728x90
반응형
Contents

📝 포스팅 주소를 복사했습니다 📝

이 글이 도움이 되었다면 공감 부탁드립니다👍