36 lines
1.2 KiB
Markdown
36 lines
1.2 KiB
Markdown
# Minimal Deployment (Nginx + Django + Angular)
|
|
|
|
## Overview
|
|
Serve Angular as static assets via Nginx and proxy `/api/` to Django. Use file system storage on a single host.
|
|
|
|
## Build Outputs
|
|
- Angular build → `/var/www/app` (or similar)
|
|
- Django app → `/srv/api` (Gunicorn/Uvicorn on 127.0.0.1:8000)
|
|
- Data folders: `/srv/data/input`, `/srv/data/attempts`, `/srv/data/output`, `/srv/data/progress`, `/srv/data/manifest.json`
|
|
|
|
## Nginx (concept)
|
|
- `/` → Angular index.html + assets
|
|
- `/api/` → proxy to Django (127.0.0.1:8000)
|
|
- Cache static; no caching for `/api/`
|
|
|
|
## Django Configuration
|
|
- Env vars for folder paths (INPUT_DIR, ATTEMPTS_DIR, OUTPUT_DIR, PROGRESS_DIR, MANIFEST_FILE)
|
|
- CORS/CSRF: allow Angular origin
|
|
- Logging to files under `/var/log/app`
|
|
|
|
## Health
|
|
- `/api/health` endpoint returns `{ ok: true }`
|
|
- Nginx upstream failover not required (single host)
|
|
|
|
## Backups
|
|
- Periodic tar of `/srv/data` (retain N days)
|
|
|
|
## TLS
|
|
- Terminate HTTPS at Nginx (e.g., with Let's Encrypt)
|
|
|
|
## Rollout Steps (high level)
|
|
1. Build Angular → copy to web root
|
|
2. Run Django server → behind Nginx
|
|
3. Create data folders and set permissions
|
|
4. Verify `/api/exams` and basic start/submit flows
|