BackEnd/Spring

[SpringBoot] 웹서비스 출시하기 - 1. AWS EC2 구축

Wonol 2021. 4. 10. 22:49
반응형

개인 프로젝트를 진행하면 로컬 개발환경에서만 확인이 됩니다.

누군가에게 공개하기 위해서는 서버에 배포하여 해당 서버(도메인)로 접속해야만 확인할 수 있습니다.

 

이번 포스팅을 통해 개인 프로젝트를 진행한 것을 어디서든 확인 할 수 있도록 AWS 프리티어를 사용하여 서버를 구축하고 만든 프로젝트를 배포하여 웹 서비스를 출시해보려고 합니다.

 

해당 글은 전'우아한 형제들' 현'인프런'의 개발자이신 jojoldu님의 블로그책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다.

해당 글은 Mac OS에서 진행하여, 윈도우에서 개발하시는 분들은 위에 본 블로그를 방문하여 진행해주시면 됩니다.


- AWS에 가입을 하면 1년동안 프리티어를 제공하며, 일정 범위 안에 무료로 서버를 사용할 수 있습니다.

- AWS에 대한 설명 및 회원가입은 생활코딩을 참고해주세요.

 

1. AWS EC2 생성하기

  • 인스턴스 생성

- AWS에 로그인 후 우측 상단에 지역이 서울이 아니라면 대한민국, 서울로 지역을 변경합니다.

- AWS 서비스 EC2를 검색해서 EC2 대시보드 화면으로 이동합니다.

- "인스턴스 시작"을 클릭하여 생성을 시작합니다.

 

- 1단계 : 사용하고자 하는 운영체제를 선택합니다.

  (해당 글에서는 아마존 linux를 사용합니다.)

 

- 2단계 : 인스턴스 유형은 프리티어에서 사용가능한 "t2.micro" 를 선택 후, "다음:인스턴스 세부 정보 구성"을 클릭합니다.

 

- 3단계 : 인스턴스 세부 구성은 기본값 그대로 설정 후 "다음:스토리지 추가"를 클릭합니다.

 

- 4단계 : 저장 용량을 설정합니다. 프리티어는 최대 30GB까지 무료로 사용할 수 있습니다.

- 30GB 설정 후 "다음:태그 추가" 를 클릭합니다.

 

- 5단계 : 다수의 인스터스가 있을 때, 이를 구분할 수 있는 값을 입력합니다.

(프리티어에서는 24시간 가동시 750시간(약 1달)동안 무료이므로 1개의 인스턴스만 사용가능합니다.)

- 사용하고자 하는 이름을 입력 후 "다음:보안 그룹 구성"을 클릭합니다.

 

- 6단계 : 보안 그룹 생성에서는 해당 서버에 접속할 수 있는 IP를 설정합니다.

- SSH, 22포트는 해당 서버에 접속 할 때, 사용합니다.

- SSH란에 접속을 허용하고자 하는 IP를 추가합니다.

   (작업을 진행하는 집, 카페, 회사의 IP를 입력합니다. 내IP 를 선택하시면 자동으로 현재 IP가 입력됩니다.)

중요!!!
AWS 요금이 비정상적으로 청구되는 경우가 이 보안그룹을 잘못설정함으로서 타인이 무단으로 접속하여 발생한 경우입니다.
예를들어, 전체 오픈(0.0.0.0/0, ::/0)하게 된다면, 우리 서버는 타인의 비트코인 채굴 장소가 됩니다.

- HTTPS, HTTP는 우리가 평소 사이트를 접속할때 사용하는 유형이므로, (80, 443) 포트를 열어둡니다.
  (SSH와 다르게 이걸 지정IP로 설정하면 해당 IP에서만 서비스 접근이 됩니다.)

- 모든 설정 후 "검토 및 시작"을 눌러 마지막으로 설정을 검토합니다.

 

- 7단계 : 지금까지 인스턴스 생성을 위한 설정을 마지막으로 검토 합니다.

- 정상적으로 설정이 끝났다면, "시작하기"를 클릭하여 EC2 인스턴스를 생성합니다.

- 시작하기를 클릭하면 키페어 생성 Modal이 등장합니다.

