Django 프로젝트를 production 서버로 올려놓을 때는 DB의 패스워드나 Django의 SECRET_KEY 등을 감춰둘 필요가 있다. 이를 위해서는 돌아가고 있는 서버 환경에 변수를 설정해두면 된다. 본래 아마존 EC2와 같은 Linux 환경에서는 터미널에서는 다음과 같이 하면 변수를 설정할 수 있다.
export VAR_NAME=HELLO_WORLD
위와 같이 하거나 아니면 이를 .bashrc 파일에 적어놓고 source .bashrc를 하게 되면 같은 상태로 쓸 수 있게 된다. (확인은 printenv로 하면 된다.)
하지만, uWSGI에서 쓰게 된다면 얘기가 달라진다. http://stackoverflow.com/questions/16792698/os-environ-in-django-settings-py-cannot-get-system-environment-variables-with 여기에서 말하는 것처럼, local 실행 환경에서는 환경 변수가 정해져 있으나, uWSGI는 다른 사용자로 실행시키는 것과 같은 효과가 발생하기 때문에 환경변수를 uWSGI 설정 파일에 해두어야 Django 어플리케이션에서 인식할 수 있다.
/etc/uwsgi/sites/foobar.ini
[uwsgi] ... env=SOME_VAR=foobar ...
위와 같이 변수의 이름을 SOME_VAR로, 해당 내용을 foobar로 설정하게 되면, django 어플리케이션에서는 os.environ['SOME_VAR']로 인식하게 된다. 그렇다면 SECRET_KEY를 저장하고 다음과 같이 하면 되겠다.
settings.py
import os SECRET_KEY=os.environ['SECRET_KEY'] ...
이외에 민감한 정보들도 감춰 놓고 안전하게 개발하자!
'Programming > Django' 카테고리의 다른 글
[Django] Gmail SMTP 보내기 (3) | 2017.04.19 |
---|---|
[Django] 국제화, 현지화. 각국의 언어로 번역되는 웹사이트를 만들려면? (0) | 2017.03.13 |
[Django] Form에서 비밀번호 확인하기 (0) | 2017.03.10 |
[Django] 오픈 소스 기반 웹 소스 코드 'Django Girls Website' 분석기 - 1 (0) | 2017.02.18 |