์ƒํ™ฉ ๊ฐœ์š”

Java + Spring Boot ๊ธฐ๋ฐ˜์˜ ํฌํŠธํด๋ฆฌ์˜ค ํ”„๋กœ์ ํŠธ๋ฅผ AWS EC2 ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ๊ณ , ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜์˜€๋‹ค. 

 

์ฃผ์š” ๋ชฉํ‘œ

- GitHub์— ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ํด๋ก 

- Java17 ์„ค์น˜ ๋ฐ Gradle ๋นŒ๋“œ

- EC2 ์ธ์Šคํ„ด์Šค์—์„œ ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ๋ฐ ๋ฐฐํฌ ํ…Œ์ŠคํŠธ

 

EC2 ํ™˜๊ฒฝ ๋ฐ ์‚ฌ์–‘

 - ์ธ์Šคํ„ด์Šค ํƒ€์ž… : t2.micro

 - ํ”Œ๋žซํผ : Amazon Linux 2023 (์ปค๋„ 6.1 ๊ธฐ๋ฐ˜)

 - ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ : https://github.com/MyYeonbi/spring-portfolio-trilingual.git

 


์ง„ํ–‰ ๋‹จ๊ณ„ ์š”์•ฝ ๋ฐ ๋ฐœ์ƒํ•œ ์ด์Šˆ๋“ค

 

 

1. Git ์„ค์น˜ ๋ฐ ํ”„๋กœ์ ํŠธ ํด๋ก 

yum install -y git
git clone https://github.com/MyYeonbi/spring-portfolio-trilingual.git

- ์„ฑ๊ณต์ ์œผ๋กœ Git ์„ค์น˜ ๋ฐ ํ”„๋กœ์ ํŠธ ๋‹ค์šด๋กœ๋“œ ์™„๋ฃŒ.

 

 

 

2. Node.js ์„ค์น˜

yum install -y nodejs npm
node -v
npm -v

- ๋ฒ„์ „ ํ™•์ธ ๊ฒฐ๊ณผ Node.js ๋ฐ npm ๋ชจ๋‘ ์ •์ƒ ์„ค์น˜.

 

 

 

3. Java 17 ์„ค์น˜

yum install -y java-17-amazon-corretto
java -version

- Java17(Amazon Corretto)์„ค์น˜ ๋ฐ ๋ฒ„์ „ ํ™•์ธ ์„ฑ๊ณต.

 

 

 

4. Gradle ๋นŒ๋“œ ์‹คํ–‰

cd spring-portfolio-trilingual
./gradlew clean build

 

 

 

* ์—๋Ÿฌ ๋ฐœ์ƒ.

> Cannot find a Java installation on your machine (Linux ...) matching: {languageVersion=17, vendor=any vendor, implementation=vendor-specific}

- Gradle์ด "Java Toolchain"์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ๋Š”๋ฐ, ์ ์ ˆํ•œ toolchain ์„ค์ •์ด ์—†์–ด ์ธ์‹ ๋ถˆ๊ฐ€. 

- build.gradle ํŒŒ์ผ์— ๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ :

java {
  toolchain {
    languageVersion = JavaLanguageVersion.of(17)
  }
}

- ์กฐ์น˜ : ์œ„ ์„ค์ •์„ ์ฃผ์„์ฒ˜๋ฆฌ ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•จ์œผ๋กœ์จ Gradle์ด ๋กœ์ปฌ Java17์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋„๋ก ์œ ๋„ํ•จ.

 

 

5. ๋นŒ๋“œ ์žฌ์‹œ๋„ (Gradle ์บ์‹œ ์‚ญ์ œ ํฌํ•จ)

./gradlew --no-daemon clean build --refresh-dependencies

 

๊ฒฐ๊ณผ : ๋ฌดํ•œ ๋Œ€๊ธฐ

- Gradle์ด "CONFIGURING"๋‹จ๊ณ„์—์„œ 10๋ถ„ ์ด์ƒ ๋ฉˆ์ถค

