본문 바로가기
🛠 백엔드/프로젝트 개발일지

구름IDE로 스프링부트 배포하기

by meteorfish 2024. 1. 17.
728x90

[ 사용 환경 ]

- 현재 스프링부트 프로젝트가 github에 올라와있다고 가정

- MySQL 5.6

- Srping Boot 3.X

- JDK 17

- Ubuntu 14.04 (Goorm IDE는 해당 버전을 지원한다.)

 

[ 절차 ]

github Repository 연동

 

 

https://ide.goorm.io/ 로 접속하여 컨테이너를 만든다.

 

goormIDE - A Powerful Cloud IDE Service

goormIDE is a cloud IDE service to maximize productivity for developers and teams. Develop and deploy your service with powerful collaborative features, anytime and anywhere.

ide.goorm.io

 

 

깃허브에서 불러오기 선택

 

깃허브 인증 후 아래 사진처럼 설정한다.

Template는 maven이나 gradle 중 사용하는 빌드 툴을 선택한다.

 

MySQL 설치의 경우, 자동으로 5.5가 설정된다.

 

[ 주의 ]
Spring Data JPA 사용 시, LocalDateTime의 타입이 SQL에서 DateTime(6) 형태로 매핑된다.
그러나 MySQL 5.5 버전에선 DateTime(6)를 지원하지 않기 때문에 오류가 발생한다.
해당 명령어는 5.6 버전 부터 제공하기 때문에, 따로 5.6 버전을 설치할 것이다.

 

 


 

JDK 17 설치하기

터미널에 해당 명령어를 입력해준다.

 

# apt-get 업데이트
sudo apt-get update && sudo apt-get upgrade

# JDK 17 설치
sudo apt-get install openjdk-17-jdk

# JDK 17 적용
sudo update-alternatives --config java
sudo update-alternatives --config javac

# 버전 확인
javac -version
java -version

 


MySQL 5.6 설치하기

해당 명령어를 입력한다.

 

sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
sudo apt-get update
sudo apt install mysql-server-5.6 mysql-client-5.6

 

설치 후에 `mysql --version` 으로 버전을 확인한다.

 

MySQL 연동 수정 (application.properties)

`application.properties` 에서 로컬에서 실행할 때 설정한 username과 password가 goormIDE에서 설장한 것과 같은지 체크한다.

 

# application.properties

spring.datasource.username=root
spring.datasource.password=1234

 

 

[ 참고 ]
만약 로컬 디렉토리를 설정한 것이 있으면 상대경로로 변경하는 것을 추천.
예) C://test//test.txt 는 윈도우 경로 -> Ubuntu에서 사용 불가

 

 


 

스프링 프로젝트 빌드하기

cd {프로젝트 폴더}

최상위 폴더 (파란색)은 Repository 이름이기 때문에 스프링 파일이 있는 프로젝트 폴더로 이동해야 한다. (사진에서 dg)

 

./gradlew build

 

빌드가 성공하면 build/libs에 {프로젝트 폴더명}-0.0.1-SNAPSHOT.jar 라는 파일이 생성된다. (plain 없는 파일)

 

만약 빌드 실패 시, 터미널에 나온 코드를 수정하면 된다.

 

 

 


 

jar 파일 실행하기

cd build/libs

해당 jar 파일이 있는 경로로 이동한다.

 

service mysql start

MySQL이 실행되도록 설정한다.

 

MySQL이 실행되지 않으면 아래와 같은 에러가 발생한다.

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

 

 

java -jar {프로젝트 폴더명}-0.0.1-SNAPSHOT.jar

해당 명령어를 입력하면 정상적으로 Spring이 실행되는 것을 알 수 있다.

 

 


 

백그라운드 실행하기

컨테이너를 나가면 스프링이 종료되기 때문에, 백그라운드에서도 실행하도록 하자.

 

일단 컨테이너를 정지하고, 항상 켜두기를 킨 후에 다시 실행한다.

 


 

 

nohup 실행하기

