Zadanie 1 - Instalacja i konfiguracja serwera baz danych

Cel zadania

Celem tego rozbudowanego zadania jest dogłębne zrozumienie procesu instalacji, konfiguracji i weryfikacji lokalnego środowiska deweloperskiego opartego o serwer baz danych. Nauczysz się nie tylko, jak zainstalować pakiet XAMPP na systemie Windows, ale także zrozumiesz, co dzieje się "pod maską" – jak działają usługi systemowe, co oznaczają numery portów, gdzie szukać kluczowych plików konfiguracyjnych i jak interpretować logi serwera. Zdobędziesz solidne, praktyczne fundamenty niezbędne każdemu deweloperowi i administratorowi.

Scenariusz / opis zadania

Wyobraź sobie, że rozpoczynasz staż jako Junior DevOps Engineer. Twoim pierwszym zadaniem jest stworzenie szczegółowej dokumentacji i instrukcji dla nowych programistów, opisującej, jak od zera przygotować swoje stanowisko pracy na Windowsie. Musisz nie tylko opisać kroki, ale także wyjaśnić, dlaczego są one wykonywane i jakie mają znaczenie. Standardem w firmie jest pakiet XAMPP, ponieważ zapewnia on spójne środowisko zawierające serwer WWW Apache, serwer baz danych MariaDB (zamiennik MySQL) oraz interpreter PHP. Twoim zadaniem jest precyzyjne udokumentowanie całego procesu: od pobrania właściwej wersji, przez świadomy wybór komponentów, aż po pierwszą konfigurację i weryfikację działania każdej usługi. Musisz zwrócić szczególną uwagę na potencjalne problemy, takie jak konflikty portów, i pokazać, jak je diagnozować i rozwiązywać. Twoja instrukcja musi być na tyle klarowna, aby osoba bez wcześniejszego doświadczenia mogła samodzielnie i ze zrozumieniem uruchomić w pełni funkcjonalne środowisko serwerowe.

Pomocnik wykonania: Instalacja XAMPP na Windows

Krok 1: Pobieranie i weryfikacja instalatora

Wejdź na oficjalną stronę projektu apachefriends.org. Obok linków do pobierania znajdziesz sumy kontrolne (np. SHA256). Jest to dobra praktyka, aby po pobraniu pliku zweryfikować jego sumę kontrolną, co daje pewność, że plik nie został uszkodzony lub zmodyfikowany podczas pobierania.

Jak zweryfikować sumę kontrolną w PowerShell?
Get-FileHash .\xampp-windows-x64-8.2.12-0-VS16-installer.exe -Algorithm SHA256

Porównaj uzyskany hash z tym podanym na stronie. Jeśli się zgadzają, masz pewność integralności pliku.

Krok 2: Uruchomienie instalatora i świadomy wybór komponentów

Uruchom pobrany plik .exe. System Windows może wyświetlić ostrzeżenie UAC (Kontrola Konta Użytkownika) – zezwól na uruchomienie. Następnie zobaczysz okno wyboru komponentów.

  Komponenty do instalacji:
  [X] Apache          <-- Serwer WWW, fundament aplikacji webowych. Odpowiada na żądania HTTP.
  [X] MySQL           <-- W rzeczywistości MariaDB, w pełni kompatybilny zamiennik. Silnik bazy danych.
  [X] PHP             <-- Interpreter języka skryptowego po stronie serwera. Wykonuje logikę aplikacji.
  [ ] Perl            <-- Inny język skryptowy, rzadziej używany w nowych projektach webowych.
  [X] phpMyAdmin      <-- Niezbędne narzędzie webowe do zarządzania bazą danych. Ułatwia pracę z tabelami i danymi.
  [ ] Webalizer       <-- Analizator logów serwera Apache, przydatny do statystyk odwiedzin.
  [ ] Fake Sendmail   <-- Symulator wysyłania e-maili, przydatny do testowania funkcji pocztowych w aplikacjach.
  

Dla podstawowego developmentu webowego, zestaw Apache, MySQL, PHP i phpMyAdmin jest idealny. To tzw. stos WAMP (Windows, Apache, MySQL, PHP).

