Django 프로젝트 배포하기

·2024년 12월 22일
0

웹개발 종합

목록 보기
22/23
post-thumbnail

이번에 aws ui 가 리뉴얼 되면서 나도 배포 방법을 리뉴얼해 보려고 한다.

우선 네트워크 존을 생성하기 위해 vpc 를 생성해준다.

VPC 와 서브넷을 생성하는 이유

  • 네트워크 트래픽을 제어하고, 외부에서 접근할 수 있는 자원을 제한할 수 있다. 예를 들어, 방화벽 역할을 하는 보안 그룹(Security Group)네트워크 ACL(Access Control List)로 트래픽을 세밀하게 관리할 수 있다.
  • IP 주소 범위를 선택하고, 라우팅 테이블과 게이트웨이를 직접 설정하여 원하는 네트워크 구조를 설계할 수 있우며, EC2, RDS, Lambda와 같은 리소스가 서로 통신할 수 있도록 네트워크를 구성할 수 있다.
  • 여러 프로젝트 또는 서비스 간의 네트워크 충돌을 방지하기 위해 독립적인 네트워크를 생성할 수 있다.

aws 에서 vpc 서비스를 검색하여 콘솔에 들어간다. 이때 디폴트 vpc 가 나올텐데, 이는 무시해준다. 바로 보이는 [VPC 생성] 버튼을 클릭해주면 나오는 화면에서 이름을 설정해준 뒤

CIDR 블록 범위를 설정해준다.

참고 : CIDR 이란?

왜 CIDR 범위를 설정해야 하는가?

  • 네트워크 구분
    AWS에서 사용하는 VPC는 독립된 네트워크를 생성하므로, 네트워크 범위를 명확히 정의해야 함.
    CIDR 블록을 통해 VPC 내의 IP 주소가 다른 네트워크와 충돌하지 않도록 관리.

  • IP 주소 관리
    CIDR 블록으로 정의된 IP 주소 범위 내에서 EC2 인스턴스, 서브넷 등에 IP를 자동으로 할당.

  • 서브넷 생성
    VPC 내에 서브넷을 만들기 위해 CIDR 블록을 기준으로 서브넷을 나눔.
    예를 들어, 192.168.0.0/16 CIDR 블록을 가진 VPC에서 여러 서브넷(192.168.1.0/24, 192.168.2.0/24 등)을 생성할 수 있음.

  • 트래픽 라우팅
    CIDR 블록을 통해 네트워크 라우팅 테이블을 설정하여 VPC 내부 및 외부 네트워크 간의 트래픽 흐름을 제어.

참고로 VPC 대역을 설정한 후에는 변경이 불가능하므로, 요구사항을 충분히 검토한 후 맞는 크기의 대역을 할당해줘야한다. 설정을 마쳤다면 [VPC 생성] 을 눌러 vpc 를 만들어준다.

다음으로 생성한 vpc 를 클릭하고 작업을 누르면 [vpc 설정 편집] 이란 게 있는데, 그걸 클릭해서 체크박스를 활성화시켜준다.

이걸 활성화시켜야 퍼블릭 IP 주소에 대응하는 DNS 주소를 받아 ip 주소 대신 도메인 이름으로 접근할 수 있고, 나중에 올라갈 리소스들을 호출하는 것 또한 보다 유연하게 할 수 있다.

이제 인터넷 게이트웨이를 vpc 에 붙여줄 것이다. 좌측 VPC 드롭박스에서 '인터넷 게이트웨이' 를 클릭한다. 디폴트 게이트웨이는 마찬가지로 무시하고 [인터넷 게이트웨이 생성] 을 클릭한 뒤 게이트웨이 이름을 설정해준 뒤 게이트웨이 생성을 눌러 게이크웨이를 만들어준다. 처음 만들어준 게이트웨이는 상태가 dettached 라고 되어 있는데, 이는 붙어있는 vpc 가 없다는 걸 말한다.

우리가 할 일은 생성한 게이트웨이를 vpc 에 붙여주는 것이다. 마찬가지로 해당 게이트웨이 클릭 후 [작업] > [vpc 연결] 을 눌러서 vpc 를 연결해준다.

이제 public subnet 2개, private subnet 2개 해서 총 4개의 서브넷을 만들어줄 것이다. 왼쪽에서 서브넷을 클릭 후 [서브넷 생성] 을 누른다.vpc 를 만든 vpc 로 설정해준 뒤 서브넷 이름을 써주고, 가용 영역을 설정해준다. 가용 영역은 될 수 있으면 여러 곳에 분산해주는 게 좋으니 하나는 a 존, 다른 하나는 b 존에 설정해줄 것이다.

