Skip to main content

4-05. SBB μ˜€ν”ˆ

About 2 minJavaSpringAWScrashcoursejavajdkjdk8streamspringspringframeworkspringbootawsaws-ec2

4-05. SBB μ˜€ν”ˆ κ΄€λ ¨


4-05. SBB μ˜€ν”ˆ

점프 투 μŠ€ν”„λ§λΆ€νŠΈ - WikiDocs

μ—¬λŸ¬λΆ„λ§Œμ˜ AWS μ„œλ²„λ₯Ό μƒμ„±ν•˜κ³  μ„œλ²„ μž‘μ—…μ„ ν•  수 μžˆλŠ” μ€€λΉ„κ°€ μ™„λ£Œλ˜μ—ˆλ‹€. 이제 μ„œλ²„μ— SBBλ₯Ό μ„€μΉ˜ν•˜κ³  λͺ¨λ“  μ‚¬λžŒμ΄ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄ 보자.

λ‹€μŒκ³Ό 같은 μˆœμ„œλ‘œ μ°¨κ·Όμ°¨κ·Ό 진행해 보자.

  1. μ„œλ²„μ— μžλ°”λ₯Ό μ„€μΉ˜ν•˜κ³  ν™˜κ²½μ„€μ •μ„ ν•œλ‹€.
  2. μ„œλ²„μ— μ μš©ν•  SBB λ°°ν¬νŒŒμΌμ„ μƒμ„±ν•œλ‹€.
  3. SFTPλ₯Ό 톡해 SBB λ°°ν¬νŒŒμΌμ„ μ „μ†‘ν•œλ‹€.
  4. SBB λ°°ν¬νŒŒμΌμ„ μ‹€ν–‰ν•œλ‹€.
  5. μ›Ή λΈŒλΌμš°μ €λ‘œ SBB μ„œλΉ„μŠ€λ₯Ό ν…ŒμŠ€νŠΈν•œλ‹€.

μ„œλ²„ ν™˜κ²½μ„€μ •ν•˜κΈ°

λ¨Όμ € 터미널(mobaXterm)을 μ‚¬μš©ν•˜μ—¬ μ„œλ²„μ— μ ‘μ†ν•˜μž.

그러면 λ‹€μŒκ³Ό 같은 터미널 창이 λ‚˜νƒ€λ‚œλ‹€.
그러면 λ‹€μŒκ³Ό 같은 터미널 창이 λ‚˜νƒ€λ‚œλ‹€.

μ•žμœΌλ‘œ μ„œλ²„μ— ν•„μš”ν•œ λͺ¨λ“  μž‘μ—…μ€ μ—¬κΈ°μ„œ μ§„ν–‰λœλ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€.

hostname λ³€κ²½ν•˜κΈ°

μ„œλ²„μ— μ ‘μ†ν•˜λ©΄ λ‹€μŒκ³Ό λΉ„μŠ·ν•œ ν”„λ‘¬ν”„νŠΈκ°€ 보인닀.

ubuntu@ip-172-26-1-61:~$

μœ„μ—μ„œ λ…Έλž€μƒ‰μœΌλ‘œ λ§ˆν‚Ήν•œ 뢀뢄은 μ„œλ²„μ˜ 호슀트λͺ…이닀. λ§Œμ•½ μœ„μ™€ 같은 아이피 κΈ°μ€€μ˜ 호슀트λͺ… λŒ€μ‹  μ˜λ―ΈμžˆλŠ” 호슀트λͺ…μœΌλ‘œ λ°”κΎΈκ³ μž ν•œλ‹€λ©΄ λ‹€μŒμ˜ λͺ…λ ΉμœΌλ‘œ 호슀트λͺ…을 λ°”κΏ€μˆ˜ μžˆλ‹€.

호슀트λͺ…을 jumpto둜 λ°”κΎΈλŠ” 예

sudo hostnamectl set-hostname jumpto

호슀트λͺ…을 λ°”κΎΌν›„μ—λŠ” μ„œλ²„λ₯Ό λ¦¬μŠ€νƒ€νŠΈν•΄μ•Ό μ μš©λœλ‹€.

