๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ‹ AWS

[ AWS ] AWS๋ž‘ ์นœํ•ด์ง€๊ธฐ-1 (AWS EC2 ๊ธฐ๋ณธ ๋ฐฐํฌ)

by MuGeon Kim 2023. 4. 7.
๋ฐ˜์‘ํ˜•

 

[ AWS ] ์™œ ๋‚ด๊ฐ€ ๋ฐฑ์—”๋“œ์ธ๋ฐ AWS ํด๋ผ์šฐ๋“œ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”๊ฐ€?

๋‚ด๊ฐ€ ์™œ AWS๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”๊ฐ€? ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ Spring์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์™œ ์ทจ์—…์„ ํ•˜๋ ค๋ฉด AWS๊ฐ€ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜

pos04167.tistory.com

 

1. AWS์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž

์ผ๋‹จ ์‹œ์ž‘์— ์•ž์„œ ์ด๋ฒˆ์—๋Š” AWS์— ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค๋ช…์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ํ๋ฆ„์œผ๋กœ๋Š” Github์— ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ Cloneํ•˜์—ฌ AWS์„œ๋ฒ„์— ๋ฐ›์•„ ํƒ„๋ ฅ์  IP์— ์ ‘์†ํ•˜์—ฌ ์‹คํ–‰ํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

2. AWS ํƒ„๋ ฅ์  IP ์ฃผ์†Œ ์—ฐ๊ฒฐ ๋ฐ ๋ณด์•ˆ ์„ค์ •

 

๊ณ ์ • IP ์„ค์ •

๋งŒ์•ฝ์— ์ง‘ 5๊ฐœ๊ฐ€ ํ•˜๋‚˜์˜ ์ „๋ด‡๋Œ€์— ์—ฐ๊ฒฐ์ด ๋˜์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•˜๋ฉด 5๊ณณ ๋ชจ๋‘ IP๋ฅผ ์ œ๊ณตํ•˜๋Š”๊ฑด ์•„๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ์ง‘์—์„œ ์ง€์†์ ์œผ๋กœ ํ˜น์€ ๋™์‹œ์— ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ†ต์‹ ์‚ฌ๊ฐ€ IP๋ฅผ 5๊ฐœ๊ฐ€ ์•„๋‹Œ 3~4๊ฐœ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„์— ์œ ๋™์ ์œผ๋กœ ๋ถ„๋ฐฐ๋ฅผ ํ•œ๋‹ค. A์ง‘์—์„œ IP๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ A์ง‘์ด ์ข…๋ฃŒํ•˜๊ณ  B์ง‘์—์„œ ์‚ฌ์šฉํ•˜๋ฉด A์ง‘์—์„œ ์‚ฌ์šฉํ•œ IP๋ฅผ B์ง‘์ด ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์œ ๋™ IP๋ผ๊ณ  ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์„œ๋น„์Šค๋Š” ์ด๋Ÿฌํ•œ ์œ ๋™ IP๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ€์ •์ง‘์—์„œ๋Š” IP๊ฐ€ ๋ณ€ํ™”ํ•ด๋„ ์ƒ๊ด€์ด ์—†์ง€๋งŒ ์„œ๋น„์Šค ๋„๋ฉ”์ธ์ด ๋ณ€ํ™”ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์„œ๋น„์Šค๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ณ ์ • IP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

AWS์˜ ๊ธฐ๋ณธ ์„ค์ •์€ ์œ ๋™ IP ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฑธ ๊ณ ์ • IP๋กœ ์„ค์ •์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. - ํƒ„๋ ฅ์  IP ์„ค์ •

EC2 ์ธ์Šคํ„ด์Šค์— ์˜†์— ํ™”๋ฉด์„ ๋ณด๋ฉด ํƒ„๋ ฅ์  IP ์„ค์ •์ด ์žˆ๋‹ค. ํƒ„๋ ฅ์  IP ์ฃผ์†Œ ํ• ๋‹น์„ ์„ ํƒํ•˜๊ณ  ์šฐ๋ฆฌ์˜ ์ธ์Šคํ„ด์Šค์— ์ธ์Šคํ„ด์Šค. ํ”„๋ฆฌ์ด๋น— IP ์ฃผ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ์šฐ๋ฆฌ์˜ EC2์˜ ์ธ์Šคํ„ด์Šค๋Š” ๊ณ ์ • IP๋กœ ์„ค์ •์ด ๋œ๋‹ค.

 

๋ณด์•ˆ

์ธ์Šคํ„ด์Šค์— ๋ณด์•ˆ์„ ๋ˆ„๋ฅด๋ฉด ์•„๋งˆ๋„ ํฌํŠธ ๋ฒ”์œ„ 22 1๊ฐœ๋งŒ ์„ค์ •์ด ๋˜์–ด์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ IP๋ฅผ ์ˆ˜์šฉ์„ ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  ์ธ์›์ด ๋“ค์–ด๋กœ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๋ณด์•ˆ ๊ทธ๋ฃน์„ ํด๋ฆญํ•˜๊ณ  ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ํŽธ์ง‘์„ ๋ˆ„๋ฅด๊ณ  ์•„๋ž˜์˜ ์„ค์ •์„ ์ถ”๊ฐ€๋ฅผ ํ•œ๋‹ค.

ํฌํŠธ๋ฅผ 8080์œผ๋กœ ์„ค์ •ํ•˜๊ณ  0.0.0.00์€ ๋ชจ๋“  ์ธ์›์„ ์„ค์ •ํ•œ๋‹ค. ๋งŒ์•ฝ์— ์ž์‹ ๋งŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ž๊ธฐ IP๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

3. MobaXterm๋ฅผ ์ด์šฉํ•ด EC2 ์ ‘์†ํ•ด์„œ Git Clone ํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ๋ฅผ Cloneํ•˜๊ธฐ ์ด์ „์— ๋ช‡๊ฐ€์ง€ ์„ค์ •์„ ํ•ด์•ผ๋œ๋‹ค.

์ผ๋‹จ ์‹œ๊ฐ„๊ณผ JDK์— ๋Œ€ํ•œ ์„ค์ •์„ ํ•ด์•ผ๋˜๋Š”๋ฐ ์‹œ๊ฐ„์„ ๋ฐ‘์— ์„ค์ •์„ ํ•˜๊ฒ ๋‹ค.

์ผ๋‹จ JDK๋ฅผ ์„ค์น˜๋ฅผ ํ•˜๊ฒ ๋‹ค.

chmod u+x gradlew

sudo apt update

sudo a[t-cache search jdk

sudo apt-cache search jdk | grep openjdk-11

sudo apt install openjdk-11-jdk

java --version

๋ช…๋ น์–ด ์†Œ๊ฐœ

chmod u+x gradlew : gradlew๋ฅผ ํ†ตํ•ด์„œ j์‹คํ–‰ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(.jar) ํ•˜์ง€๋งŒ ์ด ํŒŒ์ผ์—๋Š” ์‹คํ–‰ ๊ถŒํ•œ์ด ์—†์–ด์„œ ์†Œ์œ ์ž ์šฐ๋ถ„ํˆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

sudo apt update : ๋ฉ”๋‰ดํŒ์„ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

sudo apt-cache search jdk: ๋ฉ”๋‰ดํŒ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋๋‚˜๋ฉด ๋ฉ”๋‰ดํŒ ๋ชฉ๋ก์„ ํ™•์ธํ•œ๋‹ค.

sudo apt-cache search jdk | grep openjdk-11 : ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— grep์„ ํ†ตํ•ด jdk๋งŒ ํ™•์ธํ•œ๋‹ค.

sudo apt install openjdk-11-jdk: ์ž๋ฐ”11์„ ์„ค์น˜ํ•˜๋Š” ๋ช…๋ น์–ด

git --version

๋ช…๋ น์–ด๋ฅผ ํ†ตํ•˜์—ฌ git์˜ ๋ฒ„์ „์„ ํ™•์ธํ•œ๋‹ค.

์•„๋ž˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ Clone์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

GitHub - KMGeon/DeployAWS

Contribute to KMGeon/DeployAWS development by creating an account on GitHub.

github.com

git clone https://github.com/KMGeon/DeployAWS.git

๋ช…๋ น์–ด๋ฅผ ํ†ตํ•˜์—ฌ Github์— ์˜ฌ๋ผ์˜จ ํ”„๋กœ์ ํŠธ๋ฅผ CLONE์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ดํ›„ ls -l์„ ํ†ตํ•ด์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ cd๋ฅผ ํ†ตํ•ด์„œ ํด๋”์— ๋“ค์–ด๊ฐ„๋‹ค.

./gradlew clean build

 

 

์‹คํ–‰ ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ์€ gradlew build๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๊ทธ๋ƒฅ ์ด๋ ‡๊ฒŒ ์ ์œผ๋ฉด gradlew๋ฅผ ํŒŒ์ผ์ด ์•„๋‹Œ ์ „์—ญ์ ์ธ ํ™˜๊ฒฝ ๋ณ€๊ตฌ๋กœ ์ธ์‹ํ•œ๋‹ค. ํ˜„์žฌ ํด๋”์— ์žˆ๋Š” ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋นŒ๋“œ ํ•˜๋ผ๊ณ  ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค.

cd {ํ”„๋กœ์ ํŠธ ํด๋”}
./gradlew clean build

# test ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋นŒ๋“œ 
./gradlew clean build -x test

 

jar ์‹คํ–‰

# ๋นŒ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ
cd /build/libs

java -jar app-0.0.1-SNAPSHOT.jar

 

๊ทธ๋Ÿฐ๋ฐ .jar ํŒŒ์ผ์ด 2๊ฐœ๊ฐ€ ์žˆ์„๊ฑฐ๋‹ค.

//์•„๋ž˜ ์ฝ”๋“œ๋Š” JAR ๋นŒ๋“œ ์‹œ์— Plain.jar ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š๊ฒŒ ํ•ด์ฃผ๋Š” ์ฝ”๋“œ
jar{
	enabled=false
}

์œ„์— ์ฝ”๋“œ๋ฅผ build์— ์ถ”๊ฐ€ํ•˜๋ฉด plain.jar๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ์™œ plain.jar ํŒŒ์ผ์„ ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” plain.jar๋Š” ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ดํ›„ build๋ฅผ ์‹œํ‚ค๋ฉด ๊ธฐ์กด์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ์‹คํ–‰์ด ๋œ๋‹ค.

@Slf4j
@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        log.info("=========================");
        log.info(">>>>>ํ…Œ์ŠคํŠธ<<<<<<<<<<");
        log.info("=========================");
        return "<h1>ํ…Œ์ŠคํŠธ</h1>";
    }
}

4. nohup์„ ํ†ตํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๊ธฐ

๊ธฐ์กด์˜ ์‹คํ–‰์„ ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๊บผ์ง€๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰์„ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋ ๊นŒ?

nobup java -jar *.jar &

nohup์„ ํ•˜๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰์ด ๋œ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์ข…๋ฃŒํ•œ ๋’ค ๋‹ค์‹œ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ ‘์†ํ•ด ๋ณด๋ฉด ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ณ  ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํฌํŠธ๋ฅผ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

netstat -nlpt

 

5. ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒํ•˜๊ธฐ

๊ธฐ๋ณธ์ ์œผ๋กœ 8080ํฌํŠธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ PID๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.

ps -ef

 

์ด ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•˜์—ฌ 8080์ด ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” pgrep ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

//์‹คํ–‰ํ•˜๋Š” jarํŒŒ์ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์•„์ค€๋‹ค.
pgrep -f *.jar

[ 1234 ] 

// kill์„ ํ†ตํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒ๋ฅผ ์‹œํ‚จ๋‹ค.
kill -9 1234
๋ฐ˜์‘ํ˜•