Tr_Code/ENV_SETUP_GUIDE.md

218 lines
4.7 KiB
Markdown

# 🔧 환경 변수 설정 가이드
## 📍 Flask 백엔드 `.env` 파일 설정
### ⚠️ 중요사항
**`SECRET_KEY`는 Flask 백엔드의 `.env` 파일에 설정합니다!**
```
Flask 백엔드: /home/ckh08045/Tr_Code/.env ← SECRET_KEY 여기에!
TWA 프론트엔드: /home/ckh08045/Tr_Code/twa-frontend/.env ← SECRET_KEY 불필요
```
---
## 🚀 빠른 설정 (3단계)
### 1단계: .env 파일 생성
```bash
cd /home/ckh08045/Tr_Code
cp env.example .env
```
### 2단계: SECRET_KEY 생성
터미널에서 실행:
```bash
python -c "import secrets; print(secrets.token_hex(32))"
```
출력 예시:
```
a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
```
### 3단계: .env 파일 수정
생성한 `.env` 파일을 열어서 `SECRET_KEY` 값을 변경:
```bash
# 변경 전
SECRET_KEY=dev-secret-key-change-in-production
# 변경 후 (위에서 생성한 키 사용)
SECRET_KEY=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
```
---
## 📝 .env 파일 전체 예시
**파일 위치**: `/home/ckh08045/Tr_Code/.env`
```bash
# Supabase 설정 (Docker 기반)
SUPABASE_URL=http://localhost:8000
SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU4NTUxNjY2LCJleHAiOjQxMDI0NDQ4MDB9.jMCGL3Q-N2o_l7JQE_HrO7Uoct86CMgLsVxpabisG4I
# Flask 세션 보안 키 (반드시 변경!)
SECRET_KEY=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
# Kong Basic Auth (선택사항 - 사용하지 않으면 비워두기)
SUPABASE_BASIC_USER=
SUPABASE_BASIC_PASSWORD=
# Flask 서버 포트
PORT=5000
```
---
## ✅ 설정 확인
### 1. .env 파일 존재 확인
```bash
ls -la /home/ckh08045/Tr_Code/.env
```
### 2. SECRET_KEY 설정 확인
```bash
grep SECRET_KEY /home/ckh08045/Tr_Code/.env
```
**올바른 설정**:
```
SECRET_KEY=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
```
**잘못된 설정** (기본값 그대로):
```
SECRET_KEY=dev-secret-key-change-in-production ← 변경 필요!
```
### 3. Flask 앱 실행
```bash
cd /home/ckh08045/Tr_Code
python app.py
```
정상 실행 시 출력:
```
* Running on http://0.0.0.0:5000
```
---
## 🔐 보안 체크리스트
### 개발 환경
- [x] `.env` 파일 생성
- [x] `SECRET_KEY` 값 변경 (기본값 사용 금지)
- [x] `SUPABASE_URL` 확인 (Docker: `http://localhost:8000`)
- [x] `.env` 파일이 `.gitignore`에 포함되어 있는지 확인
### 프로덕션 환경
- [ ] `SECRET_KEY`를 강력한 랜덤 키로 변경
- [ ] `SUPABASE_URL`을 프로덕션 URL로 변경
- [ ] `SUPABASE_ANON_KEY`를 프로덕션 키로 변경
- [ ] `.env` 파일 권한 설정 (`chmod 600 .env`)
- [ ] 환경 변수를 시스템 환경 변수로 설정 (선택사항)
---
## 🛠️ 트러블슈팅
### 문제: "세션이 유지되지 않음"
**원인**: `SECRET_KEY`가 설정되지 않았거나 기본값 사용
**해결**:
```bash
# 1. SECRET_KEY 확인
grep SECRET_KEY /home/ckh08045/Tr_Code/.env
# 2. 새 키 생성
python -c "import secrets; print(secrets.token_hex(32))"
# 3. .env 파일에 설정
nano /home/ckh08045/Tr_Code/.env
```
### 문제: "Supabase 연결 실패"
**원인**: `SUPABASE_URL` 또는 `SUPABASE_ANON_KEY` 오류
**해결**:
```bash
# 1. Docker Supabase 상태 확인
docker ps | grep supabase
# 2. Kong Gateway 포트 확인 (기본 8000)
curl http://localhost:8000/rest/v1/
# 3. .env 파일에서 URL 확인
grep SUPABASE_URL /home/ckh08045/Tr_Code/.env
```
### 문제: ".env 파일을 찾을 수 없음"
**원인**: 잘못된 위치에 .env 파일 생성
**해결**:
```bash
# Flask 백엔드 디렉토리로 이동
cd /home/ckh08045/Tr_Code
# .env 파일 생성
cp env.example .env
# 파일 위치 확인 (app.py와 같은 디렉토리에 있어야 함)
ls -la | grep -E "(app.py|.env)"
```
---
## 📚 참고
### Flask와 TWA 프론트엔드의 환경 변수 비교
| 항목 | Flask 백엔드 | TWA 프론트엔드 |
|------|-------------|---------------|
| 파일 위치 | `/home/ckh08045/Tr_Code/.env` | `/home/ckh08045/Tr_Code/twa-frontend/.env` |
| SECRET_KEY | ✅ **필수** | ❌ 불필요 |
| SUPABASE_URL | ✅ 필수 | ✅ 필요 (다를 수 있음) |
| SUPABASE_ANON_KEY | ✅ 필수 | ✅ 필요 |
| PORT | ✅ 선택 | ❌ 불필요 |
### 환경 변수 로드 방식
Flask (`app.py`):
```python
from dotenv import load_dotenv
load_dotenv() # .env 파일을 자동으로 로드
# 환경 변수 사용
SECRET_KEY = os.environ.get("SECRET_KEY", "default-key")
```
Vue.js (`twa-frontend`):
```javascript
// .env 파일의 VUE_APP_* 변수만 자동 로드
const apiUrl = process.env.VUE_APP_API_URL
```
---
## 📞 문의
환경 변수 설정 관련 문의는 시스템 관리자에게 연락하세요.
**부산교통공사 차량처**