218 lines
4.7 KiB
Markdown
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
|
|
```
|
|
|
|
---
|
|
|
|
## 📞 문의
|
|
|
|
환경 변수 설정 관련 문의는 시스템 관리자에게 연락하세요.
|
|
|
|
**부산교통공사 차량처**
|
|
|