ubuntu@ip-172-26-1-61:~$ sudo reboot

μ„œλ²„ λ¦¬μŠ€νƒ€νŠΈ μ™„λ£Œ 후에 λ‹€μ‹œ μ ‘μ†ν•˜λ©΄ λ‹€μŒκ³Ό 같이 λ³€κ²½λœ ν”„λ‘¬ν”„νŠΈλ₯Ό ν™•μΈν• μˆ˜ μžˆλ‹€.

ubuntu@jumpto:~$

hostname λͺ…령을 μˆ˜ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같이 λ³€κ²½λœ 호슀트λͺ…이 좜λ ₯λœλ‹€.

ubuntu@jumpto:~$ hostname
#
# jumpto

μ„œλ²„ μ‹œκ°„ μ„€μ •ν•˜κΈ°

ν„°λ―Έλ„μ—μ„œ date λͺ…령을 μ‚¬μš©ν•΄ 보자. 그러면 μš°λ¦¬λ‚˜λΌ μ‹œκ°„μ΄ μ•„λ‹Œ UTC μ‹œκ°„μ΄ 좜λ ₯λœλ‹€.

date
#
# Mon Mar 21 03:32:36 UTC 2022

참고둜 UTC μ‹œκ°„μ€ ꡭ제 ν‘œμ€€ μ‹œκ°„μ΄λ―€λ‘œ, SBB κ²Œμ‹œλ¬Όμ˜ 등둝 μ‹œκ°„μ„ μš°λ¦¬λ‚˜λΌ μ‹œκ°„μœΌλ‘œ λ§žμΆ”λ €λ©΄ 섀정을 λ°”κΏ”μ•Ό ν•œλ‹€.

ν•œκ΅­ μ‹œκ°„μœΌλ‘œ μ„€μ •ν•˜κΈ° μœ„ν•΄ λ‹€μŒ λͺ…령을 μˆ˜ν–‰ν•˜μž.

sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

λ‹€μ‹œ date λͺ…령을 μˆ˜ν–‰ν•˜λ©΄ μš°λ¦¬λ‚˜λΌ μ‹œκ°„μœΌλ‘œ 좜λ ₯λœλ‹€. μ—¬λŸ¬λΆ„μ˜ μ‹œκ³„μ™€ λΉ„κ΅ν•˜μ—¬ λ§žλŠ”μ§€ 확인해 보자.

date
#
# Mon Mar 21 12:33:30 KST 2022

μžλ°” μ„€μΉ˜

μŠ€ν”„λ§λΆ€νŠΈλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μžλ°”κ°€ λ°˜λ“œμ‹œ μ„€μΉ˜λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€. μ„œλ²„μ— μžλ°”κ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ java λͺ…령을 μž…λ ₯ν•΄ 보자.

java
# 
# Command 'java' not found, but can be installed with:
# 
# sudo apt install default-jre              # version 2:1.11-72, or
# sudo apt install openjdk-11-jre-headless  # version 11.0.7+10-3ubuntu1
# sudo apt install openjdk-13-jre-headless  # version 13.0.3+3-1ubuntu2
# sudo apt install openjdk-14-jre-headless  # version 14.0.1+7-1ubuntu1
# sudo apt install openjdk-8-jre-headless   # version 8u252-b09-1ubuntu1

μžλ°”λ₯Ό 미리 μ„€μΉ˜ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ μ•„λ§ˆλ„ μœ„μ™€ 같이 μžλ°”κ°€ μ„€μΉ˜λ˜μ§€ μ•Šμ•˜λ‹€λŠ” λ©”μ‹œμ§€κ°€ 좜λ ₯될 것이닀.

μžλ°”λ₯Ό μ„€μΉ˜ν•˜κΈ° 전에 λ‹€μŒκ³Ό 같이 sudo apt update λͺ…령을 μˆ˜ν–‰ν•˜μ—¬ μš°λΆ„νˆ¬ νŒ¨ν‚€μ§€λ₯Ό μ΅œμ‹ μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œν•˜μž.

