본문 바로가기
Code/Python & Django

AWS를 통한 Django 서비스 배포 - 1) EC2, RDS _전반부

by 코드포휴먼 2020. 5. 29.

Django 백엔드를 사용한 서비스를 AWS를 사용해서 배포하고자 한다.

먼저 1단계로, AWS의 EC2, RDS 인스턴스를 통해 개발 서버배포한다.

 

1단계) AWS의 EC2, RDS

EC2 인스턴스와 RDS 인스턴스는 아마존의 VPC(Virtual Private Cloud) 서비스 내에서 가상의 컴퓨터를 임대 받는 것이다.

 

이미지 출처 https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateVPC.html

 

 

AWS의 EC2 인스턴스란?

AWS(아마존 웹서비스)의 EC2는 Elastic Compute Cloud(Amazon EC2) 의 약자다.

컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스인데, 쉽게 생각하면 사용자가 가상의 컴퓨터를 임대받는 것이다.

사용자는 원하는 OS를 선택하고 웹서비스에 필요한 프로그램을 설치하면 된다.

Amazon EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능하다.

AWS의 EC2에서는 인터넷을 통해서 이 컴퓨터에서 접속 할 수 있는 URL(Public DNS)을 제공하는데, 이 URL을 통해서 웹서비스를 운영하거나, 자신이 구입한 도메인을 붙여서 서비스 할 수도 있다.

EC2 상세정보 링크 ↓ 

https://aws.amazon.com/ko/ec2/

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html

 

 

AWS의 RDS 인스턴스란?

아마존의 관계형 데이터베이스 서비스다.

어플리케이션 내에서 관계형 데이터베이스 설정, 운영, 스케일링을 단순하게 하도록 설계된, 클라우드 내에서 동작하는 DB 웹서비스다.

이제부터 지금까지 로컬환경에서 만든 Django 프로젝트를 AWS의 인스턴스를 생성해서 프로그램들을 깔고, 깃을 통해 코드를 올릴 것이다.

그리고 RDS 인스턴스를 통해 데이터베이스를 생성해서 서비스를 배포할 예정이다.

여기까지 진행하게 되면 개발서버를 성공적으로 올리게 되는데, 다음의 7단계를 수행해야 한다.

  1. AWS 회원가입 및 로그인
  2. EC2 인스턴스 생성
  3. 탄력적 IP 할당
  4. EC2 터미널 접속
  5. RDS 인스턴스 생성
  6. RDS 인스턴스와 Django 연동
  7. EC2 터미널 환경 설치 및 개발서버 배포

과정이 길어서 1~4단계는 본 포스팅에, 5~6단계는 다음 포스팅에 나눠 기록한다.

 

 

1. AWS 회원가입 및 로그인

해외 결제가 필요하기 때문에 Visa카드 또는 Master 카드가 필요하다.

처음 가입시 테스트 결제로 1달러 결제되지만 2주 후 자동취소 및 환불되니 걱정말고 가입한다.

그리고 아래 링크를 접속하고, 서비스 찾기에서 EC2를 검색해 EC2 대시보드로 들어간다. 

(상단바 우측의 지역은 서울로 바꿔주고 진행한다.)

https://ap-northeast-2.console.aws.amazon.com/console/home?region=ap-northeast-2#

 


 

2. EC2 인스턴스 생성

인스턴스 시작 버튼을 눌러 생성페이지로 이동한다.

 

 

 

EC2 운영체제 선택하는 화면인데, Ubuntu를 선택하여 진행했다.

 

 

 

인스턴스 유형으로 프리티어를 지원하는 t2.micro를 선택하고, 인스턴스 세부 내부 구성을 클릭한다. 

 

 

 

이 단계에선 디폴트값을 그대로 사용한다. 스토리지 추가를 클릭한다.

 

 

 

크기 기본값이 8GB 로 되어있을텐데, 30GB까지 프리티어로 사용이 가능하므로 30으로 바꿔준다.

그리고 태그 추가 버튼을 클릭한다.

 

 

 

태그는 인스턴스에 할당하는 키 값이다.

여러 인스턴스들이 있을 경우 태그별로 검색하거나 그룹 짓기 편하다.

본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록하고 보안 그룹 구성을 클릭한다.

태그 상세 설명 ↓

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html?icmpid=docs_ec2_console

 

 

 

SSH 22번 포트는 AWS EC2 터미널로 접속할 때를 의미한다. 

  • 소스 > 내 IP를 선택한다. -> 지정된 IP 이외 접근을 차단하기 때문에 0.0.0.0 으로 전체 오픈해도 되지만 보안상 위험할 수 있다.

  • HTTPS와 HTTP는 외부에서 이 사이트에 접근할 유형이다. 80, 443 포트를 열어둔다. (이걸 닫으면 외부에서 접근을 못한다.)

  • 사용자 지정 TCP 8000포트도 추가해준다.

