Django 프로젝트를 배포하기 전에 프로덕션 환경에서 잠재적인 문제를 방지하기 위해 몇 가지 주요 구성과 설정이 올바르게 적용되었는지 확인하는 것이 중요합니다. 이에 대해서 공식 도큐먼트에서 “장고 배포 전 체크리스트 (feat. 장고 check )” 를 따로 정리해 놓았는데요.
이번 포스트에서는 해당 내용을 정리해보았습니다.
장고 check 명령어
Django의 check 명령은 전체 Django 프로젝트에서 일반적인 문제를 확인하는 데 사용됩니다. 이 명령은 애플리케이션을 배포할 때 문제를 일으킬 수 있는 모델 정의, 설정 구성 및 기타 잠재적 함정과 관련된 문제를 식별하는 데 특히 유용합니다.
python manage.py check
프로덕션 환경에서 권장되는 검사는 –deploy 옵션을 통해서 제공합니다.
해당 검사는 로컬 개발 환경 보다는 실제 배포 환경에서 테스트하면 좋을 것 같습니다.
python manage.py check --deploy
실제 로컬 개발환경에서 check –deploy를 실행하니까 아래와 같은 많은 보안 이슈들을 알려줍니다.
장고 check 명령어가 확인하는 항목들
모델
- 잘못된 기본값이나 모델 관계의 필드 누락과 같은 필드 정의 오류를 확인합니다.
- 고유 제약 조건이 올바르게 정의되었는지 확인합니다.
- 모든 모델 필드가 올바르게 구성되었는지 확인합니다.
settings.py
- 데이터베이스 연결, 정적 파일 및 미디어 파일과 관련된 설정의 유효성을 검사합니다.
- SECRET_KEY, ALLOWED_HOSTS, DEBUG와 같은 중요한 설정이 있는지 확인합니다.
- DATABASES 설정이 올바르게 구성되었는지 확인합니다.
URL 구성
- URL 패턴이 올바르게 정의되어 있고 참조된 모든 보기가 존재하는지 확인합니다.
- URL 네임스페이스에 잠재적인 문제가 있는지 확인합니다.
Middleware
- 모든 미들웨어 클래스가 올바르게 지정되고 존재하는지 확인합니다.
- 미들웨어가 올바르게 주문되고 구성되었는지 확인합니다.
보안
- SECURE_SSL_REDIRECT, SESSION_COOKIE_SECURE, CSRF_COOKIE_SECURE 등 보안 관련 설정을 검증합니다.
- X_FRAME_OPTIONS 설정이 올바르게 구성되었는지 확인합니다.
배포를 위한 settings.py 관리
프로젝트의 소스 코드를 공개하는 경우 일반적으로 개발에 적합한 settings을 게시하고
프로덕션에는 비공개 settings 모듈을 사용하는 것을 추천 합니다.