프로젝트 세팅을 하고 깃허브에 업로드하던 도중 settings.py 에 있는 Django secret key, DB 관련된 정보등이 깃허브에 업로드 되고 말았다. 나는 헐레벌떡 가서 커밋 흔적을 없앴고 협업을 하기에 Settings.py를 업로드를 안할 수도 없었기에 이런 일을 어떻게 방지할 수 있을까 하여 이 글을 작성한다.
env 파일은 환경변수 파일을 의미한다. 애플리케이션이 실행될 때 넘기고 싶은 특정 값을 담고 있는 변수들이 기록되어있다.
이제 이 .env 파일을 통하여 secretkey, database 관련 정보들을 빼낼 것이다.
우선 django-environ
이란 라이브러리를 다운받아줘야한다.
pip3 install django-environ
를 다운 받은 후 settings.py 에 import 를 해준다.
from import environ
import os # os 도 같이 활용되니 이 친구도 같이 Impor 해주자
아래의 코드는 .env 를 settings.py 에서 읽을 수 있도록 하는 코드이다. 이 코드를 settigns.py 상단에 적용시켜준다.
# BASE_DIR은 기본적으로 선언되어있는 변수이다.
BASE_DIR = Path(__file__).resolve().parent.parent
env = environ.Env(DEBUG=(bool, True))
environ.Env_read_env(
env_file = os.path.join(BASE_DIR, '.env')
)
.env 파일을 만들어 아래와 같이 선언해준다. 이때 .env 는 프로젝트 최상위 루트에 위치해야하며 (manage.py 와 같은 경로) 변수명과 = value 사이에 공백이 없도록한다.
SECRET_KEY='djfkladsjflkajdsklfjlkadjfl;ajfl;adjfjs'
위의 단계들을 다 수행했다면 SECRET_KEY=env('SECRET_KEY')
이런식으로 기존 SECRET_KEY 를 대체해준다.
이후 저장하고 python3 manage.py runserver
로 실행한다면 오류 없이 잘 실행될 것이다.
(실행이 안된다면 .env의 경로 문제나 오타다!)