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.
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
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.