Deployment Django
Deployment to proces przenoszenia aplikacji z środowiska developerskiego do środowiska produkcyjnego, tak aby była dostępna dla użytkowników. Wymaga przygotowania aplikacji, konfiguracji środowiska, bazy danych i serwera.
1. Przygotowanie aplikacji do wdrożenia
1.1. DEBUG
- W środowisku produkcyjnym należy ustawić
DEBUG = Falsewsettings.py. - Gdy
DEBUG = True, Django wyświetla szczegółowe błędy, które mogą ujawniać wrażliwe informacje.
1.2. SECRET_KEY
SECRET_KEYjest kluczem kryptograficznym używanym do podpisywania ciasteczek, tokenów itp.- Nie należy umieszczać go w repozytorium.
- W produkcji najlepiej używać zmiennych środowiskowych:
1.3. ALLOWED_HOSTS
- Lista hostów, które mogą obsługiwać aplikację Django.
- W środowisku produkcyjnym musi zawierać domenę aplikacji:
2. Konfiguracja bazy danych produkcyjnej
- W środowisku produkcyjnym zaleca się użycie PostgreSQL zamiast SQLite.
- Instalacja zależności:
Przykładowa konfiguracja settings.py:
- Po zmianie bazy danych należy wykonać migracje:
3. Serwowanie plików statycznych i multimedialnych
3.1. Pliki statyczne
- W środowisku produkcyjnym Django nie serwuje plików statycznych samodzielnie.
- Należy je zebrać w jednym katalogu:
- W
settings.pydefiniujemy:
3.2. Pliki multimedialne (uploads)
- Serwowanie plików multimedialnych w produkcji zazwyczaj realizuje serwer WWW (Nginx, Apache) lub system cloud storage (np. AWS S3).
4. Deployment na popularnych platformach
4.1. Heroku
- Popularna platforma PaaS (Platform as a Service).
- Kroki deploymentu:
- Zainstalować Heroku CLI.
- Utworzyć plik
Procfile:
web: gunicorn myproject.wsgi --log-file -
- Skonfigurować
requirements.txtiruntime.txt. - Włączyć addon PostgreSQL w Heroku:
- Wysłać kod do repozytorium Heroku:
- Wykonać migracje:
4.2. VPS (np. Ubuntu)
- Na VPS instaluje się Python, pip, virtualenv, PostgreSQL, Nginx i Gunicorn.
-
Konfiguracja serwera:
-
Utworzyć virtualenv i zainstalować wymagania.
- Skonfigurować Gunicorn do obsługi WSGI.
-
Skonfigurować Nginx jako reverse proxy:
- obsługuje ruch HTTP/HTTPS,
- serwuje pliki statyczne i media.
-
Warto skonfigurować systemd do automatycznego uruchamiania Gunicorn.
4.3. Docker
- Docker pozwala opakować aplikację z wszystkimi zależnościami w kontener.
- Przykładowy
Dockerfiledla Django:
-
W połączeniu z
docker-compose.ymlmożna uruchamiać:- aplikację Django,
- bazę PostgreSQL,
- serwer Nginx.
5. Dodatkowe dobre praktyki
- HTTPS – korzystać z certyfikatu SSL (np. Let's Encrypt).
- Logowanie błędów – skonfigurować
loggingwsettings.py. - Monitorowanie – np. Sentry, NewRelic.
- Zmienna środowiskowa
DEBUG=Falsezawsze w produkcji. - Używać menedżera procesów (Gunicorn + systemd / Supervisor) do stabilnego uruchamiania serwera.