실제 서비스를 배포하기 위해 기존에 heroku로 배포했던 것을 AWS로 다시 배포하려한다.
특별한 패키지 없이 우선 시작은 무료로 해서, 그 한도가 넘을 경우 과금되는 AWS에 비해, 정해진 패키지를 제공해서 원치 않으면 결제가 되지 않은 heroku가 개발 단계에서 테스트및 빌드하기에 용이 했었다.
그러나 실제 배포를 위해서는 heroku는 역시나 한계가 컸고, AWS로 재배포하기로 하였다.
해당 배포 과정에 대한 정리와 이해는 생활코딩 강의를 참고했다.
INTRO
배포 즉, 실제 서비스가 동작하기 위해서 서버 단에서 진행해야 하는 것을 이해하기 위해서는 블로그에 이미 정리해둔 web architecture에 대한 글을 참고한다면 좀 더 이해하기가 쉬울 것이다.
실제 웹구조는 좀 더 복잡하게 돌아가지만, 우리는 기본적인 서버 구조를 구축할 것이므로, 아래의 단계로 서버를 배포해보고자 한다.
Load Balancer(ELB) -> Web server(Nginx or Apache) -> Api server(EC2 instance)
위의 순서는 실제로 브라우저에서 유저의 요청이 들어왔을때 이를 처리하는 통신 과정이지만, 실제 배포과정에서는 EC2 instance를 만드는 것부터 해야한다. 즉 서버가 구동되는 컴퓨터(가상 컴퓨터 EC2 instance)를 준비해야 하는 것이다.
EC2 사용하기
1. 우선 AWS 사이트에서 로그인을 한 후, EC2를 검색하여 해당 서비스 내로 들어가자.
위와 같은 화면이 뜰 것이다. 가장 기본적으로 지역을 설정해야 한다.
즉 내가 컴퓨터를 어디서 빌릴 것인가?를 정하는 것이다. 당연히 한국에서 서버를 가동시키려면 서울로 지역을 설정하는 것이 좋다.
2. 인스턴스 만들기
인스턴스란 내가 빌리는 컴퓨터를 의미한다.
해당 화면에서 인스턴스 시작을 클릭.
그리고 아래 화면이 뜰 것이다. 이는 어떤 환경의 컴퓨터를 빌릴 것인가를 선택하는 것이다.
일반적으로는 우분투환경으로 서버를 만들게 된다.
-> 과금되지 않기 위해 프리티어 기능이 되는 것으로 골라서 셋팅하자!
대표적으로 Linux와 윈도우의 window가 있다.
아래 화면이 뜨고, 내가 빌리려는 컴퓨터의 성능을 선택할 수 있다.
검토 및 시작하기를 바로 누르지 말고, "인스턴스 세부 정보 구성" 을 클릭하자. 그렇다면 아래 화면이 뜰 것이다.
- 인스턴스의 갯수는 내가 빌리려는 컴퓨터의 갯수이다. 기본적으로 당연히 1개를 지정하고, 우선 기본적으로는 추가 설정할 것이 없다.
스토리지 추가를 들어가면, 컴퓨터의 용량을 지정할 수 있다.
태그 부분은 인스턴스에 대한 부가 설명을 지정하는 메모 기능이라고 보면 된다.
보안 그룹 구성은 인스턴스 생성 이후에 설정해보고자 한다.
인스턴스 시작 검토 부분을 누르면 아래와 같은 화면이 뜬다. 바로 시작하기버튼을 클릭하자.
아래와 같이 키페어 생성 혹은 선택 창이 뜬다.
-> 이 때 설치되는 pem 키를 통해서 AWS 서버에 접속하는 것이므로, 관리를 잘 해야한다.
-> 하단의 창에서 키를 생성하거나 만든 후에, 인스턴스 시작을 누른 후,
팝업창이 닫히고 인스턴스 보기를 누르면, 초반에 인스턴스 시작을 눌렀던 화면이 뜨게된다.
-> 방금 내가 만든 인스턴스에는 이름이 없으므로, 설정해주는 것이 좋다.
3. 인스턴스 연결하기
만들어둔 인스턴스들을 볼 수 있는 아래 화면에서 연결하고자 하는 인스턴스를 클릭하여 작업->연결항목으로 들어가자.
아래와 같은 화면이 뜰 것이다.
a. 인스턴스 연결로 연결하기
우선 인스턴스 연결 탭을 통해서는 웹 상에서 바로 연결하고자 하는 서버로 들어갈 수 있게 된다.
연결을 클릭하면 아래와 같은 창이 뜬다
일종의 웹상에서 사용하는 터미널이라고 생각하면 된다.
b. 내 로컬 컴퓨터에서 직접 서버 제어하기 ( SSH 클라이언트 연결)
해당 방법을 사용하기 위해서는 우선 아까 다운 받은 pem 키를 ssh 폴더로 위치를 옮겨주어야 한다.
우선 터미널을 켜고 cd .ssh 명령어를 입력해서 ssh 폴더가 있는지 확인해주가
ssh 폴더 없다면 바탕화면에 .ssh 폴더 만들고 키페어 이동하기
-> 이때 mkdir .ssh/로 폴더를 만들고 (.ssh/해주는 이유는 해당 폴더가 숨겨지기 위해서다.)
그리고 ssh 폴더에 들어가서
mv 명령어를 통해서 키페어를 옮겨도 되고, open . 명령어로 ssh 폴더를 파인더로 연 다음에 마우스로 pem키를 옮겨도 된다.
그리고 아래의 화면의 명령어를 순서대로 내 로컬의 터미널 창에 입력하자.
그러면 내 로컬의 터미널 창이 아래처럼 바뀌고, 서버 구동을 위한 가상 컴퓨터의 터미널을 이용할 수 있는 것이다.
3. 서버 설정 및 사용하기
인스턴스에 접속한 후, 웹서버를 설치해서 누구나 접속할 수 있게 할 것이고 이를 위해 해당 컴퓨터 내의 시스템을 최신 것으로 업데이트 해주기 위해 해당 명령어를 실행한다.
sudo apt update
그리고 웹서버를 설치하게 된다.
웹서버에는 대표적으로 apache와 Nginx가 있다. 이에 대한 설명과 설치 및 사용법은 좀더 자세하게 다뤄보고 현재는
서버 인스턴스를 만든 후에, 방화벽 즉 보안 그룹 설정을 진행해 보겠다.
4. 보안그룹 설정하기
너무 중요한 사항이라 참고한 생활코딩 영상 링크를 남겨두려 한다.
왼쪽의 보안그룹으로 들어가도되고, 내가 사용하고자 하는 인스턴스의 보안그룹을 설정하기 위해선, 해당 인스턴스를 클릭한 후에
하단 창을 보면 보안 탭이 있다. 그 보안 탭의 보안그룹 링크를 클릭하면 내가 사용하고자 하는 인스턴스의 보안 그룹 규칙을 설정할 수 있다.
누가 해당 웹서버에 접속할 수 있는지를 설정할 수 있다.
- 인바운드 규칙 : 외부에서 ec2에 접속하는 것(최소한만 열어두기)
- 아웃바운드 규칙 : ec2에서 외부로 접속하는 것(모두 열어두기)
인바운드 규칙 편집
SSH 접속 유형은 이미 기본적으로 설정이 되어 있으며, 웹서버이므로 HTTP 유형으로 지정하면 80번 포트는 자동으로 설정된다. 그리고 소스는 외부에서 해당 서버로 접속하는 기준을 지정하는 것인데, 모두가 접속할 수 있는 웹서버를 만들려면 0.0.0.0/0 으로 지정하고,
특정 호스트에서만 접속하고자 한다면 CIDR라는 개념에 대해서 공부한 후 별도 설정해주어야 한다.
이렇게 설정하고 난 다음에 public 서버 주소를 입력하면 설치한 웹서버에서 기본적으로 설정한 화면이 뜨게된다.
보안그룹의 type은 내가 만든 서버에 접속하는 유형을 의미한다.
그리고 source는 접속하려는 유형 중에서도 어느 위치 즉, 접속하려는 host 컴퓨터의 위치(IP)를 지정해주는 것이다.
추가적으로 아래와 같이 포트번호도 설정하여 인바운드 규칙을 편집해주면 된다.
이렇게 가장 기본인 서버 컴퓨터 즉 EC2 instance를 만들어 보았다!
실제로 EC2 서버 구축 이후에, 공부하고 다루어야할 부분들이 많으므로 추가적으로 계속 정리할 예정이다
'DevOps' 카테고리의 다른 글
Deploy - AWS API Gateway 사용하기 (0) | 2021.01.06 |
---|---|
Deploy Strategy 정리 (0) | 2021.01.06 |
heroku pipeline (0) | 2020.12.17 |
Web server - apache vs NginX (0) | 2020.11.20 |
Heroku mysql DB 생성해주기 (0) | 2020.11.10 |