Deployment aplikacji Średnio zaawansowany 55 min

Przygotowanie aplikacji do wdrożenia

Przygotujesz aplikację i serwer do powtarzalnego wdrożenia, sprawdzając kod, zależności, punkt wejścia, zasoby systemu oraz port przeznaczony dla aplikacji.

Wróć do listy lekcji

1. Krótka teoria

Środowisko lokalne służy do wygodnego tworzenia i testowania kodu, natomiast środowisko produkcyjne powinno działać przewidywalnie, bez trybu debugowania i automatycznego przeładowania. Przed wdrożeniem trzeba znać punkt wejścia aplikacji ASGI, na przykład app.main:app, gdzie część przed dwukropkiem wskazuje moduł Pythona, a część po nim obiekt aplikacji. Zależności powinny być zapisane w requirements.txt, aby dało się odtworzyć środowisko na serwerze. Praktyczny układ rozdziela kod w /opt/example-app, konfigurację zawierającą wartości środowiskowe w /opt/example-app/.env oraz środowisko wirtualne w /opt/example-app/venv. Plik .env nie powinien trafiać do publicznego repozytorium. Aplikację warto uruchamiać jako dedykowany użytkownik systemowy z dostępem tylko do potrzebnych plików. Przed instalacją należy sprawdzić wersje Pythona i Gita, wolne miejsce, właściciela katalogu oraz to, czy planowany port, na przykład 8000, nie jest już zajęty. Taka checklista oddziela problemy aplikacji od braków w przygotowaniu serwera.

2. Przykłady komend

python3 --version

Sprawdza wersję Pythona dostępną na serwerze.

$ python3 --version
Python 3.11.9
git --version

Sprawdza, czy Git jest zainstalowany i pokazuje jego wersję.

$ git --version
git version 2.43.5
df -h /opt

Pokazuje wolne miejsce w systemie plików zawierającym katalog aplikacji.

$ df -h /opt
sudo ss -lntp | grep ':8000'

Sprawdza, czy port TCP 8000 jest już używany przez proces nasłuchujący.

$ sudo ss -lntp | grep ':8000'
sudo install -d -o example-app -g example-app /opt/example-app

Tworzy katalog aplikacji z odpowiednim właścicielem i grupą.

$ sudo install -d -o example-app -g example-app /opt/example-app
find /opt/example-app -maxdepth 2 -type f

Pomaga sprawdzić rozmieszczenie plików aplikacji przed uruchomieniem.

$ find /opt/example-app -maxdepth 2 -type f

3. Zadanie praktyczne

Przygotuj checklistę dla przykładowej aplikacji z punktem wejścia app.main:app. Sprawdź python3 --version, git --version, df -h /opt oraz dostępność portu 8000 przez sudo ss -lntp | grep ':8000'. Rozrysuj strukturę /opt/example-app z osobnymi miejscami na kod, venv i .env. Zapisz, który użytkownik ma uruchamiać proces i jakie pliki musi odczytywać. Nie wpisuj prawdziwych sekretów do pliku ćwiczeniowego.

4. Typowe błędy

  • Włączanie w produkcji trybu debugowania lub automatycznego przeładowania kodu.
  • Brak jednoznacznie określonego punktu wejścia aplikacji.
  • Instalowanie zależności bez aktualnego pliku requirements.txt.
  • Umieszczanie sekretów w repozytorium razem z kodem.
  • Uruchamianie aplikacji jako root bez technicznej potrzeby.
  • Pomijanie kontroli miejsca na dysku i zajętych portów.

5. Podsumowanie

Dobre wdrożenie zaczyna się przed uruchomieniem procesu. Trzeba znać punkt wejścia, zapisać zależności, rozdzielić kod, konfigurację i środowisko wirtualne oraz wybrać dedykowanego użytkownika i lokalny port. Kontrola wersji narzędzi, miejsca na dysku i portów pozwala wykryć problemy jeszcze przed instalacją aplikacji.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie