project

AWS EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐ ๊ณ ์ • IP๋ฅผ ์ด์šฉํ•œ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ฐฐํฌ

nana-log 2024. 1. 13. 15:59

๐Ÿ“ŒEC2(Elastic Compute Cloud)๋ž€?

EC2๋ž€ AWS ์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค๋กœ, ์•„๋งˆ์กด์ด ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋…๋ฆฝ๋œ ์ปดํ“จํ„ฐ๋ฅผ ์ž„๋Œ€ํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • EC2๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , ๋ณด์•ˆ ๋ฐ ๋„คํŠธ์›Œํ‚น์„ ๊ตฌ์„ฑํ•ด ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ธ์Šคํ„ด์Šค ์œ ํ˜•, ์šด์˜์ฒด์ œ, ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€ ๋“ฑ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ, CPU, ์Šคํ† ๋ฆฌ์ง€, ๋ถ€ํŒ… ํŒŒํ‹ฐ์…˜ ํฌ๊ธฐ ๋“ฑ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ํด๋ผ์šฐ๋“œ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์ด๋‹ค.

 

1. AWS EC2

  • AWS์— ์ ‘์†ํ•˜์—ฌ ์„œ๋น„์Šค > EC2์— ๋“ค์–ด์˜จ ๋’ค ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
  • EC2 ์ธ์Šคํ„ด์Šค๋ž€ ๊ฐ€์ƒ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋ฌด๋ฃŒ๋กœ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•œ AWS Linux๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • ์ธ์Šคํ„ด์Šค ์œ ํ˜•์€ ๋ฌด๋ฃŒ๋กœ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•œ t2.micro๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • ํ‚ค ํŽ˜์–ด๋Š” rsa๋กœ ์„ค์ •ํ•œ๋‹ค.

2. Elastic IP ํ• ๋‹น

  • ํƒ„๋ ฅ์  IP๋ฅผ ์„ ํƒํ•˜๊ณ  ํƒ„๋ ฅ์  IP ์ฃผ์†Œ ํ• ๋‹น์„ ์„ ํƒ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ running ec2๋ฅผ ์„ ํƒ์„ ํ•˜๊ณ  ํ• ๋‹นํ•œ๋‹ค.
  • ์ดํ›„ ํ•ด๋‹น EC2์— ์„ ํƒํ•˜๊ณ  ํƒ„๋ ฅ์  IP ํ• ๋‹น์„ ๋ณด๋ฉด ์ถ”๊ฐ€๋œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

3. SSH ํด๋ผ์ด์–ธํŠธ๋กœ ์„œ๋ฒ„ ์ ‘์†

  • mobaxterm์„ ์„ค์น˜ํ•˜์—ฌ ์‰ฝ๊ฒŒ SSH ์—ฐ๊ฒฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Remote host์— ํƒ„๋ ฅ์  IP ๋˜๋Š” PUBLIC IP๋ฅผ ์ž…๋ ฅ์„ ํ•˜๊ณ  Username์— ec2-user๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  • ์ดํ›„ private key์— ec2์— rsa๋กœ ์•”ํ˜ธํ™”๋œ ํ‚ค๋ฅผ ์„ ํƒํ•œ๋‹ค.

4. ๋ณด์•ˆ ๊ทธ๋ฃน ์„ค์ •

5. Docker Compose ์„ค์น˜ ๋ฐ ๋ฐฐํฌ

5-1. Git ์„ค์น˜

  • AWS Linux๋ฅผ ์„ ํƒ์„ ํ•˜๋ฉด Git์„ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค.
#Perform a quick update on your instance:
$ sudo yum update -y

#Install git in your EC2 instance
$ sudo yum install git -y

#Check git version
$ git version

5-2. ๋„์ปค, ์ปดํฌ์ฆˆ ์„ค์น˜ ๋ฐ ์‹œ์ž‘

//๋„์ปค ์„ค์น˜
$ sudo yum install docker
$ docker -v

// ๋„์ปค ์ปดํฌ์ฆˆ ์„ค์น˜
$ sudo curl -L <https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$>(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

// ๋„์ปค ์‹œ์ž‘ํ•˜๊ธฐ
$ sudo systemctl start docker

// ์‹คํ–‰ ๊ถŒํ•œ ์ ์šฉ
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo chmod 666 /var/run/docker.sock
$ sudo dnf install libxcrypt-compat
$ docker-compose -v

5-3. Docker Compose ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” Github ์†Œ์Šค ๋‚ด๋ ค๋ฐ›๊ธฐ

$ git clone <https://github.com/CStudyTeam/CStudy-backend.git>

5-4. Docker ํ™˜๊ฒฝ๋ณ€์ˆ˜

  • ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœํ•  ๋•Œ, DB ๊ณ„์ • ์ •๋ณด๋‚˜ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋ฉด ์•ˆ๋˜๋Š” ๊ฐ’๋“ค์„ ๋”ฐ๋กœ ์ œ์™ธํ•˜์—ฌ ๊ด€๋ฆฌํ•˜์˜€๊ณ  ์ด๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ „๋‹ฌํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋•Œ .ENV ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
$ vi .env

SPRING_DATASOURCE_USERNAME=root
SPRING_DATASOURCE_PASSWORD=1234
  • .env ํŒŒ์ผ์„ ์ƒ์„ฑํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.
$ docker-compose config

5-5. JDK ์„ค์น˜ ๋ฐ jar ํŒŒ์ผ ์ƒ์„ฑ

# aws coreetto ๋‹ค์šด๋กœ๋“œ
$ sudo curl -L <https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm> -o jdk11.rpm

# jdk11 ์„ค์น˜
$ sudo yum localinstall jdk11.rpm

# ๊ถŒํ•œ
chmod +x gradlew

# ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ œ์™ธํ•˜๊ณ , jar ํŒŒ์ผ ๋นŒ๋“œ๋งŒ ์ง„ํ–‰
$ ./gradlew clean build -x test

5-6. Docker ์ด๋ฏธ์ง€ ๋ฐ›๊ณ  Docker Compose ์‹คํ–‰

$ docker-compose up --build

  • ์œ„์—์„œ ์ ์šฉํ•œ Elastic IP๋ฅผ ํ†ตํ•ด ์ ‘์†ํ•˜๊ฒŒ ๋˜๋ฉด, ์ •์ƒ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ ‘์†ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ฐธ๊ณ ์ž๋ฃŒ

https://velog.io/@kyj311/AWS-EC2-์•Œ์•„๋ณด๊ธฐ

https://velog.io/@geon_km/AWS-EC2-์ธ์Šคํ„ด์Šค-์ƒ์„ฑ-๋ฐ-๊ณ ์ •-IP๋ฅผ-์ด์šฉํ•œ-ํด๋ผ์šฐ๋“œ-์„œ๋น„์Šค-๋ฐฐํฌ-Feat.-docker-compose