sudo apt update
#
# Hit:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal InRelease
# Get:2 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
# Get:3 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
# Get:4 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal/universe amd64 Packages [8628 kB]
# Get:5 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
# (... μƒλž΅ ...)

μ΄μ–΄μ„œ λ‹€μŒκ³Ό 같이 μžλ°”λ₯Ό μ„€μΉ˜ν•˜μž.

sudo apt install openjdk-17-jdk
# 
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# (... μƒλž΅ ...)

μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ λ‹€μŒκ³Ό 같이 java -version μ‹€ν–‰ν•΄ 보자.

java -version
#
# openjdk version "17.0.5" 2022-10-18
# OpenJDK Runtime Environment (build 17.0.5+8-Ubuntu-2ubuntu118.04)
# OpenJDK 64-Bit Server VM (build 17.0.5+8-Ubuntu-2ubuntu118.04, mixed mode, sharing)

μžλ°” 17버전이 μ •μƒμ μœΌλ‘œ μ„€μΉ˜λœ 것을 확인할 수 μžˆλ‹€.

ν”„λ‘œμ νŠΈ 디렉터리 생성

그리고 ν™ˆ 디렉터리(/home/ubuntu) ν•˜μœ„μ— sbbλΌλŠ” 디렉터리λ₯Ό μƒμ„±ν•˜μž.

mkdir sbb
ls
#
# sbb

μœ„ ν„°λ―Έλ„μ—μ„œ λ³΄μ΄λŠ” ν”„λ‘¬ν”„νŠΈμ—μ„œ '~'λŠ” ν™ˆ 디렉터리인 /home/ubuntuλ₯Ό μ˜λ―Έν•œλ‹€.


SBB 배포파일 μƒμ„±ν•˜κΈ°

이제 μ„œλ²„μ— μ μš©ν•  SBB λ°°ν¬νŒŒμΌμ„ λ§Œλ“€μ–΄ 보자. SBB λ°°ν¬νŒŒμΌμ€ 단 ν•˜λ‚˜μ˜ jar 파일이며 μ„œλ²„μ—μ„œλŠ” 이 jarνŒŒμΌμ„ μ‹€ν–‰ν•˜μ—¬ SBB μ„œλΉ„μŠ€λ₯Ό ν•  것이닀.

STSμ—μ„œ λ‹€μŒκ³Ό 같이 따라해 보자.

λ©”λ‰΄μ—μ„œ [Run -> Run Configurations]을 μ„ νƒν•˜μž.

그러면 λ‹€μŒκ³Ό 같은 화면이 λ‚˜νƒ€λ‚œλ‹€.
그러면 λ‹€μŒκ³Ό 같은 화면이 λ‚˜νƒ€λ‚œλ‹€.

"Gradle Task"λ₯Ό μ„ νƒν•˜κ³  마우슀 우츑 λ²„νŠΌμ„ 눌러 "New Configuration"을 μ„ νƒν•˜μž.

그러면 λ‹€μŒκ³Ό 같은 화면이 λ‚˜νƒ€λ‚œλ‹€.
그러면 λ‹€μŒκ³Ό 같은 화면이 λ‚˜νƒ€λ‚œλ‹€.
μœ„ ν™”λ©΄μ—μ„œ λ‹€μŒ μˆœμ„œλŒ€λ‘œ μž…λ ₯ν•˜μž.
μœ„ ν™”λ©΄μ—μ„œ λ‹€μŒ μˆœμ„œλŒ€λ‘œ μž…λ ₯ν•˜μž.
  1. Name을 "sbb"둜 λ³€κ²½ν•œλ‹€.
  2. ["Workspace"] λ²„νŠΌμ„ λˆ„λ₯Έλ‹€.
  3. "sbb" ν”„λ‘œμ νŠΈλ₯Ό μ„ νƒν•œλ‹€.
  4. ["Add"] λ²„νŠΌμ„ λˆ„λ₯Έλ‹€.
  5. μœ„μ—μ„œ "Add" λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ "task"λΌλŠ” λ¬Έμžμ—΄μ΄ μž…λ ₯λ˜λŠ”λ° 이 "task" λ¬Έμžμ—΄μ„ "bootJar"둜 λ°”κΎΌλ‹€. ("bootJar"λŠ” λͺ…령어이기 λ•Œλ¬Έμ— λ‹€λ₯Έ μ΄λ¦„μœΌλ‘œ ν•˜λ©΄ μ•ˆλ˜κ³  λ°˜λ“œμ‹œ "bootJar"λΌλŠ” μ΄λ¦„μœΌλ‘œ ν•΄μ•Ό ν•œλ‹€.)
  6. ["Apply"] λ²„νŠΌμ„ λˆ„λ₯Έλ‹€.

