<aside> 👉 해당 챕터는 21년 3월에 녹화한 MBIT 강의와 동일한 내용이어서 MBIT 영상을 그대로 활용하겠습니다. 문서를 보실 때에는 폴더명에 유의해주세요.

</aside>

1. 배포 전 준비

1.1. 환경 변수 설정

프로젝트의 settings.py 파일에 보면 SECRET_KEYDEBUG 변수가 있습니다.

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '%ljvk*h2sno=wepa5p)dt+c6gtq44@fn^cl=7&+8ypc)k4xe16'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
  1. 컨테이너의 설정으로 들어갑니다. 컨테이너 목록에서 톱니바퀴 아이콘을 누르거나, IDE 실행 화면에서 오른쪽 상단의 컨테이너 정보를 통해 들어갈 수 있습니다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/70f33d5f-d289-4bc9-a5a8-c759f5504033/Untitled.png

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1aa8e7b9-762e-485f-a273-a5e30bfd52da/Untitled.png

  2. 다음과 같이 환경 변수를 등록합니다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b996c64b-2e22-4d8c-903c-22df22229bc4/Untitled.png

  3. settings.py에서 이 환경 변수들을 사용하여 SECRET_KEYDEBUG 값을 정의합니다. 환경 변수의 값들은 os 모듈의 environ을 통해 접근할 수 있습니다.

    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = os.environ['SECRET_KEY']
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True if os.environ['DEBUG'] == 'True' else False
    

    환경변수 값들은 모두 문자열로 저장되기 때문에 True를 넣더라도 bool 타입의 True 가 아니라 문자열 'True'인 것에 유의하세요.

1.2. collectstatic

장고의 runserver 명령을 통해 프로젝트를 실행하였지만, 이는 개발용으로 임시로 쓰는 서버로 실제 배포할 때에는 적합하지 않습니다. 그래서 뒤에 설명될 웹서버라는 것을 사용합니다. 하지만 웹서버를 사용하면 이제 앱마다 가지고 있는 static 파일에 접근하는 django 서버의 기능을 사용하지 못합니다. 그래서 앱 마다 나뉘어져 있는 static 파일들을 한 곳에 모으는 과정이 필요한데 이를 해주는 명령어가 collectstatic입니다.

  1. settings.py에서 STATIC_ROOT 변수에 static 파일들을 모을 경로를 설정합니다.

    STATIC_ROOT = BASE_DIR / 'staticfiles' 
    

    BASE_DIR은 프로젝트 생성 시 자동으로 만들어 준 경로값으로 manage.py가 있는 경로를 가리킵니다. 우리는 BASE_DIR 경로의 staticfiles라는 폴더에 static 파일들을 모을 것입니다.

  2. collectstatic 명령어로 static 파일들을 모읍니다.

    $ python manage.py collectstatic
    

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f96315d7-bba7-4089-96b8-9b0e44fd4d3b/Untitled.png

    그러면 해당 경로에 staticfiles라는 폴더가 생성되고 안에 static 파일들이 모인 것을 확인할 수 있습니다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/eeffa9e5-9797-46dd-aba3-08b71ea800f8/Untitled.png

2. WSGI