197 lines
3.8 KiB
Markdown
197 lines
3.8 KiB
Markdown
# ⚡ EV 충전기 AS 관리 시스템
|
|
|
|
## 아키텍처 구성
|
|
|
|
```
|
|
인터넷
|
|
↓
|
|
cs.byunc.com (DNS)
|
|
↓
|
|
5825u 서버 ── Nginx 리버스 프록시 + Certbot SSL (HTTPS 443)
|
|
↓ 내부 포워딩 (127.0.0.1:5700)
|
|
Docker Compose (HTTP :5700)
|
|
├── ev_nginx :5700 → 컨테이너 내부 :80
|
|
├── ev_backend :8000 (내부)
|
|
└── ev_db :5432 (내부)
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 최초 설치 및 실행
|
|
|
|
### 1. .env 환경변수 수정 (필수)
|
|
|
|
```bash
|
|
cd /home/byun/ev-charger-as
|
|
nano .env
|
|
```
|
|
|
|
아래 두 가지 반드시 변경:
|
|
```
|
|
POSTGRES_PASSWORD=원하는_비밀번호
|
|
SECRET_KEY=아래_명령어로_생성한_값
|
|
```
|
|
|
|
SECRET_KEY 생성:
|
|
```bash
|
|
openssl rand -hex 32
|
|
```
|
|
|
|
DATABASE_URL 도 POSTGRES_PASSWORD 와 맞게 수정:
|
|
```
|
|
DATABASE_URL=postgresql://evuser:변경한_비밀번호@db:5432/evcharger
|
|
```
|
|
|
|
### 2. 빌드 및 실행
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
### 3. 동작 확인
|
|
|
|
```bash
|
|
docker compose ps
|
|
curl http://localhost:5700/api/health
|
|
# {"status":"ok"} 확인
|
|
```
|
|
|
|
---
|
|
|
|
## 🔑 초기 로그인
|
|
|
|
| 항목 | 값 |
|
|
|------|----|
|
|
| URL | https://cs.byunc.com/pages/login.html |
|
|
| 아이디 | admin |
|
|
| 비밀번호 | admin1234 |
|
|
|
|
> ⚠️ 로그인 후 즉시 비밀번호 변경 (설정 → 비밀번호 변경)
|
|
|
|
---
|
|
|
|
## ♻️ DB 초기화가 필요할 때 (재설치 시)
|
|
|
|
이미 한 번 실행했던 서버에서 init_db.sql 변경사항을 반영하려면
|
|
볼륨을 삭제하고 다시 올려야 합니다.
|
|
|
|
```bash
|
|
# 컨테이너 + 볼륨 완전 삭제 (DB 데이터 초기화됨 — 주의)
|
|
docker compose down -v
|
|
|
|
# 다시 빌드 및 실행
|
|
docker compose up -d --build
|
|
|
|
# 확인
|
|
docker compose logs db
|
|
docker compose logs backend
|
|
```
|
|
|
|
---
|
|
|
|
## 🌐 5825u Nginx 설정
|
|
|
|
기존 nginx 설정에 아래 파일 추가:
|
|
|
|
```bash
|
|
sudo nano /etc/nginx/sites-available/ev-charger
|
|
```
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name cs.byunc.com;
|
|
return 301 https://$host$request_uri;
|
|
}
|
|
|
|
server {
|
|
listen 443 ssl;
|
|
server_name cs.byunc.com;
|
|
|
|
ssl_certificate /etc/letsencrypt/live/cs.byunc.com/fullchain.pem;
|
|
ssl_certificate_key /etc/letsencrypt/live/cs.byunc.com/privkey.pem;
|
|
|
|
client_max_body_size 20M;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:5700;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto https;
|
|
proxy_read_timeout 60s;
|
|
}
|
|
}
|
|
```
|
|
|
|
```bash
|
|
sudo ln -s /etc/nginx/sites-available/ev-charger /etc/nginx/sites-enabled/
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|
```
|
|
|
|
---
|
|
|
|
## 🗄️ DB 백업 / 복원
|
|
|
|
```bash
|
|
# 백업
|
|
docker exec ev_db pg_dump -U evuser evcharger > backup_$(date +%Y%m%d).sql
|
|
|
|
# 복원
|
|
docker exec -i ev_db psql -U evuser evcharger < backup_20240101.sql
|
|
|
|
# 업로드 파일 백업
|
|
tar -czf uploads_$(date +%Y%m%d).tar.gz uploads/
|
|
```
|
|
|
|
자동 백업 크론:
|
|
```bash
|
|
crontab -e
|
|
# 매일 새벽 3시
|
|
0 3 * * * cd ~/ev-charger-as && docker exec ev_db pg_dump -U evuser evcharger > ~/backups/db_$(date +\%Y\%m\%d).sql
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 코드 수정 후 재배포
|
|
|
|
```bash
|
|
# 백엔드 코드만 수정한 경우
|
|
docker compose build backend
|
|
docker compose up -d --no-deps backend
|
|
|
|
# 전체 재빌드
|
|
docker compose up -d --build
|
|
```
|
|
|
|
---
|
|
|
|
## 🛠 유용한 명령어
|
|
|
|
```bash
|
|
# 상태 확인
|
|
docker compose ps
|
|
|
|
# 로그 확인
|
|
docker compose logs -f backend
|
|
docker compose logs -f nginx
|
|
|
|
# DB 직접 접속
|
|
docker exec -it ev_db psql -U evuser evcharger
|
|
|
|
# 전체 재시작
|
|
docker compose restart
|
|
|
|
# 전체 중지 (데이터 보존)
|
|
docker compose down
|
|
```
|
|
|
|
---
|
|
|
|
## 🔒 보안 체크리스트
|
|
|
|
- [ ] .env POSTGRES_PASSWORD, SECRET_KEY 변경
|
|
- [ ] 초기 admin 비밀번호 변경
|
|
- [ ] 방화벽: 5432(DB) 포트 외부 노출 차단
|
|
- [ ] 정기 DB 백업 크론 설정
|