μ—¬κΈ°κΉŒμ§€ μ§„ν–‰ν•˜λ©΄ "Gradle Task"에 "sbb" ν•­λͺ©μ΄ μΆ”κ°€λœλ‹€. μœ„ ν™”λ©΄μ—μ„œ 이제 ["Run"] λ²„νŠΌμ„ 눌러 배포 νŒŒμΌμ„ μž‘μ„±ν•΄ 보자.

그러면 STS ν•˜λ‹¨μ— λ‹€μŒκ³Ό 같이 "Gradle Executions" 창이 λ‚˜νƒ€λ‚˜κ³  진행결과가 ν‘œμ‹œλ  것이닀.
그러면 STS ν•˜λ‹¨μ— λ‹€μŒκ³Ό 같이 "Gradle Executions" 창이 λ‚˜νƒ€λ‚˜κ³  진행결과가 ν‘œμ‹œλ  것이닀.

였λ₯˜ 없이 잘 μ‹€ν–‰λ˜μ—ˆλ‹€λ©΄ SBB ν”„λ‘œμ νŠΈ λ””λ ‰ν„°λ¦¬μ˜ ν•˜μœ„μ— build 디렉터리가 생기고 λ‹€μŒκ³Ό 같은 파일이 μƒμ„±λœ 것을 확인할 수 μžˆμ„ 것이닀.

workspace/sbb/build/libs/sbb-0.0.1-SNAPSHOT.jar

μ΄λ•Œ μƒμ„±λ˜λŠ” sbb-0.0.1-SNAPSHOT.jar νŒŒμΌμ΄λ¦„μ€ build.gradle 파일의 version ν•­λͺ©μ΄ κ²°μ •ν•œλ‹€.

파일λͺ…: /sbb/build.gradle

// (... μƒλž΅ ...)

group = 'com.mysite'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

// (... μƒλž΅ ...)

μƒˆλ‘œμš΄ λ°°ν¬νŒŒμΌμ„ 생성할 λ•Œλ§ˆλ‹€ version λͺ…을 λ‹¬λ¦¬ν•˜λ©΄ ν•΄λ‹Ή versionλͺ…μ˜ 배포파일이 생성될 것이닀.


SFTP둜 SBB 배포파일 μ „μ†‘ν•˜κΈ°

이제 μƒμ„±ν•œ sbb-0.0.1-SNAPSHOT.jar νŒŒμΌμ„ 파일질라λ₯Ό 톡해 μ„œλ²„μ— 전솑해 보자.

μœ„ κ·Έλ¦Όκ³Ό 같이 <FontIcon icon="iconfont icon-jar"/> νŒŒμΌμ„ μ„œλ²„μ˜ <FontIcon icon="fas fa-folder-open"/> λ””λ ‰ν„°λ¦¬λ‘œ λ“œλž˜κ·Έ μ•€ λ“œλ‘­μœΌλ‘œ μ—…λ‘œλ“œ ν•œλ‹€.
μœ„ κ·Έλ¦Όκ³Ό 같이 sbb-0.0.1-SNAPSHOT.jar νŒŒμΌμ„ μ„œλ²„μ˜ /home/ubuntu/sbb λ””λ ‰ν„°λ¦¬λ‘œ λ“œλž˜κ·Έ μ•€ λ“œλ‘­μœΌλ‘œ μ—…λ‘œλ“œ ν•œλ‹€.

