중요한 변수를 숨겨야할 때, 사용할 수 있는 환경변수(env)설정

chatgpt의 api key는 사용하면 과금이 되기 때문에 프로그램에 노출되면 그대로 돈 털릴 위험이 있다.

 

비슷하게 노출되면 위험한 정보를 프로그램에 그대로 작성하기 꺼려지는 경우, 환경변수 env를 설정하여

 

해당 정보를 숨기면서 프로그램에 사용할 수 있다

 

1) 패키지 설치

 

pip install python-dotenv

 

 

 

2) 테스트를 위해 fastapi 서버 구축

 

env 설정 테스트를 위해 간단히 fastapi 서버를 구축해본다.

 

 

 

3) .env 파일 생성

 

.env 파일을 생성하고, 숨겨야하는 정보를 작성해준다.

 

 

 

여기에 SECRET_KEY = "taeyeon"해도 상관은 없는듯

 

하지마라는데도 있었는데 해도 에러가 없어

 

 

 

4) main.py에서 설정

 

from dotenv import load_dotenv

 

load_dotenv(".env파일 경로")를 수행하면, .env에서 설정해놓은 모든 환경변수를 로드한다

 

그리고 os.environ["환경변수이름"]을 수행하면, 해당 환경변수 이름에 맞는 값을 가져온다

 

혹은 os.getenv("환경변수이름")도 가능하다.

 

from fastapi import FastAPI
from dotenv import load_dotenv
import os

load_dotenv()
SECRET_KEY = os.environ["SECRET_KEY"]
#SECRET_KEY = os.getenv("SECRET_KEY")

app = FastAPI()

@app.get("/")
async def root():
    return {"message":f"{SECRET_KEY}"}

 

 

서버를 실행하고 확인해본다면... 환경변수 값을 불러와서 잘 적용된다는 것을 확인할 수 있다.

 

load_dotenv()에 경로를 적지 않는다면.. 현재 경로의 .env를 불러오는듯

 

 

 

실제로 숨기는 것이 의미있을려면, .env 파일을 숨겨야 의미가 있겠지

 

실제 github에 push할때는 .gitignore에 .env를 기록하고, push해서 .env파일도 숨겨준다

 

 

 

그리고 실제로 push해서 확인해보면.. .env파일은 존재하지 않는다

 

 

그러면 해당 repo를  clone해서 가지고오면 어떨까

 

.env파일이 없는데... 이래도 동작할까?

 

 

이 상태에서 서버를 켜보면..

 

(requirements.txt)로 freeze했어야했는데.. 그걸 안했네;;

 

할수없이 다음을 차례대로 수

 

python -m venv venv

 

source venv/Scripts/activate

 

pip install fastapi[all]

 

pip install python-dotenv

 

uvicorn main:app --reload

 

 

헉 아무것도 없는데..??

 

당연히 아무것도 없다!

 

.env에 설정한 값들은 노출되면 안되는 값들이니까 gitignore에 설정하여 github에 올리지 않도록 하기 위함이며..

 

.env파일은 개인적으로 가지고 나중에 필요하면 가지고 있는 파일로 재생성해서 사용하든지 해야한다

 

그러니까 github에 올리는 순간 없어지는건 당연한것 

 

그러면 배포할때는 어떻게해야함..?

 

배포서버에 들어가서 직접 생성해야하는듯..?

 

너무 귀찮을것 같은데

 

 

 

 

Fast API 에서 .env 파일로 환경변수 관리하기 (python-dotenv) (tistory.com)

 

Fast API 에서 .env 파일로 환경변수 관리하기 (python-dotenv)

OS가 아닌 FastAPI 프로젝트 폴더단위로 환경변수를 관리하여, FastAPI 서버를 실행시켜 그 환경변수들만 로드하는 것에 대한 방법에 대해 설명한다. FastAPI에 대한 기초적인 지식은 있다고 가정하고

developer-itspjc.tistory.com

 

[FastAPI/Python] FastAPI 프로젝트 배포하기 (tistory.com)

 

[FastAPI/Python] FastAPI 프로젝트 배포하기

Chapter 10: FastAPI 프로젝트 배포하기 이 단원에서는 FastAPI 프로젝트를 배포하는 Best Practice에 대해 배운다. 먼저 환경 변수를 사용해서 configuration을 진행하고, dependency들을 pip로 잘 관리될 수 있게

dev-in-seoul.tistory.com

 

laravel - How do I recover a .env file that was gone after I commited a .gitignore - Stack Overflow

 

How do I recover a .env file that was gone after I commited a .gitignore

I created a branch called chat-feature but when I merged it in my master suddenly I found my .env file is gone..

stackoverflow.com

 

배포시 .env 처리 방법 - 인프런 | 질문 & 답변 (inflearn.com)

 

배포시 .env 처리 방법 - 인프런 | 질문 & 답변

안녕하세요, 제로초님. 지난번에 passport 분기처리 관련해서 질문 드렸었는데, 해결 후에 한가지 궁금한 점이 생겨서 질문드립니다. 현재 .env를 gitignore에서 git으로 add 되지 않도록 처리하고 있는

www.inflearn.com

 

TAGS.

Comments