kleindan.dev

Przygotowanie środowiska programistycznego

W tej lekcji zajmiemy się przygotowaniem osobnego, odizolowanego środowiska, w którym będziemy tworzyć nasze aplikacje webowe. Ale zanim weźmiemy się za to, odpowiedzmy sobie najpierw na pytanie:

Po co mi osobne środowisko programistyczne?

Kiedy pracujemy nad jakimś projektem, na przykład nad aplikacją internetową, możemy potrzebować specyficznych narzędzi deweloperskich: kompilatora języka programowania dla naszego backendu, serwera WWW, silnika bazy danych i innych. W pierwszym odruchu możemy chcieć zainstalować te narzędzia na swoim komputerze i brać się do pracy. Dobrze jest jak najwcześniej zatrzymać ten odruch i podejść do tematu bardziej systematycznie.

Jeżeli z każdym projektem będziemy instalować na naszym komputerze wszystkie potrzebne narzędziay, liczba zainstalowanych programów szybko się rozrośnie, a nawet mogą pojawić się konflikty między nimi. Jeżeli jedno z naszych narzędzi będzie wymagało np. języka Python w bardzo konkretnej wersji np. 3.8.11, a inne będzie potrzebowało Pythona w równie precyzyjnej wersji, ale z innym numerkiem np. 3.8.14, to może się okazać, że nie da się w łatwy sposób korzystać z obu narzędzi na jednym komputerze.

Jednym ze sposobów obejścia tego problemu jest wirtualizacja, która pozwala na stworzenie w obrębie naszego systemu operacyjnego symulację innego komputera. W ten sposób w środku tej wirtualnej maszyny możemy umieścić zupełnie osobny system operacyjny, a na nim zainstalować dowolne narzędzia i programy. Tworząc więcej takich maszyn, możemy mieć odrępne środowiska do wielu projektów, bez ryzyka że będą one wchodzić sobie wzajemnie w drogę. Nawet jeżeli jeden z naszych projektów skończymy i zamkniemy, to nie ma potrzeby, żeby zbędne już narzędzia zajmowały przestrzeń na naszym dysku; możemy po prostu usunąć całą maszynę wirtualną nie obawiając się, że usuniemy coś, czego potrzebuje inny z naszych projektów.

Kolejną sprawą jest kontrola nad swoim środowiskiem programistycznym. Podczas nauki możemy klorzystać na przykład z komputera szkolnego albo uczelnianego, którym zarządza administrator odpowiedzialny za utrzymanie maszyn w stanie używalności dla wszystkich, w związku z tym zabraniający instalacji dowolnych programów, które przyjdą do głowy użytkownikom. Nawet w pracy zawodowej często pracujemy na komputerach firmowych, nad którymi pieczę sprawują dedykowani administratorzy, którzy będą oczekiwali od nas uzasadnienia, a od naszego przełożonego np. pisemnej zgody na instalację każdego narzędzia, które ma być zainstalowane na naszym komputerze. W takim wypadku zainstalowanie nawet najmniejszego programu może wymagać tygodni oczekiwania, wsadzając kij w szprychy naszej pracy programistycznej. Jeżeli natomiast mamy maszynę wirtualną, dla której to my jesteśmy administratorem, nic nam nie broni zainstalować na niej narzędzi, których pilnie potrzebujemy w naszej pracy.

W związku z powyższym, naszą pracę zaczniemy od przygotowania osobnej maszyny wirtualnej, na której będziemy rozwijać nasze aplikacje webowe.

Przygotowanie maszyny wirtualnej

Używając programu Oracle VirtualBox stworzymy nową maszynę wirtualną i zainstalujemy na niej system operacyjny Linux, konkretnie dystrybucję Ubuntu Server w wersji 24.04 LTS. Obraz płyty instalacyjnej można pobrać z tej strony.

[!Zrzut instalacji](zrzut instalacji!)

Wspódzielenie plików z maszyną wirtualną

Aby móc wymieniać się plikami pomiędzy swoim systemem, a maszyną wirtualną:

  1. Przy wyłączonej VM idź do okna
    Ustawienia > Udostępnione Foldery
  2. Dodaj lokalny, istniejący folder i nazwij go np. “share” Punkt montowania: /mnt
  3. Uruchom VM
  4. Uruchom komendę montującą folder
    > sudo mount -t vboxsf share /mnt

Przydatne komendy systemu Linux

Kopiowanie folderów z podfolderami

$ cp -r /sciezka/folderu/zrodlowego /sciezka/docelowa

np. kopiowanie folderu z kodem do katalogu domowego:

$ cp -r /mnt/code/lekcja03/mid/mysite ~

Usuwanie folderów z podfolderami

$ rm -r sciezka/do/usuniecia

np. usunięcie obecnej zawartości folderu mysite w katalogu domowym

$ rm -r ~/mysite

Wyłączenie/włączenie interfejsu sieciowego

$ ip link set dev enp0s3 down
$ ip link set dev enp0s3 up