AWS Lightsail(Nginx - Gunicorn - Django) 구축(2)

흑이·2022년 1월 27일
0
post-custom-banner

Django는 Web Server가 아니라 Python 기반 Web Application Framework이다.

  • Django 프레임워크는 데이터베이스 이론, SQL 문법, HTTP 통신 개념 등

  • 웹 앱의 동작을 책임지는 핵심 기술들에 대한 기반 기술들을 모두 고수준으로 추상화시켜

  • 개발자가 Python 및 Django 지식 만으로 웹 앱을 작성할 수 있게 해주기 때문에 생산성 측면에서 유리하다.


Django 기본 설정 및 DB 연동


프로젝트 마다 독립적인 패키지의 관리를 위해 새로운 가상환경을 생성

  1. 가상환경 생성
  • conda create -n "가상환경 이름" python=3.8
  • conda activate "가상환경 이름"

  1. Django 프로젝트 생성
  • django-admin startproject 프로젝트 이름
  • cd 프로젝트 이름

프로젝트 시작 시 프로젝트라는 이름으로 폴더가 생성된다.

또한 프로젝트 시작 위치에 실행을 시킬 수 있는 manage.py가 생성된다


  • 기본 생성 파일

1) manage.py : 실행시 사용 ( runserver )

2) 프로젝트이름/settings.py : 장고 프로젝트 설정을 하는 곳

3) 프로젝트이름/urls.py : 앱단위 전체 url을 관리하는 곳

4) wsgi.py : 배포관련 파일이 존재하는 곳


  1. Settings.py 설정
  • IP 허용


  • 주석처리 (admin, csrf, auth)
  • 테스트용이기 떄문에 사용하지 않는 부분 주석 처리


  1. urls.py 수정
  • 프로젝트이름/urls.py
  • 아직 app을 생성하지 않았기 때문에 내용을 비워둔다.


  1. my_settings.py 생성(DATABASES, SECRET_KEY)
  • 장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다.
  • 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
  • 별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행합니다.

  • mysqlclient를 사용해서 DB를 연결
  • my_settings.py 파일 내용
  • NAME은 AWS 마스터 데이터베이스 기본 설정 dbmaster
  • USER은 AWS 기본 설정의 dbmasteruser
  • HOST은 AWS의 엔드포인트 주소
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {'charset': 'utf8mb4'}
    }
}
SECRET_KEY = '시크릿키' 

#settings.py에 있는 secret_key 를 사용

  1. settings.py ↔ my_settings.py 연동
from pathlib        import Path #기존에 settings.py 에 있는 코드
from my_settings    import DATABASES, SECRET_KEY

...

DATABASES = DATABASES

SECRET_KEY = SECRET_KEY
  1. corsheaders
  • cross domain 이슈가 발생하지 않도록 헤더에 접근 허락해주는 corsheaders django 앱 추가

  • cors에 대한 정보는 추후에 블로그 글로 정리해야 겠다...

  • pip install django-cors-headers 설치

  • 설치했다면 settings.py에 INSTALLD_APPS 안에 추가

  • middleware도 추가

  • CORS 추가 설정

  • CORS_ORIGIN_ALLOW_ALL이 True 이면, whitelist는 쓰이지 않고, 모든 origin에서의 요청이 허용된다. , Default는 False이다.

  • CORS_ALLOW_CREDENTIALS가 True인 경우, 쿠키가 cross-site HTTP 요청에 포함될 수 있다. 기본값은 False이다.

  • 실제 요청에 허용되는 HTTP 동사 리스트 기본값(ALLOW_METHODS)

  • 실제 요청을 할 때 사용될 수 있는 non-standard HTTP 헤더 목록이다. 기본값(ALLOW_HEADERS)

  • '/' 관련 에러 제거
  • Django 에서는 urls.py 에 url 패턴을 정의
  • 리퀘스트가 들어오는 url 이 urls.py 에 정의되어 있지 않을 경우 주소 뒤에 슬래쉬를 붙여서 리다이렉트를 한다.
  • 주소를 명확하게 설정하기 위함과 리다이렉트에 대한 문제를 없애기 위해
  • False로 수정


  • $ python manage.py runserver 0:8000
  • 성공적으로 진행했다면 장고 기본페이지를 볼 수 있다.

post-custom-banner

0개의 댓글