검토 및 시작을 누른다.

 

 

 

시작하기 버튼을 눌러준다.

 

 

 

시작 버튼을 클릭하면 키페어 생성 페이지가 뜬다.

이 키페어를 갖고 있어야만 해당 인스턴스에 접근이 가능하다! 그리고 다시 다운이 불가능하므로 잘 보관해야 한다!  

키페어 다운로드를 클릭하고 인스턴스 시작을 클릭한다.

 

 

 

인스턴스 ID를 클릭하면 생성한 인스턴스 페이지로 이동하게 된다.

 

 

 

이렇게 running 상태가 뜨면 인스턴스가 성공적으로 생성 되고 실행중인 것이다.

 

 

 


 

3. 탄력적 IP 할당

ec2를 중지했다가 다시 실행하면 그때마다 IP가 바뀐다.

탄력적 IP를 할당 받으면 껐다 킬때마다 바뀌지 않는 고정 IP를 받을 수 있다.

(단, 탄력적 IP를 받아 놓고 ec2와 연결 해놓지 않거나 해당 ec2 작동을 중지해두면 돈 나간다 ㅠㅠㅠ )

 

<ec2 중지 전>

중지 전, 우측의 IPv4 퍼블릭 IP54.180.82.80 이다.

 

 

 

<ec2 중지 후>

중지 후, 우측의 IPv4 퍼블릭 IP54.180.83.154 다. (IP 변경 확인 후에는 다시 run 시켜준다.)

참고로, 좌측의 프라이빗 IP는 변경되는 사항이 아니다.

탄력적 IP 할당은 외부에서 접속할 수 있는 퍼블릭 IP를 할당해주는 것에 해당한다.

프라이빗 IP는 AWS 네트워크 내부에서 쓰이는 IP (AWS 컴퓨터들 내에서 식별되는 IP)로 우리가 주로 사용할 일은 없다.

 

 

내 컴퓨터에서 ec2 인스턴스에 접근하려면 퍼블릭 IP를 통해서 접근해야 한다.

두 개의 ec2 인스턴스 간에 통신을 할 때에는(같은 VPC, subnet에 묶여있다면) 프라이빗 IP로도 가능하고, 퍼블릭 IP로도 가능하다.

vpc, subnet 상세설명 ↓

"'안방', '작은방', '큰방'처럼 내부에서 쓰는 주소를 사설아이피 대역이라고 부르며, 내부 네트워크내에서 위치를 찾아갈때 사용한다. 안방이 프라이빗아이피(사설아이피), 우리집 주소가 퍼블릭아이피다."

https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098

아이피 할당 상세설명 ↓

https://freeman549.tistory.com/entry/IP%EC%A3%BC%EC%86%8C%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EC%82%AC%EC%84%A4IP-%EA%B3%B5%EC%9D%B8Ip-IP%EB%8C%80%EC%97%AD%EC%9D%B4%EB%9E%80

 

 

AWS의 고정IP를 Elastic IP (탄력적 IP)라고 한다.

좌측에서 스크롤바를 밑으로 내려 탄력적 IP를 클릭하고 할당한다.

 

 

 

할당받을 퍼블릭 IP 주소가 포함된 퍼블릭 IPv4 주소 풀을 선택하여 탄력적 IP 주소를 할당한다고 나온다.

 

 

 

탄력적 IP 주소 연결을 클릭한다.

 

 

 

인스턴스와 프라이빗 IP주소에 방금 생성한 EC2를 선택하고 연결을 클릭한다.

 

 

 

원래 퍼블릭 DNS가 있던 자리에 탄력적 IP가 연결되었다.

 

 

 


 

4. EC2 터미널 접속

Window 기준으로 다음의 세 방법 중 선택해서 접속할 수 있다.

나같은 경우는 세 번째 방법인 putty를 사용하여 접속했다.

먼저 아래 링크에서 putty와 puttygen을 다운 받는다.

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

 

 

 

puttygen.exe을 실행한다.

1) Load를 클릭하여 ec2 인스턴스를 만들 당시 다운받은 pem키를 로드한다.

2) save private key를 눌러 저장한다. (pem키와 같은 이름, 확장자: ppk)

 

 

 

그리고 putty.exe을 실행한다.

putty의 SSH → Auth 에서 방금 다운받은 private key를 선택한다.

 

 

 

Connection → Data에 username을 ubuntu로 해준다.

 

 

 

마지막으로 Session에 위에서 받은 내 ec2의 탄력적 IP를 입력하고 Open을 클릭한다.

 

 

 

Yes를 눌러준다.

 

 

 

다음과 같은 화면이 나오면 접속에 성공한 것이다.

 

 

 


 

5. RDS 인스턴스 생성

 

다음 포스팅에서 이어진다.

▶다음 포스팅으로 가기

댓글