- ์ด์œ  : Gradle Daemon์ด Toolchain ๊ด€๋ จ ์ž๋™ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ๋„ํ•˜๋ฉฐ ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์กŒ์„ ๊ฐ€๋Šฅ์„ฑ. 

- ์กฐ์น˜ : ๊ฐ•์ œ ์ค‘์ง€ ์‹œ๋„ํ•˜๋ ค ํ–ˆ์œผ๋‚˜, Mac์—์„œ EC2 ์ธ์Šคํ„ด์Šค ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง.


์น˜๋ช…์  ๋ฌธ์ œ ๋ฐœ์ƒ : EC2 SSH ์ ‘์† ๋ถˆ๊ฐ€

 

ํ˜„์ƒ 

- EC2 Instance Connect๋กœ ์ ‘์† ์‹œ๋„ ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ๋ฐœ์ƒ :

Failed to connect to your instance
Error establishing SSH connection to your instance. Try again later.

 

 

์›์ธ

- Gradle ๋นŒ๋“œ ๋ฌดํ•œ ๋Œ€๊ธฐ๋กœ ์ธํ•ด CPU 100% ์‚ฌ์šฉ ์ƒํƒœ ์ง€์† -> ์ธ์Šคํ„ด์Šค ๋‚ด๋ถ€ ์ปค๋„ ๋™๊ฒฐ

- ์‹œ์Šคํ…œ์ด ๊ฐ•์ œ ์ข…๋ฃŒ๋˜๋ฉฐ ๋น„์ •์ƒ ์ƒํƒœ๋กœ ์ง„์ž…

 ์ดํ›„ ์ธ์Šคํ„ด์Šค๋ฅผ ์ˆ˜๋™ ์ค‘์ง€ํ•œ ํ›„ ์‹œ์ž‘ํ•˜๋ ค ํ–ˆ์ง€๋งŒ ์‹คํŒจ 

The instance is not in a state from which it can be started.

 

์กฐ์น˜ ํ•„์š” :

1. EBS ๋ณผ๋ฅจ ๋ถ„๋ฆฌ ํ›„ ์ƒˆ ์ธ์Šคํ„ด์Šค์— ๋งˆ์šดํŠธํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ

2 ๋˜๋Š” ๊ธฐ์กด ์ธ์Šคํ„ด์Šค๋Š” ํ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค์— git clone๋ถ€ํ„ฐ ๋‹ค์‹œ ์„ค์ •.


์ •๋ฆฌ : ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•œ ๊ฒƒ vs ํ•ด๊ฒฐ ๋ชป ํ•œ ๊ฒƒ

 

ํ•ด๊ฒฐ๋œ ๊ฒƒ

ํ•ญ๋ชฉ ์ƒํƒœ
Git ์„ค์น˜ ๋ฐ ํ”„๋กœ์ ํŠธ clone ์™„๋ฃŒ
Node.js + npm ์„ค์น˜ ์™„๋ฃŒ
Java 17 ์„ค์น˜ ์™„๋ฃŒ
Gradle ์‹คํ–‰ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ์™„๋ฃŒ

                                                                                                              

 

ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ

ํ•ญ๋ชฉ ๋ฌธ์ œ
Gradle ๋นŒ๋“œ Toolchain ์„ค์ • ๋ฌธ์ œ๋กœ ์ธํ•ด ๋นŒ๋“œ ์‹คํŒจ
Gradle ๋ฌดํ•œ ๋Œ€๊ธฐ  --refresh-dependencies ์˜ต์…˜ ์‹คํ–‰ ์‹œ CONFIGURING์—์„œ ๋ฉˆ์ถค
EC2 ์ธ์Šคํ„ด์Šค ํ˜„์žฌ SSH ์ ‘์† ๋ถˆ๊ฐ€, ๊ฐ•์ œ ์ค‘์ง€ ํ›„ ๋ณต๊ตฌ ์‹คํŒจ

 


๋‹ค์Œ ๋‹จ๊ณ„

 

์˜ต์…˜ 1: EBS ๋ณผ๋ฅจ ๋ถ„๋ฆฌ ํ›„ ๋ณต๊ตฌ