sudo apt-get install nohup

해당 명령어가 실행되지 않으면, 이미 설치되어 있을 수도 있기 때문에 확인을 위해 아래 명령어를 실행해보자.

 

nohup java -jar {프로젝트 폴더명}-0.0.1-SNAPSHOT.jar &

해당 명령어에서 뒤에 &를 붙여야 세션이 끊겨도 돌아간다.

그러면 nohup.out이라는 파일이 build/libs에 생성된다.

 

터미널 창은 닫으면 내용이 지워지기 때문에, 이를 따로 기록하는 파일이 생성되는데 이것이 nohup.out이다.

 

해당 파일을 열면 다음과 같이 정상적으로 출력된다.

 

 

 


 

외부에서 접속가능하도록 URL 설정하기

위 네비바에서 컨테이너 - 실행 URL과 포트를 클릭

원하는 URL과 PORT 를 입력하자. 필자는 localhost:8080과 포트를 맞추기 위해 8080으로 설정했다.

 

이제 브라우저에서 해당 URL을 접속하면 정상적으로 작동한다. ( 서버 속도가 조금 느릴 수도 있다)

 

 

 


 

MySQL 워크밴치와 연결하기

goormIDE 공식 문서를 참고하면서 진행해보자.

https://help.goorm.io/ko/goormide/17.faq/language-and-environment/mysql-workbench

 

구름IDE 에서 MySQL Workbench를 사용하고 싶어요 - goorm

Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.

help.goorm.io

 

단, 맨 마지막 절차인 { mysqlsh로 goormIDE 컨테이너안에 있는 MySQL server 접속} 는 진행하지 않아도 된다.

 

이제 MySQL 워크밴치를 실행한다.

+ 버튼을 클릭하자.

- HostName: 포트포워딩에서 설정한 IP

- Port: 포트포워팅에서 설정한 외부 포트

- Store In Valuit : 구름IDE에서 설정한 비밀번호

- connection Name : 자유롭게 해도 됨.

 

이제 접속하면 정상적으로 작동한다.

쿼리도 자유롭게 날릴 수 있다.

 

 

 


 

 

백그라운드 실행 중인 스프링 프로젝트 프로세서 죽이기

 

새 터미널 창을 열어준다.

ps -ef

 

해당 명령어 입력시, 현재 실행중인 프로세서가 모두 뜬다.

그 중 실행중인 jar 파일을 찾는다.

두번째 있는 PID 값을 복사한다.

 

kill -9 {PID 번호}

해당 명령어를 통해 프로세서를 죽일 수 있다.

 

 

 

 


 

[ 도움을 받은 글 ]

글 써주신 분들 모두 감사드립니다 (_ _)

 

 

- JDK 17 설치

https://konkukcodekat.tistory.com/entry/%EA%B5%AC%EB%A5%B4%EB%AF%B8-JDK-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8

 

GoormIDE에서 java JDK (11,12...18) 업데이트

terminal에 아래와 같이 입력해서 원하는 버전 다운받을 수 있습니다. JDK 11로 업데이트 # apt-get 업데이트 sudo apt-get update && sudo apt-get upgrade # java 11 설치 sudo apt-get install openjdk-11-jdk # java 11 적용. 아

konkukcodekat.tistory.com

 

- MySQL 5.6 설치

https://askubuntu.com/questions/762384/install-mysql-5-6-on-ubuntu-16-04

 

Install MySql 5.6 on Ubuntu 16.04

It seems that Ubuntu 16.04 is coming with MySQL 5.7, however I need to install 5.6. When I try to install it explicitly sudo apt-get install mysql-server-5.6 I get the following error: Package my...

askubuntu.com

 

- MySQL 오류 해결

https://seong6496.tistory.com/324

 

Can't connect to local MySQL server through socket (2) 해결

mysql 를 켤 때 다음과 같은 에러가 뜰 수 있습니다. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 이 문제의 원인은 세가지입니다. server가 socket 연결을 못한 경우

seong6496.tistory.com

 

728x90