개발 공부

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 6장 - AWS 서버 환경 만들기 (AWS EC2) 본문

Spring/Spring Boot

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 6장 - AWS 서버 환경 만들기 (AWS EC2)

hyecozy 2022. 8. 29. 17:15

5장 정리글

https://paradiseiswhereiam.tistory.com/138

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 5장 - 책 보면서 다른 부분, 이해 안돼서 찾아본 부

4장 정리글 https://paradiseiswhereiam.tistory.com/136 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 4장 - Mustache를 통한 화면 영역 개발 3장 정리글 https://paradiseiswhereiam.tistory.com/134 스프링 부..

paradiseiswhereiam.tistory.com

 

서버를 24시간 작동되도록 유지하는 방법

1. PC를 24시간 구동시킨다.

2. 호스팅 서비스(Cafe 24, 코리아호스팅 등)을 이용한다.

3. 클라우드 서비스(AWS, AZURE, GCP 등)을 이용한다.

 

1, 2 -> 저렴

3 -> 특정 시간에만 트래픽이 몰릴 경우 유동적으로 사양을 늘릴 수 있으므로 유리

 

✔️클라우드란

인터넷(클라우드)을 통해 서버, 스토리지(파일 저장소), 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것

Infrastructure as a Service (IaaS) 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스. 
가상머신, 스토리지, 네트워크 운영체제 등의 IT 인프라를 대여해주는 서비스
ex. AWS의 EC2, S3 등
Platform as a Service (PaaS) IaaS에서 한 번 더 추상화한 서비스.
그렇기 때문에 많은 기능이 자동화되어 있다.
ex. AWS의 Beanstalk, Heroku
Software as a Service (SaaS) 소프트웨어 서비스
ex. 구글 드라이브, 드랍박스, 와탭

 

✔️AWS 장점

- 첫 가입 시 1년간 대부분의 서비스가 무료 (서비스마다 제한은 있음)

- 클라우드에서는 기본적으로 지원하는 기능이 많아 개인이나 소규모일 때 개발에 좀 더 집중할 수 있음

- 국내 점유율이 높아 자료와 커뮤니티가 활성화되어 있음

 

 

AWS 가입하기

https://aws.amazon.com/ko/

접속 후 무료 계정 만들기

 

무료 계정 생성을 누른다

그럼 뭐 여러가지 개인 정보 입력하라는 말이 나온다.

주소지는 네이버에 영문 주소 검색해서 쓰면 되고 비자나 마스터 카드가 필요한데 돈은 다시 들어온다고 함!

참고로 자기 명의 카드가 아니어도 결제 가능하다.

 

무료 서비스 선택 후 콘솔 로그인 창으로 이동해서 루트 사용자 로그인에 정보 입력 후 로그인

 

그리고 리전을 서울로 바꿔준다

바꿨다면 화면 중앙에 있는 EC2를 클릭

 

 

인스턴스 시작을 누르면 아래와 같은 화면들이 뜰 것이다.

 

➡️AMI (아마존 머신 이미지)를 선택하는 것이 인스턴스 생성의 첫 단계이다.

✔️AMI란

EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어둔 것을 의미한다.

책에서는 아마존 리눅스 1을 사용하라고 되어 있지만 현재 시점에선 1은 아예 선택 사항에 없기 때문에 2를 선택한다.

 

➡️그리고 인스턴스 유형은 t2.micro를 선택한다.

✔️t2는 요금 타입을 이야기하며 micro는 사양을 이야기한다.

 

 

 

 

➡️그다음은 키 페어에 대한 것이다. 

인스턴스로 접근하기 위해서는 pem키가 필요하다. 일종의 마스터 키이므로 유출되어서는 안 된다.

위와 같이 설정한 후, 생성한다. 그럼 pem키가 다운되는 것을 볼 수 있다.

 

 

 

➡️네트워크 설정

위의 화면에서 봐야할 부분은 보안 그룹이다. 보안 그룹은 방화벽을 뜻하며,

서버로 80 포트외에는 허용하지 않는다는 역할을 한다.

기존에 생성된 보안 그룹이 없으므로 생성한다.

✔️유형 항목에서 SSH이면서 포트 항목에서 22인 경우: AWS EC2에 터미널로 접속할 때를 의미한다.

보안을 위해서는 pem키 관리와 지정된 IP에서만 SSH 접속이 가능하도록 구성한다.

 

 

➡️서버 용량을 설정하는 단계이다.

프리티어로 최대 30GB까지 제공받을 수 있으므로 30을 입력한다. 그리고 오른쪽의 인스턴스 시작을 누르면 끝이다.

 

저기 파란색으로 칠해진 부분에 인스턴스 ID가 있다. 누르면 정보가 뜬다.

 

✔️인스턴스 생성 시, 항상 새 IP를 할당하는데 같은 인스턴스를 다시 시작할 때도 새 IP가 할당된다.

매번 접속할 때마다 IP주소를 확인하는 것은 번거로우므로, 매변 변경되지 않고 고정 IP를 가지게 해야 한다.

 

 

➡️EIP 할당

AWS의 고정 IP를 탄력적 IP라고 한다.