- 새 키 페어 생성을 선택 후, 키 페어 다운로드를 통해 다운로드 받습니다.

중요!!!
이 키페어를 통해 해당 인스턴스에 접근이 가능하므로, 잘 보관해야 합니다.

- 다운 후 "인스턴스 시작"을 클릭합니다.

- 서버로 사용할 인스턴스 생성이 끝이 났고, 해당 인스턴스 ID를 클릭하면, 생성한 인스턴스 페이지로 이동합니다.

- 인스턴스가 실행 중인 것을 확인 할 수 있고, 서버가 할당받은 IP주소 또한 확인 할 수 있습니다.

  (IP주소는 보안에 중요한 것이므로, 혹여 블로그나 git에 올리실 때는 항상 조심해주세요.) 

 

2. 탄력적 IP

- EC2가 할당해준 IP는 고정이 아니고, 인스턴스가 새로 실행될 때마다 새로 발급이 됩니다.

인스턴스가 재기동 될때마다 IP가 새로 발급이 되면, 접속정보가 계속해서 변경이 되므로 도메인 연결을 할 수가 없습니다.
그렇기 때문에, 고정 IP(탄력적 IP)를 할당하여, 생성한 EC2 서버에 고정 IP를 설정하겠습니다.

- EC2 인스턴스 페이지 좌측에서 "탄력적 IP"를 클릭합니다.

- "탄력적 IP 주소 할당"을 클릭합니다.

 - 따로 설정없이, "할당"을 클릭하여, 탄력적 IP를 할당합니다.

- 탄력적 IP가 생성되었습니다.

- 생성한 이 IP를 EC2 인스턴스에 연결합니다.

- 할당된 IP를 클릭하여 상세화면으로 이동합니다.

- "탄력적 IP 주소 연결"을 클릭합니다.

- 연결하고자 하는 인스턴스를 선택 후 "연결"을 진행합니다.

- 다시 EC2 인스턴스에서 탄력적 IP가 할당되었는지 확인합니다.

- 이렇게, 웹서비스에 사용할 EC2 인스턴스(서버)가 생성 되었습니다.

 

3. EC2 인스턴스 접속

- 맥에서 터미널을 실행합니다.

- 로컬 PC에서 외부 서버(EC2 인스턴스)에 SSH로 접속하기 위해선 매번 ssh -i pem 키 외부 IP를 입력해야 합니다.

- 매번 접속할 때마다 입력하기에는 시간이 오래걸리기 때문에, 설정을 통해서 쉽게 접속 가능 하도록  설정하겠습니다.

- 인스턴스 생성 시에 다운로드 받은 pem 파일을 ~/.ssh/ 로 복사합니다.

- 복사한 pem 파일의 권한을 변경합니다.

- chmod 600 본인pem파일위치

- pem키 파일이 있는 ~/.ssh 디렉토리에 config 파일을 생성합니다.
  (아무런 확장자가 없습니다.)

- vi config OR vim config

- 아래와 같이 입력합니다.
  (ex: Host jaewon으로 등록하시면 ssh jaewon 으로 해당 EC2로 접속할수 있게 됩니다.)

vi 에서는 ESC -> i 입력 -> 텍스트 입력 하시면 됩니다.

- HostName에는 할당받은 탄력적 IP 를 쓰시면 됩니다.

Host "본인이 원하는 이름"
         HostName "탄력적IP"
         User "ec2-user"
         IdentityFile "~/.ssh/pem키"

- 작성 후 :wq!(저장&종료) 하여, config 파일 생성된 것을 확인합니다.

   vi 창에서 모든 입력 후, ESC -> :wq! -> 엔터 하시면 저장&종료 됩니다.

- 생성한 config 파일을 통해 EC2 인스턴스에 접속합니다.

- ssh 등록한host 값 (ex: ssh springboot-webservice)

- 서버의 패키지 도구인 yum을 업데이트 합니다.

- sudo yum update

- 설정이 다 끝났습니다.

- AWS EC2 인스턴스를 통해 서비스를 운영할 서버 생성 및 구축이 완료되었습니다.


출처

- https://jojoldu.tistory.com/259?category=635883 

반응형