[Django] 배포를 위한 .env 파일 작성을 해보자.

서론

.env 파일을 사용하는 이유?

웹사이트를 개발하다보면 데이터베이스 저장소의 이름이나 비밀번호, Cors설정 등 로컬 환경에서 개발할 때와 서비스 배포를 할 때 달라지는 값들이 많이 생긴다. 개발 단계에서는 settings/base.py에서 고정 값으로 적어놓아도 문제가 없지만 배포 단계에서는 값이 바뀌었을 때, 코드를 수정하고 재배포를 해줘야하는 문제점이 생긴다. 그리고 만약에 코드가 유출 되었을 경우 서버의 데이터베이스 저장소나 자체 암호화등에 쓰이는 Secret Key등이 노출되어 최악의 경우 사이트가 해킹당하는 문제가 발생할 수가 있다. 그래서 이런 민감한 정보는 따로 .env 파일을 통해 관리해주는 것이 안전할 것이다.

.env 파일은 기본적으로 git에 push 하지 않는다. 배포 서버에서 따로 .env파일을 만들어 배포하면 된다.

본론

1. .env 모듈을 설치

pip install django-environ

Django와 Wagtail의 env 모듈이다.

2. .env 파일 작성

.env 파일

SECRET_KEY='something'
FRONTEND='something'
AWS_BUCKET='something'
...

보통 .env파일에는 Django Secret Key나 데이터베이스 정보등을 담는다.

3. 코드에서 사용

사용방법은 매우 간단하다.

import os

os.environ.get('AWS_BUCKET')

이렇게 하면 .env 파일에 설정해온 변수를 가져올 수 있다.
만약에 변수 설정이 안되어 있을 때, 기본 값을 가져오고 싶다면 다음과 같이 하면 된다.

os.environ.get('AWS_BUCKET', 's3.something.url.com') # AWS_BUCKET이라는 환경변수가 없거나 Null일 경우 s3.something.url.com을 사용한다.

4. 경로를 설정하여 가져올 경우

import environ

env = environ.Env(
    # set casting, default value
    DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env(env_file=os.path.join(BASE_DIR, ".env"))

env('SOMETHING')

으로 .env을 읽을 수 있다.

결론

Django에서 .env 설정하는 방법에 대해서 알아봤다. 간단하지만 너무나도 중요하다. 민감한 정보는 전부 .env파일에 작성하여 우리의 소중한 데이터를 보호하자.

좋은 웹페이지 즐겨찾기