Wdrożenie i konfiguracja środowisk¶
Wymagania¶
- Python 3.13 (sprawdzane przez
.python-version) - uv (manager pakietów Astrala)
- Node.js 20+ — tylko jeśli chcesz lokalnie uruchamiać
pa11y
Środowisko developerskie¶
# 1. Klon i wejście do katalogu
git clone https://github.com/agatav13/aster.git
cd aster
# 2. Plik .env (minimalny)
cat > .env <<'EOF'
DJANGO_SECRET_KEY=dev-secret-change-me
DJANGO_DEBUG=True
TMDB_API_KEY=<twoj-klucz-v3>
EOF
# 3. Instalacja zależności
uv sync --group dev
# 4. Migracje
uv run manage.py migrate
# 5. Konto administratora
uv run manage.py createsuperuser
# 6. (opcjonalnie) Seed gatunków + popularnych filmów z TMDB
uv run manage.py sync_tmdb_genres
uv run manage.py sync_tmdb_popular --pages 3
# 7. Serwer dev
uv run manage.py runserver
# → http://127.0.0.1:8000/
Dodatkowe grupy zależności¶
uv sync --group docs # MkDocs + Material (dla mkdocs serve)
uv sync --all-extras --dev # wszystkie deps + Playwright, locust, bandit
Środowisko testowe¶
# Wszystkie unit/integration testy z pokryciem
uv run pytest --cov
# Tylko E2E (wymagają Chromium)
uv run playwright install chromium
DJANGO_ALLOW_ASYNC_UNSAFE=true uv run pytest tests/e2e -m e2e
Zmienna DJANGO_ALLOW_ASYNC_UNSAFE jest wymagana, bo pytest-playwright
uruchamia kod w pętli asyncio, a pytest-django musi w tle wykonać
sync ORM (tworzenie testowej bazy). To znana niezgodność, opisana w
issue trackerach obu pluginów.
Środowisko produkcyjne (Render.com)¶
Konfiguracja w pliku render.yaml.
Build¶
Plik build.sh:
#!/usr/bin/env bash
set -o errexit
uv sync --frozen
uv run manage.py collectstatic --noinput
uv run manage.py migrate --noinput
Start¶
Render uruchamia: uv run gunicorn config.wsgi --bind 0.0.0.0:$PORT --workers 1.
Wymagane zmienne środowiskowe¶
| Zmienna | Wartość przykładowa | Opis |
|---|---|---|
DJANGO_SECRET_KEY |
losowy 64+ znaków | sekret sesji i tokenów |
DJANGO_DEBUG |
False |
wyłącza tryb dev |
DJANGO_ALLOWED_HOSTS |
aster-1lf7.onrender.com |
jak w hoście Render |
DATABASE_URL |
postgresql://... |
z Render Managed DB |
TMDB_API_KEY |
klucz v3 | konieczny dla katalogu |
BREVO_API_KEY |
(opcjonalnie) | jeśli chcesz Brevo zamiast SMTP |
EMAIL_HOST_USER, EMAIL_HOST_PASSWORD |
— | gdy używasz SMTP |
DEFAULT_FROM_EMAIL |
noreply@aster.example |
adres nadawcy |
APP_BASE_URL |
https://aster-1lf7.onrender.com |
bazowy URL dla linków w mailach |
DJANGO_ADMIN_URL |
np. secret-admin/ |
utrudnia automatyczne skanowanie |
CSRF_TRUSTED_ORIGINS |
https://aster-1lf7.onrender.com |
wymagane dla POST z innego subdomenu |
Hardening produkcyjny (włączane gdy DEBUG=False)¶
SECURE_SSL_REDIRECT=TrueSECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO','https')— bo Render terminuje SSL na proxySESSION_COOKIE_SECURE=True,CSRF_COOKIE_SECURE=True- HSTS 1 rok, include subdomains, preload
X_FRAME_OPTIONS='DENY'SECURE_REFERRER_POLICY='same-origin'SECURE_CONTENT_TYPE_NOSNIFF=True