다음으로 'IPv4 서브넷 CIDR 블록' 을 10.0.1.0/24 로 설정해준다. 끝났으면 [새 서브넷 추가] 를 눌러 4개 서브넷을 만들어주고 이름을 각각 public1, private1... 등으로 설정해준 뒤, CIDR 도 각각 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24 이렇게 설정해준다.


이렇게 만들고 콘솔에 들어가면 네 개의 서브넷이 만들어진 것이 보인다.

이때 퍼블릭 서브넷은 웹 인스턴스(리소스) 를 올려줄 것이므로 클릭한 다음 작업 > 서브넷 설정 편집 에 들어가 '퍼블릭 IPv4 주소 자동 할당 활성화' 체크박스를 클릭해준다.

이걸 체크하지 않으면 퍼블릭 서브넷임에도 ec2 인스턴스를 올릴 때 자동으로 IP 주소 할당이 되지 않아 외부와 통신할 수 없다.

이제 서브넷을 만들었으니 네트워크 트래픽을 지정해주어야 한다. 즉, 라우팅 테이블을 만들어야 한다. 왼쪽 탭에서 라우팅 테이블을 클릭하고, 마찬가지로 원래 생성되어 있던 라우팅 테이블은 무시한 뒤 [라우팅 테이블 생성] 을 클릭한다.

서브넷이 프라이벳, 퍼블릭으로 있으므로 라우팅 테이블도 각각 하나씩 만들어줄 것이다.

라우팅 테이블로 들어가면 vpc 와 서브넷을 생성하는 과정에서 이미 만들어져 있는 라우팅 테이블이 있을텐데, 이걸 프라이빗 라우팅 테이블로 만들 것이다.

해당 라우팅 테이블을 클릭한 뒤 하단의 서브넷 연결 탭에 들어가서 [서브넷 연결 편집]을 클릭한다.

그러면 이용 가능한 서브넷 하단에 만들어뒀던 서브넷들이 보일텐데, 프라이빗 라우팅 테이블을 만들어줄 것이므로 프라이빗1,2 를 클릭해준다.

[연결 저장]을 눌러서 저장해주면 된다.

다음으로 퍼블릭 라우팅 테이블을 만들기 위해 라우팅 테이블 콘솔에서 [라우팅 테이블 생성] 을 클릭해준다. 이때 퍼블릭이 프라이빗 라우팅 테이블과 다른 점이 있는데, 바로 외부와 통신할 수 있게 게이트웨이를 열어주고 접속 가능한 ip 를 지정해줘야 한다는 점이다.

퍼블릭 라우팅 테이블을 생성했다면 우측 작업 > 라우팅 편집 에서 접속 가능한 IP, 게이트웨이를 설정할 수 있다.

모든 곳에서 접속 가능하게 만들 것이믈 ip는 0.0.0.0/0 으로 설정해주고, 게이트웨이는 생성해두었던 인터넷 게이트웨이로 등록한 뒤 변경 사장을 저장한다.

라우팅 테이블을 생성했다면 private 라우팅 테이블을 선택하고 아래의 서브넷 연결 탭에 들어가서 private 서브넷들을 체크한 다음 명시적으로 서브넷을 연결한다. public 라우팅 테이블과 서브넷에 대해서도 똑같이 해준다.

다음은 직접 웹 인스턴스를 서브넷에 올리기 위해 ec2 를 이용해보려 한다. EC2 서비스 콘솔에 들어가 [인스턴스 시작] 을 클릭한다.

설정은 이전과 비슷하게 해주고, OS 로는 우분투를 사용할 것이다.

마찬가지로 딱히 보안을 신경쓸 건 아니니까 키 페어는 생성하지 않는다.

이때, 우리가 만든 vpc 와 서브넷에 웹을 올려줄 것이므로 네트워크 설정란에서 이를 설정해줄 것이다.

vpc 는 이전에 만들어뒀던 vpc 를 등록해주고, 서브넷은 public 서브넷으로 등록해준다. 다음으로 방화벽은 0.0.0.0/0 그러니까, 모든 ip 에서 접속하도록 허용해준다.

다음으로 ssh 를 통해 서버에 접속해줄테니 ssh 는 당연히 있고, http:// 로도 접속해줄 테니 HTTP 보안 규칙을 추가한 뒤 소스 유형은 [위치 무관] 으로 설정해준다.

이런 설정이 끝났다면 우선 기본적인 아키텍처는 끝난 것이다.

profile
공부 중

0개의 댓글