SBB 배포파일 μ‹€ν–‰ν•˜κΈ°

터미널 ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜μ—¬ λ‹€μ‹œ μ„œλ²„μ— μ ‘μ†ν•˜μž. 그리고 λ‹€μŒκ³Ό 같이 μž…λ ₯ν•˜μ—¬ λ°°ν¬νŒŒμΌμ„ μ‹€ν–‰ν•΄ 보자.

cd sbb
java -jar sbb-0.0.1-SNAPSHOT.jar
# 
#   .   ____          _            __ _ _
#  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
# ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
#  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
#   '  |____| .__|_| |_|_| |_\__, | / / / /
#  =========|_|==============|___/=/_/_/_/
#  :: Spring Boot ::                (v2.6.4)
# 
# 2022-03-21 03:55:28.598  INFO 17474 --- [           main] com.mysite.sbb.SbbApplication            : Starting SbbApplication using Java 11.0.14 on jumpto with PID 17474 (/home/ubuntu/sbb/sbb-0.0.1-SNAPSHOT.jar started by ubuntu in /home/ubuntu/sbb)
# (... μƒλž΅ ...)

λ¨Όμ € cd sbbλ₯Ό μž…λ ₯ν•˜μ—¬ sbb-0.0.1-SNAPSHOT.jar 파일이 μžˆλŠ” λ””λ ‰ν„°λ¦¬λ‘œ μ΄λ™ν•œ 후에 λ‹€μŒμ˜ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ SBB μ„œλΉ„μŠ€λ₯Ό μ‹€ν–‰ν–ˆλ‹€.

java -jar sbb-0.0.1-SNAPSHOT.jar

.sbb-0.0.1-SNAPSHOT.jar νŒŒμΌμ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” μœ„μ™€ 같이 java -jar jar파일λͺ…κ³Ό 같이 μ‹€ν–‰ν•œλ‹€.


SBB ν™•μΈν•˜κΈ°

그리고 μ—¬λŸ¬λΆ„μ˜ μ»΄ν“¨ν„°μ—μ„œ μ›Ή λΈŒλΌμš°μ €λ₯Ό μ‹€ν–‰ν•˜κ³  μ•žμ„œ μ„€μ •ν•œ κ³ μ • IP에 포트 번호λ₯Ό λΆ™μ—¬(http://3.37.58.70:8080) 접속해 보자.

그러면 λ‹€μŒ 화면을 λ³Ό 수 μžˆλ‹€.
그러면 λ‹€μŒ 화면을 λ³Ό 수 μžˆλ‹€.

μ΄μ œλΆ€ν„° λˆ„κ΅¬λ‚˜ μ›Ή λΈŒλΌμš°μ €μ—μ„œ http://3.37.58.70:8080을 μž…λ ₯ν•˜λ©΄ μ—¬λŸ¬λΆ„μ˜ SBB μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. μ—¬λŸ¬λΆ„μ΄ λ§Œλ“  μ„œλΉ„μŠ€κ°€ 세상에 κ³΅κ°œλ˜λŠ” μˆœκ°„μ΄λ‹€. μΆ•ν•˜ν•œλ‹€!

local.mv.db

둜컬 μ»΄ν“¨ν„°μ—μ„œ μƒμ„±ν–ˆλ˜ λ°μ΄ν„°λŠ” 더 이상 보이지 μ•ŠλŠ”λ‹€. μ™œλƒν•˜λ©΄ μ„œλ²„μ—μ„œλ„ H2 λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터 파일인 local.mv.db 파일이 μƒˆλ‘œ λ§Œλ“€μ–΄μ§€κΈ° λ•Œλ¬Έμ΄λ‹€. μ„œλ²„μ—λ„ λ‹€μŒκ³Ό 같이 ν™ˆ 디렉터리에 local.mv.db 파일이 μƒμ„±λœ 것을 확인할 수 μžˆλ‹€.

ls
# 
# local.mv.db  sbb