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ą:
- Przy wyłączonej VM idź do okna
Ustawienia > Udostępnione Foldery - Dodaj lokalny, istniejący folder i nazwij go np. “share” Punkt montowania: /mnt
- Uruchom VM
- 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