Super Kawaii Cute Cat Kaoani
본문 바로가기
⚙️ Back-end/SpringBoot

[Spring Boot] 3주차 스터디 : 6장 AWS 서버 환경을 만들어보자 - AWS EC2

by wonee1 2025. 1. 24.
728x90

✏️ 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 보면서 스터디 한 내용을 정리하였습니다 

https://www.yes24.com/product/goods/83849117

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 예스24

가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링

www.yes24.com

 

 

 

6장 AWS 서버 환경을 만들어보자  - AWS EC2 

 

 


외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수

  • 집에 PC를 구동시킨다
  • 호스팅 서비스 (CAFE 24, 코리아 호스팅 등) 을 이용한다
  • 클라우드 서비스(AWS, AZURE,GCP 등)을 이용한다

일반적으로 비용은 호스팅 서비스나 집 PC가 저렴하지만

특정 시간에만 트래픽이 몰리면?

→ 유동적으로 사양을 늘릴 수 있는 클라우드가 유리

 

💠클라우드란?

  • 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것

💠클라우드의 형태

  1. Infrastructure as a Service(IaaS, 아이아스, 이에스)
  2. Platform as a Service (PaaS, 파스)
  1. Software as a Service(SaaS , 사스)

책에서 진행하는 모든 AWS 서비스는 IaaS를 사용한다

 

 

💜EC2 인스턴스 생성하기


 

 

EC2는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버

AWS에서 리눅스 서버 혹은 윈도우 서버를 사요압니다라고 하면 EC2를 이야기하는 것

  • 인스턴스를 생성하는 첫단계는 AMI를 선택하는 것

 

💠아마존 리눅스 AMI

  • 아마존이 개발하고 있기 때문에 지원받기 쉽다
  • AWS의 각종 서비스와의 상성이 좋다
  • Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다

💠인스턴스 유형

  • 프리티어로 표기된 t2.micro를 선택

 

 

💠스토리지 구성

  • 서버의 용량을 얼마나 정할지 선택하는 단계
  • 30GB 까지 프리티어로 가능
  • 인스턴스로 접근하기 위해서는 Pem (비밀키)가 필요하다

 

AWS EC2 인스턴스는 기본적으로 동적 IP를 사용

따라서 EC2 인스턴스를 시작할 때마다 IP 주소가 변경될 수 있다. 이 경우, 매번 접속해야하는 ip가 변경되면 pc에서 접근할 때마다 ip 주소를 확인해야한다

→ 번거로우므로 인스턴스의 ip가 매번 변경되지 않고 고정 ip를 갖게한다

 

 

💜EIP 할당


 

 

AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다

주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고 연결하면 된다

 

 

 

💜EC2 서버에 접속하기


 

윈도우이기 때문에 putty로 실습을 진행했다

Download PuTTY: latest release (0.82)

 

최신 패키지 설치

 

putty는 pem 키로 사용이 안되며 pem 키를 ppk 파일로 변환을 해야만 한다

puttygen 은 이 과정을 진행해 주는 클라이언트이다

 

 

save private key를 클릭하여 ppk 파일을 생성한다

 

 

putty를 실행하여 다음과 같이 작성한다

  • HostName: username@public_ip 등록
  • Port : ssh 접속 포트인 22등록
  • Connection type : SSH 선택

아까 받은 ppk를 입력한다

 

 

Session 탭으로 이동해서 saved sessions에 현재 설정을 저장할 이름을 등록하고 저장한다

그 다음 open을 누르면 ssh 접속 알림이 뜨는데 accept를 누른다

 

 

 

 

💜아마존 리눅스 1 서버 생성 시 꼭 해야하는 설정


 

 

아마존 리눅스 1 서버를 처음 받았다면 몇 가지 설정들이 필요하다

 

이 설정들은 모두 자바 기반의 웹 애플리케이션 (톰캣과 스프링부트)가 작동해야하는 서버들에선 필수로 해야하는 설정이다

 

 

💠아마존 리눅스 1 서버 설정

  • Java 8 설치
  • 타임존 변경 → 기본 서버 시간은 미국 시간대이므로 한국 시간대로 변경해줘야한다
  • 호스트네임 변경→ 현재 접속한 서버의 별명을 등록. 실무에서는 한 대의 서버가 아닌 수십 대의 서버가 작동되는 데 , IP 만으로 어떤 서버가 어떤 역할을 하는지 알 수 없다. 따라서 이를 구분하기 위해 보통 호스트 네임을 필수로 등록한다

 

  1. Java 8 설치

아마존 리눅스 1의 경우 기본 자바 버전은 7이다

따라서 java 8로 변경해준다

//저장소 업데이트 명령어
sudo yum update -y

//자바 8 설치 명령어
sudo yum install -y java-1.8.0-amazon-corretto-devel


//java 버전 변경
sudo /usr/sbin/alternatives --config java


//java 버전 확인
java -version

 

   2. 타임존 변경

 

EC2 서버의 기본 타임존은 UTC

세계 표준 시간으로 한국의 시간대가 아니며 한국의 시간과는 9시간 차이가 나므로 수정해야함


sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

   3. Hostname 변경

 

각 서버가 어느 서비스인지 표현하기 위해 호스트 네임 변경


sudo vim /etc/sysconfig/network

 

 

다음 명령어로 vim 편집기를 열어 i를 눌러 hostname을 적어준후, esc를 눌러 명령 모드로 이동하여 :w로 저장한다

 

 

변경한 후 다음 명령어로 서버를 재부팅한다


sudo reboot

 

 

그 다음 다음 명령어로 /etc/hosts 파일을 열어 다음과 같은 화면에 등록한 호스트네임을 등록한다

sudo vim /etc/hosts

 

 

 

curl 명령어로 등록한 호스트 네임을 확인한다


curl 등록된 호스트네임

 

잘 등록되었다면 다음과 같이 80 포트로 접근이 안된다는 에러가 발생한다

 

이는 아직 80포트로 실행된 서비스가 없음을 의미한다

→ 즉 curl 호스트 이름으로 실행은 잘 되었음을 의미

 

 

 

728x90