기초구조

Django 서버 기본 틀

  1. 웹 클라이언트가 웹 서버(Nginx)에 HTTP 프로토콜로 요청(request)를 보낸다.

  2. CSS, JavaScript, Images, PDF 문서 등 파일 시스템에 저장되어있는 각종 정적 파일(static file)들은 웹 서버가 바로 처리할 수 있다.

  3. 정적 파일 외의 동적인 부분은 웹 서버가 처리할 수 없으므로 웹 어플리케이션 서버(uWSGI)에게 위임한다. 웹 서버가 웹 어플리케이션 서버에게 요청을 위임하고, 웹 어플리케이션 서버가 이를 대행해서 웹 서버에게 응답해주는 관계다. 이 사이를 매개해주는게 바로 앞에서 설명한 Unix Socket이다. 웹 서버와 웹 어플리케이션 서버 사이의 통신도 HTTP 프로토콜을 사용할 수 있지만, 같은 OS상에 존재하는 두 개체이므로 더 빠른 uwsgi 프로토콜을 사용한다.

  4. 웹 클라이언트가 요청한 HTTP 프로토콜의 메시지를, Python call로 변환해줘야 Python으로 기술된 어플리케이션이 동작할 수 있다. Python에서는 이 매핑 관계로 WSGI를 표준으로 사용한다. WSGI는 Web Server Gateway Interface의 약자이다. uWSGI는 이 WSGI 표준의 구현이라고 이해하면 된다. uWSGI는 웹 서버에게서 받은 HTTP 요청을 Python call로 변환해서 Django 프레임워크와 협업한다.

  5. Django 프레임워크는 사용자가 Python으로 작성한 어플리케이션 코드를 실행한다.

  6. 또한 필요하다면 ORM(Object-Relational Mapping)을 사용해서 DB에서 데이터를 읽거나 쓴다. 프레임워크가 제공해주는 강력한 기능 중 하나가 ORM이라고 생각한다. SQL 문법을 몰라도, Python 코드로 DB를 다룰 수 있다.

출처

Django AWS EC2로 배포하기

[STEP1] AWS 가입하기

  1. AWS 사이트에 접속합니다. …
  2. 이메일 주소, 암호, 암호확인, AWS 계정 이름을 입력 하고 [동의하고 계정 만들기]를 클릭합니다.
  3. 해당 정보를 입력합니다. …
  4. 결제 정보를 입력합니다. …
  5. 전화번호를 입력하고 인증을 마무리 합니다.

[STEP2] EC2 (가상 서버) 생성하기

  1. AWS 접속 후 로그인

  2. 오른쪽 위에 서울 선택 & 왼쪽상단 Services 클릭

  3. 클라우드 서버를 생성하기 위해 EC2 를 클릭한다.

  4. 인스턴스 시작 클릭

  1. 어떤 인스턴스를 실행할지 Ubuntu를 선택 (다른 환경 선택 가능)

  2. 인스턴스 유형은 프리티어에서 사용가능한 두번째 것을 선택하고 ‘검토 및 시작’을 클릭.

  1. 다음 화면에서는 ‘시작하기’를 누른다.

  2. '새 키 페어 생성'을 선택하고 ‘키 페어 이름’에 임의의 텍스트를 입력
    그 다음 '키 페어 다운로드'를 클릭 (이 파일은 한번만 받을 수 있으니 잘 챙겨두자.)

  1. 인스턴스 시작을 누르면 시작됨(제대로 시작하기까지는 시간이 좀 걸린다)

  2. 탄력적 ip 생성 + 연결(안하셔도 가능)

주의
프리티어에서 Elastic IP 1개를 무료로 사용할 수 있습니다.
하지만 Elastic IP는 EC2에 연결해두지 않으면 요금이 청구됩니다.
ip가 부족한 상황에서 Elastic ip를 만들어두고 EC2에 연결하지 않으면 ip가 만들어져 있지만 사용되지 않고 있으므로 요금이 청구됩니다.
또한, EC2에 연결해두었더라도 EC2가 stop되어있는 상태라면 요금이 청구됩니다.

[STEP3] SSH 를 사용해서 가상 서버 접속하기

cf) SSH란?

mac에 경우

  1. 터미널을 실행하여 private 키를 저장했던 위치로 디렉토리를 이동시킨다.
  • cd ~~~ 이용
  1. chmod를 이용해서 private 키를 공개적으로 보지 못하게 한다.
  • “chmod 400 DjangoServer.pem”
  1. “sudo ssh -i PATH/DjangoServer.pem ubuntu@PUBLIC_DNS”
  • PATH는 pwd했을 때 뜨는 경로 대신 채워주면됨
  • PUBLIC_DNS는 EC2-실행중인 인스턴스 들어가면 볼 수 있음.
  1. 클라우드 서버에 접속이 되면서 커맨드 창이 열림

Window에 경우
putty 프로그램 사용 - putty.exe과 puttygen.exe 다운로드

  1. Puttygen을 통해 public key -> private key

  1. putty.exe를 통해 접속하기

[STEP4] 보안그룹 설정


가상서버 : CPU와 메모리를 가진 클라우드 내 서버
인스턴스 (instance) : AWS에서 가상 서버를 부르는 용어
EC2 (Elastic Compute Cloud) : 가상 인스턴스를 운영하는 서비스
보안 그룹(security group) : 인스턴스에 대한 트래픽을 제어하는 가상 방화벽 역할
IAM (Identity and Access Management) : 사용자 엑세스 및 암호화 키 관리
관리 콘솔 : AWS 서비스를 모두 관리하는 사용자 인터페이스