이번에 데이터 분석 프로젝트를 진행하면서
웹으로 간단히 시각화를 표현하기로 결정했다.
일단 웹 개발 환경과 툴은 다음과 같다.
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 일 경우 로컬에서 접근했던 것과 같이 포트 번호 뒤에 본인의 페이지 주소를 입력한다.)
다른 컴퓨터에서도 접속할 수 있는지 확인한다.
잘 실행이 되는 것을 볼 수 있다.
(필자는 도메인을 사서 연결을 해봤다.)