본문 바로가기
IT & 데이터 사이언스/환경설정 및 기타사항들

[환경설정] 프로젝트에서 .env 파일 이용하기

by 바른 호랑이 2024. 6. 24.
728x90
반응형

안녕하세요. 바른호랑이입니다.

이번 게시글에서는 프로젝트를 진행하는 경우에 .env를 사용하는 이유와 방법에 대해서 알아볼 예정입니다.

웹사이트와 같은 서비스를 개발하다 보면 DB의 이름이나 비밀번호와 같이 개발환경과 운영환경에서 가져가야 하는 값들이 달라지거나 Git과 같은 버전관리 툴에 공유되면 안 되는 민감정보들이 필연적으로 생성되게 됩니다. 개발환경에서는 단순히 값 그 자체를 적어놓아도 문제가 없을 수도 있지만 배포단계에서 값이 바뀌었을 경우, 그에 맞춰 코드를 수정하고 재배포를 해줘야 하는 문제들이 필연적으로 발생하게 됩니다. 특히, Secret Key나 관리자 계정정보와 같은 값들이 노출되면 사이트가 해킹당할 수도 있기에 이와 같은 민감정보들은 반드시 .env와 같은 별도의 파일로 관리해 주는 것이 안전합니다. 

그렇기에 .env파일은 .gitignore상에 등록하여 push가 되지 않게 하고 이후 배포 서버에서 따로 .env파일을 작성하여 사용해야 합니다. 구체적으로 .env를 사용하는 방법은 아래와 같으며, 아래 예시는 Django project 기반임을 참고하시면 되겠습니다. 

 

1. django-environ 설치

pip install django-environ

2. .env 파일 작성 후 프로젝트의 최상위 폴더에 저장

SECRET_KEY={키값}
IP={IP정보}
DEBUG=True

3. 코드에 적용(Django에서는 일반적으로 config-settings에 적용할 수 있음.)

{중략....}

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent.parent

# Add for using .env info
import environ
import os

env = environ.Env(
    DEBUG=(bool, False)
)

environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
# If it is not practice, secret key must be exposed to others.
SECRET_KEY = os.environ.get('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
# os.environ.get(~) returns value as string.(중요!)
# if it is needed to return value as bool, use like under code.
DEBUG = env('DEBUG', default=False)

ALLOWED_HOSTS = [os.environ.get('IP')]

{중략....}
728x90
반응형

댓글