인스턴스 페이지 왼쪽 카테고리에서 탄력적 IP를 선택 후 오른쪽 화면의 할당 버튼을 클릭한다.

돋보기 버튼을 누르면 내가 만든 인스턴스를 선택할 수 있다.

그리고 연결 버튼을 누르면 끝이다!

 

 

 

EC2 서버에 접속하기 (Window)

https://www.putty.org/

들어가서 다운로드 PuTTY를 클릭한 후

화면에서 putty.exe와 puttygen.exe를 찾아서 다운로드 한다.

 

그리고 puttygen.exe을 실행시켜 다음 창을 연다.

 

상단 메뉴의 Conversions 탭을 선택하여 아까 인스턴스를 만들 때 자동으로 받아진 (키 이름).pem을 import 한 후,

Save private Key를 클릭해서 ppk 파일을 생성한다.

 

 

 

아마존 리눅스 1 서버 생성 시 꼭 해야 할 설정들 (나는 2밖에 없어 2로 했지만)

1. java 11 설치 (책이랑 다름)

2. 타임존 변경: 기본 서버의 시간은 미국 시간대로 되어 있기 때문에 한국 시간대로 변경

3. 호스트네임 변경: IP만으로는 어떤 서버가 어떤 역할을 하는지 알 수 없으므로 구분하기 위해 호스트네임을 필수로 변경

 

java 11 설치

책과는 다르다. 책은 아마존 리눅스 1을 쓰고 있고 나는 2이므로 자바도 11버전으로 깔아준다

 $ sudo yum install java-11-amazon-corretto

중간에 y 누르고

$ java -version

자바의 버전을 확인하면

11버전으로 잘 깔린 것을 볼 수 있다.

 

 

타임존 변경
sudo rm /etc/localtime
sudo ln -s /user/share/zoneinfo/Asia/Seoul /etc/localtime

ls: invalid option -- '/'
Try 'ls --help' for more information.

가 뜬다면 오타 난 거니까 띄어쓰기랑 / 유무 잘 보시고 다시 입력하시길 

UTC라고 뜨던 시간이 KST로 뜬다. 변경이 잘 된 것이다.

 

Hostname 변경

다시 내용이 바뀌었으므로 책과는 내용이 다르다. 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html

위의 사이트를 참고해서 따라가보자

 

우선 hostname을 업데이트하려면, preserve_hostname cloud-init 설정이 true로 설정되어 있는지 확인해야 한다.

sudo vi /etc/cloud/cloud.cfg

이 명령으로 preserve_hostname 설정이 나열되어 있지 않으면

preserve_hostname: true

파일 끝에 위의 텍스트를 추가한다.

 

그리고 편집 기능을 나와서 (나올 땐 esc 누르고 :wq 입력하면 됨)

 

내가 변경하고 싶은 호스트 네임이 webserver.mydomain.com 라면

sudo hostnamectl set-hostname webserver.mydomain.com

을 입력한다.

그다음 인스턴스를 재부팅하여 새 호스트 이름을 적용한다.

sudo reboot

 

다시 보면 hostname이 IP 주소가 아닌 springboot-webservice로 바뀐 것을 알 수 있다.

이렇게 호스트네임을 등록했다면 한 가지 작업이 더 필요한데, 호스트 주소를 찾을 때 가장 먼저 검색해 보는

/etc/hosts 에 변경한 hostname을 등록하는 것이다.

sudo vim /etc/hosts

이 명령어로 파일을 연다

그럼 또 편집기가 나올 것이다

 

127.0.0.1  localhost localhost. (생략)

::1             localhost6 (생략)

 

이러한 화면이 뜰 텐데, 우리는 ::1 밑에 한 줄을 띄우고 그 다음 줄에

127.0.0.1   등록한 HOST NAME

을 추가할 것이다.

이런 명령어를 쓰는 것이 익숙하지 않았던 나는 위에서도 편집기에서 글자를 칠 때 어려워했었다.

이번 기회에 배우는 거지 뭐!  

o (소문자 O)를 누르면 커서 아래에 행 삽입이 된다. 입력도 가능할 것이다.

입력한 후 esc를 누르고 :wq 입력한 후 빠져나온다.

 

그 다음에

curl 등록한 호스트이름

을 호스트이름이 잘 등록됐는지 확인할 수 있다.

잘못 등록됐다면 찾을 수 없는 주소라는 에러가 발생할 것이고, 잘 등록했다면 아래와 같이 80포트로 접근이 안 된다는 에러가 발생할 것이다.

이렇게 뜨면 성공!

아직 80 포트로 실행된 서비스가 없음을 의미하는데 이뜻은 curl 호스트 이름으로 실행은 잘 되었다~

라는 뜻이다.

 

vi/vim 편집기 명령어 단축어 모음은 아래에서 참고했다

https://iamfreeman.tistory.com/entry/vi-vim-%ED%8E%B8%EC%A7%91%EA%B8%B0-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-%EB%8B%A8%EC%B6%95%ED%82%A4-%EB%AA%A8%EC%9D%8C-%EB%AA%A9%EB%A1%9D

 

Comments