AIVLE TIL ('23.05.17) 7차 미니프로젝트 (3)

cjkangme·2023년 5월 25일
0

에이블스쿨

목록 보기
76/81
post-thumbnail
post-custom-banner

서론

이번 미니프로젝트 조에서 인프라 담당을 맡았다.
때문에 서버 배포 과정을 한번 정리하고 넘어가려고 한다.

AWS 서버 배포

1.VPC 생성

  • VPC(Virtual Private Cloud)는 가상 네트워크의 한 종류로, 아마존이 제공하는 데이터 센터의 한 리전의 자원을 할당받아 생성할 수 있다.

  • 하나의 VPC에서 여러개의 서브넷을 생성하여 서버를 관리할 수 있다.

  • VPC를 생성할 때 CIDR 표기법을 이용해 VPC의 시작 IP와 크기를 결정하게 된다.

2. 서브넷 생성

  • 서브넷 역시 CIDR 표기법을 이용해 크기를 지정할 수 있다. VPC와 ㅗ동일한 크기 역시 설정이 가능하다.

하나의 VPC에 2개의 서브넷을 생성하였다.
VPC는 B Class에 해당하는 10.0.0.0/16이며 서브넷은 C Class에 해당하는 10.0.0.0/24로 생성하였다.

3. 인터넷 게이트웨이 생성

  • 인터넷 게이트는 VPC에 호스팅된 리소스와 외부 인터넷과의 인터넷 통신을 연결해주는 외부 인터넷과의 연결을 담당하는 통로이다.

  • 인터넷 게이트를 생성한 뒤 VPC와 연결해주는 과정을 거친다.

4. 인터넷 게이트웨이 연결

라우팅 편집

  • 라우팅 테이블이란 목적지 주소를 목적지에 도달하기 위한 경로로 변환시키기 위한 정보가 저장된 테이블이다.

  • VPC 생성시 기본적으로 VPC의 모든 서브넷끼리 연결하기 위한 메인 라우팅 테이블이 생성된다.

  • VPC를 외부에서 접근하는 경로를 만들고 싶다면, 별도로 커스텀 라우팅 테이블을 생성하여야 한다.

  • 라우팅 테이블의 라우팅 편집을 통해 VPC와 인터넷 게이트를 연결해준다.
  • 0.0.0.0/0은 IPv4의 모든 주소로 해당 대상(인터넷 게이트웨이)와의 연결을 설정한다는 뜻이다.
  • 여기에 더해 각 서브넷들을 게이트웨이와 연결하여 각 서브넷이 외부 인터넷과 연결되도록 할 수 있다.

5. EC2 인스턴스 생성

  • EC2(Elastic Compute Cloud)는 AWS가 제공하는 컴퓨팅 서비스로 컴퓨팅 자원을 빌려서 사용하는 것이다.

AWS가 지원하는 다양한 운영체제, 서버 스토리지 공간, CPU, 서버 메모리 등을 커스터마이징하여 선택할 수 있다.

키페어 생성

  • 생성한 EC2 서버에 접속하기 위해서는 공개키 방식으로 SSH 연결을 사용한다.

  • 만약 키페어가 없으면 이때 개인키를 생성 및 다운로드할 수 있으며, 이 때가 유일하게 개인키를 발급받을 수 있는 기회이다.

  • 키는 openSSH를 사용하는 .pem 개인키와 puTTY를 사용해 연결하는 .ppk키를 지원한다.

네트워크 설정

  • 이제 생성할 EC2 인스턴스가 사용할 네트워크를 설정해야한다. 이전 과정에서 생성한 VPC, 서브넷을 선택하면 된다.

  • 또한 외부 인터넷에서 IP 주소를 통해 접속하기 위해서는 퍼블릭 IP 자동 할당을 활성화 하여야 한다.

보안그룹 생성 및 보안규칙 추가

  • 보안 규칙은 해당 네트워크에 접근할 수 있는 사용자를 규칙 기반으로 설정하는 것이다. 해당 규칙에 포함된 사용자의 접근은 거부된다.

  • 보안 그룹은 보안 규칙을 모아놓은 그룹으로, 한 번 설정해두면 다른 인스턴스에서 보안 그룹을 불러와 사용할 수 있다.

  • 인바운드(외부에서 EC2로 접근)와 아웃바운드(EC2에서 외부로 접근)를 각각 설정할 수 있다.

  • 위와 같이 지정하면 ssh 통신을 사용한 접근은 오직 개발자 PC에서만 가능하며, 서비스(80번 포트, HTTP 프로토콜)를 통한 접근은 모든 유저에게 허용할 수 있다.

6. ssh 통신 연결

  • 이번 경우의는 .ppk 개인키와 puTTY를 사용하여 접근해볼 것이다.

  • puTTY 설정에서 사용자 계정명과 public ip 주소를 입력한다.
  • 연결 방식은 SSH를 선택한다.

Connection > SSH > Auth > Credentials 메뉴에서 개인키 파일을 불러온 뒤 'open'을 누른다.

ubuntu 운영체제의 쉘에 접근하였다.
이제 CLI를 기반으로 서버에서 명령어를 실행하여 서버를 배포하면 된다.

7. 배포파일 전달 및 배포

  • 이번 과정에서는 WinSCP 파일관리 클라이언트 제품을 통해 서버 파일을 EC2 서버에 전송할 것이다.

WinSCP

  • 윈도우용으로 개발된 오픈소스 SFTP, SCP 및 FTP 클라이언트이다.
  • 주로 로컬 및 원격 저장소간 파일 전송 및 동기화를 위해 사용한다.
  • GUI를 통해 로컬의 파일을 쉽게 관리할 수 있다.

서버 컴퓨터에 아나콘다 설치

아나콘다 저장소

  • 아나콘다 저장소의 파일을 서버컴퓨터에서 wget 명령어를 통해 다운로드 받을 수 있다.

  • 우분투 운영체제가 기본 지원하는 sha 툴을 이용해 다운로드 받은 파일의 유효성 검사를 진행한다. (전송된 파일에 손상이 없는지 확인하기 위해 필요)

  • 유효성 검사결과 문제가 없다면 쉘 스크립트 파일(.sh)를 실행하여 설치한다.

  • 설치 후 Anaconda3을 초기화할 것임을 묻는데 여기서 conda init을 입력하면 쉘에서 conda 가상환경이 기본으로 설정되게 된다.

가상환경 생성

  • 이제 conda 명령어를 이용해 가상환경을 생성하고, WinSCP를 통해 전달한 requirements.txt의 설치가 가능하다.

  • 모든 준비가 완료되었다면 서버의 실행파일 (이번 과정에서는 manage.py)을 실행하며 배포 시작한다.

우리의 페이지가 무사 배포되었다.

만약 아이피 주소가 아닌 도메인 주소를 이용하고 싶다면 DNS 서비스를 이용해야 한다.

post-custom-banner

0개의 댓글