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

cjkangme·2023년 5월 25일
0

에이블스쿨

목록 보기
76/81
post-thumbnail

서론

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

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 서비스를 이용해야 한다.

0개의 댓글

관련 채용 정보