Krok 3: Wybór lokalizacji i struktura katalogów XAMPP

Zainstaluj XAMPP w C:\xampp. Unikaj instalacji w katalogu C:\Program Files, ponieważ mechanizmy bezpieczeństwa Windows (UAC) mogą utrudniać modyfikację plików konfiguracyjnych.

Po instalacji zapoznaj się ze strukturą katalogów:

C:\xampp
|-- apache      <-- Pliki serwera Apache (konfiguracja w conf\)
|-- htdocs      <-- TUTAJ UMIESZCZASZ SWOJE STRONY I APLIKACJE WWW (DocumentRoot)
|-- mysql       <-- Pliki serwera MariaDB (dane w data\, konfiguracja w bin\my.ini)
|-- php         <-- Pliki interpretera PHP (konfiguracja w php.ini)
|-- phpMyAdmin  <-- Pliki aplikacji phpMyAdmin, dostępnej przez przeglądarkę
`-- xampp-control.exe <-- Panel Kontrolny, Twoje centrum dowodzenia
  

Krok 4: Panel Kontrolny XAMPP – serce zarządzania

Uruchom XAMPP Control Panel. Kliknij Start obok Apache i MySQL. Obserwuj sekcję logów na dole panelu. Powinieneś zobaczyć komunikaty o inicjalizacji i pomyślnym uruchomieniu. Zielone tło przy nazwie modułu oznacza, że usługa działa poprawnie.

Co oznaczają PID(s) i Port(s)?

PID (Process ID): To unikalny numer identyfikacyjny procesu w systemie operacyjnym. Jeśli usługa nie chce się zatrzymać, możesz "zabić" proces o tym numerze w Menedżerze Zadań.

Port: To numer "kanału" komunikacyjnego, na którym usługa nasłuchuje na połączenia. Apache domyślnie używa portu 80 (HTTP) i 443 (HTTPS), a MariaDB portu 3306.

Krok 5: Zaawansowane diagnozowanie problemów – konflikt portów

Scenariusz: Apache nie startuje, port 80 jest zajęty.
  1. Identyfikacja procesu: Użyj w wierszu poleceń netstat -ano | findstr ":80". Ostatnia kolumna to PID (Process ID) procesu, który blokuje port.
  2. Znalezienie aplikacji: Otwórz Menedżer Zadań (Ctrl+Shift+Esc), przejdź do zakładki "Szczegóły" i znajdź proces o danym PID. Często jest to "System" (PID 4), co oznacza, że usługę systemową Windows (np. IIS) trzeba wyłączyć. Innymi winowajcami bywają Skype, VMware lub inne serwery WWW.
  3. Rozwiązanie A (Zwolnienie portu): Wyłącz lub odinstaluj aplikację blokującą port.
  4. Rozwiązanie B (Zmiana portu w XAMPP): W Panelu XAMPP: Config > httpd.conf. Zmień Listen 80 na Listen 8080. Następnie w Config > httpd-ssl.conf zmień Listen 443 na Listen 4433. Po tej zmianie, dostęp do serwera będzie pod adresem http://localhost:8080.

Krok 6: Weryfikacja działania serwera MariaDB z wiersza poleceń

Użyj przycisku Shell w Panelu XAMPP, aby otworzyć terminal z poprawnie ustawionymi ścieżkami do programów XAMPP.

Co robi mysql -u root? Architektura klient-serwer.

Baza danych działa w modelu klient-serwer. Proces mysqld.exe to serwer, który zarządza danymi. Program mysql.exe, który uruchamiasz, to klient - aplikacja tekstowa do wysyłania poleceń do serwera.

Polecenie mysql -u root oznacza: "Uruchom klienta mysql i spróbuj połączyć się z serwerem jako użytkownik (-u) o nazwie root". Domyślnie klient próbuje połączyć się z serwerem na localhost, porcie 3306, bez hasła.

# Pełne polecenie logowania z podaniem hosta i portu
mysql -u root -h 127.0.0.1 -P 3306
  

Po zalogowaniu wykonaj kilka poleceń diagnostycznych:


-- Pokaż, gdzie serwer przechowuje pliki z danymi
SHOW VARIABLES LIKE '%datadir%';

-- Sprawdź, jacy użytkownicy są zdefiniowani na serwerze
SELECT User, Host FROM mysql.user;

-- Pokaż aktywne połączenia z serwerem
SHOW PROCESSLIST;
  

Sekcja z praktycznymi przykładami kodu

Windows (XAMPP Shell) - Pierwsze kroki z bazą danych

# Logowanie do serwera MariaDB jako użytkownik root (bez hasła)
C:\xampp> mysql -u root

# Po zalogowaniu, sprawdzenie wersji serwera
MariaDB [(none)]> SELECT version();

# Wyświetlenie listy baz danych
MariaDB [(none)]> SHOW DATABASES;

# Stworzenie nowej bazy danych
MariaDB [(none)]> CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_polish_ci;

# Przełączenie się na nową bazę danych
MariaDB [(none)]> USE test_db;

# Stworzenie prostej tabeli
MariaDB [test_db]> CREATE TABLE uzytkownicy (id INT AUTO_INCREMENT PRIMARY KEY, imie VARCHAR(50), email VARCHAR(100));

# Wstawienie danych do tabeli
MariaDB [test_db]> INSERT INTO uzytkownicy (imie, email) VALUES ('Anna', 'anna@example.com'), ('Jan', 'jan@example.com');

# Odpytanie danych
MariaDB [test_db]> SELECT * FROM uzytkownicy;

# Wyjście z klienta MariaDB
MariaDB [test_db]> exit;
  

Zabezpieczanie serwera - Ustawienie hasła dla roota

Domyślnie użytkownik root nie ma hasła. To bardzo niebezpieczne. Aby je ustawić, użyj poniższego polecenia:


-- W nowszych wersjach MariaDB/MySQL hasła ustawia się za pomocą ALTER USER
ALTER USER 'root'@'localhost' IDENTIFIED BY 'TwojeSuperSilneHaslo123!';

-- Zastosuj zmiany
FLUSH PRIVILEGES;
  

Od teraz, aby się zalogować, będziesz musiał podać hasło: mysql -u root -p. System poprosi o jego wprowadzenie.

Schematy architektury

Schemat środowiska XAMPP

+----------------------------------------------------+
| Twój Komputer (Windows)                            |
| +------------------------------------------------+ |
| | Pakiet XAMPP (C:\xampp)                        | |
| | +------------------+   +---------------------+ | |
| | | Serwer Apache    |   | Serwer MariaDB      | | |
| | | (httpd.exe)      |   | (mysqld.exe)        | | |
| | | Port: 80, 443    |   | Port: 3306          | | |
| | +-------+----------+   +----------+----------+ | |
| +---------|-------------------------|----------+ | |
|           |                         |            | |
| +---------V----------+   +----------V----------+ | |
| | Przeglądarka       |   | Klient Bazy Danych  | | |
| | (http://localhost) |   | (mysql.exe, DBeaver)| | |
| +--------------------+   +---------------------+ | |
+----------------------------------------------------+
  

Przepływ żądania w aplikacji webowej

Użytkownik            Przeglądarka             Serwer (XAMPP)
    |                      |                        |
    |--- Wpisuje adres --->|                        |
    |   (localhost/app)    |--- Żądanie HTTP GET -->| Apache (Port 80)
    |                      |                        |   |
    |                      |                        |   `-- Przekazuje do PHP
    |                      |                        |       |
    |                      |                        |       `-- Skrypt PHP łączy się z bazą
    |                      |                        |           |
    |                      |                        |           `-- MariaDB (Port 3306)
    |                      |                        |               |
    |                      |                        |               `-- Zwraca dane do PHP
    |                      |                        |           |
    |                      |                        |       `-- PHP generuje HTML z danymi
    |                      |                        |   |
    |                      |                        | <-- Zwraca gotowy HTML
    |                      |<-- Odpowiedź HTTP -----|
    |<-- Wyświetla stronę --|
  

Informacje dodatkowe i dobre praktyki