1. EBC ์ฝ˜์†” -> ์ค‘์ง€๋œ ์ธ์Šคํ„ด์Šค -> ์Šคํ† ๋ฆฌ์ง€ ํƒญ์—์„œ ๋ฃจํŠธ ๋ณผ๋ฅจ ํ™•์ธ

2. EBS ์ฝ˜์†”๋กœ ์ด๋™ -> ํ•ด๋‹น ๋ณผ๋ฅจ ์„ ํƒ -> "๋ณผ๋ฅจ ๋ถ„๋ฆฌ"

3. ์ƒˆ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

4. ์ƒˆ ์ธ์Šคํ„ด์Šค์— ์œ„ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜์—ฌ /mnt/recover์— ์—ฐ๊ฒฐ

5. ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋ฐฑ์—…

 

 

์˜ต์…˜ 2: ์ƒˆ ์ธ์Šคํ„ด์Šค์—์„œ ์ดˆ๊ธฐํ™”

yum install -y git java-17-amazon-corretto
git clone https://github.com/MyYeonbi/spring-portfolio-trilingual.git
cd spring-portfolio-trilingual
./gradlew clean build

๋‹จ, build.gradle์—์„œ toolchain ๊ด€๋ จ ์„ค์ •์€ ๋ฐ˜๋“œ์‹œ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๊ฒƒ.


๋А๋‚€ ์  ๋ฐ ๊ตํ›ˆ

- Gradle์˜ toolchain ๊ธฐ๋Šฅ์€ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋Š” ์ž๋™ ๋‹ค์šด๋กœ๋“œ ์„ค์ •์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

- EC2 ์ธ์Šคํ„ด์Šค์˜ CPU๋ฅผ ๊ณ ๊ฐˆ์‹œํ‚ค๋Š” ๋ช…๋ น์€ ๋˜๋„๋ก screen ๋˜๋Š” tmux๋ฅผ ํ†ตํ•ด ๋ณ„๋„๋กœ ์‹คํ–‰ํ•˜๊ณ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ฉด์„œ ์‹คํ–‰ํ•  ๊ฒƒ. 

- ctrl + c ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์—์„œ ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋„ ์น˜๋ช…์ ์ด๋‹ค.

- EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต๊ตฌํ•˜๋ ค๋ฉด "์Šคํ† ๋ฆฌ์ง€ ๋งˆ์šดํŠธ ์ „๋žต"์„ ๋ฐ˜๋“œ๋ฆฌ ์ตํ˜€๋‘ฌ์•ผ๊ฒ ๋‹ค.

 


์ฐธ๊ณ  ์ž๋ฃŒ

- Gradle Toolchains ๊ณต์‹ ๋ฌธ์„œ

- Amazon Linux 2023 Java ์„ค์น˜ ๊ฐ€์ด๋“œ

- EC2 ์ธ์Šคํ„ด์Šค ์ˆ˜๋™ ๋ณต๊ตฌ ๊ฐ€์ด๋“œ

 

์ด๋ ‡๊ฒŒ ๋‚˜๋Š” AWS EC2์—์„œ์˜ ์‹ค์Šต ํ™˜๊ฒฝ ์„ค์ • ์ค‘ ๋ฐœ์ƒํ•œ Gradle ๋นŒ๋“œ ์‹คํŒจ -> ์‹œ์Šคํ…œ ๊ณผ๋ถ€ํ™” -> SSH ์ ‘์† ๋ถˆ๊ฐ€ -> ์ธ์Šคํ„ด์Šค ๋ณต๊ตฌ ์‹คํŒจ๋ผ๋Š” ํ๋ฆ„์„ ์ง์ ‘ ๊ฒช์œผ๋ฉฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์œ„ํ•œ ํ•™์Šต๊ณผ ๊ฒฝํ—˜์„ ์Œ“์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋‹ค์Œ์—” ๋” ์•ˆ์ •์ ์ด๊ณ  ๊ฒฌ๊ณ ํ•œ ๋ฐฐํฌ ์ž๋™ํ™” ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค. 

+ Recent posts