이번 미니프로젝트 조에서 인프라 담당을 맡았다.
때문에 서버 배포 과정을 한번 정리하고 넘어가려고 한다.
VPC(Virtual Private Cloud)는 가상 네트워크의 한 종류로, 아마존이 제공하는 데이터 센터의 한 리전의 자원을 할당받아 생성할 수 있다.
하나의 VPC에서 여러개의 서브넷을 생성하여 서버를 관리할 수 있다.
VPC를 생성할 때 CIDR 표기법을 이용해 VPC의 시작 IP와 크기를 결정하게 된다.
하나의 VPC에 2개의 서브넷을 생성하였다.
VPC는 B Class에 해당하는 10.0.0.0/16이며 서브넷은 C Class에 해당하는 10.0.0.0/24로 생성하였다.
인터넷 게이트는 VPC에 호스팅된 리소스와 외부 인터넷과의 인터넷 통신을 연결해주는 외부 인터넷과의 연결을 담당하는 통로이다.
인터넷 게이트를 생성한 뒤 VPC와 연결해주는 과정을 거친다.
라우팅 테이블이란 목적지 주소를 목적지에 도달하기 위한 경로로 변환시키기 위한 정보가 저장된 테이블이다.
VPC 생성시 기본적으로 VPC의 모든 서브넷끼리 연결하기 위한 메인 라우팅 테이블이 생성된다.
VPC를 외부에서 접근하는 경로를 만들고 싶다면, 별도로 커스텀 라우팅 테이블을 생성하여야 한다.
0.0.0.0/0
은 IPv4의 모든 주소로 해당 대상(인터넷 게이트웨이)와의 연결을 설정한다는 뜻이다.AWS가 지원하는 다양한 운영체제, 서버 스토리지 공간, CPU, 서버 메모리 등을 커스터마이징하여 선택할 수 있다.
생성한 EC2 서버에 접속하기 위해서는 공개키 방식으로 SSH 연결을 사용한다.
만약 키페어가 없으면 이때 개인키를 생성 및 다운로드할 수 있으며, 이 때가 유일하게 개인키를 발급받을 수 있는 기회이다.
키는 openSSH를 사용하는 .pem
개인키와 puTTY를 사용해 연결하는 .ppk
키를 지원한다.
이제 생성할 EC2 인스턴스가 사용할 네트워크를 설정해야한다. 이전 과정에서 생성한 VPC, 서브넷을 선택하면 된다.
또한 외부 인터넷에서 IP 주소를 통해 접속하기 위해서는 퍼블릭 IP 자동 할당을 활성화 하여야 한다.
보안 규칙은 해당 네트워크에 접근할 수 있는 사용자를 규칙 기반으로 설정하는 것이다. 해당 규칙에 포함된 사용자의 접근은 거부된다.
보안 그룹은 보안 규칙을 모아놓은 그룹으로, 한 번 설정해두면 다른 인스턴스에서 보안 그룹을 불러와 사용할 수 있다.
인바운드(외부에서 EC2로 접근)와 아웃바운드(EC2에서 외부로 접근)를 각각 설정할 수 있다.
.ppk
개인키와 puTTY를 사용하여 접근해볼 것이다.Connection > SSH > Auth > Credentials 메뉴에서 개인키 파일을 불러온 뒤 'open'을 누른다.
ubuntu 운영체제의 쉘에 접근하였다.
이제 CLI를 기반으로 서버에서 명령어를 실행하여 서버를 배포하면 된다.
아나콘다 저장소의 파일을 서버컴퓨터에서 wget
명령어를 통해 다운로드 받을 수 있다.
우분투 운영체제가 기본 지원하는 sha
툴을 이용해 다운로드 받은 파일의 유효성 검사를 진행한다. (전송된 파일에 손상이 없는지 확인하기 위해 필요)
유효성 검사결과 문제가 없다면 쉘 스크립트 파일(.sh
)를 실행하여 설치한다.
설치 후 Anaconda3을 초기화할 것임을 묻는데 여기서 conda init
을 입력하면 쉘에서 conda 가상환경이 기본으로 설정되게 된다.
이제 conda 명령어를 이용해 가상환경을 생성하고, WinSCP를 통해 전달한 requirements.txt
의 설치가 가능하다.
모든 준비가 완료되었다면 서버의 실행파일 (이번 과정에서는 manage.py
)을 실행하며 배포 시작한다.
우리의 페이지가 무사 배포되었다.
만약 아이피 주소가 아닌 도메인 주소를 이용하고 싶다면 DNS 서비스를 이용해야 한다.