Apache2: Virtual Hosts i PHP

LINUX
Priorytet: Normalny Szkic

Zadanie 1303: Apache2 Virtual Hosts i PHP

Wstęp

Serwer Apache (httpd) to jeden z najpopularniejszych serwerów WWW. Mechanizm Virtual Hosts pozwala na utrzymywanie wielu różnych stron internetowych (domen) na jednym serwerze (jednym adresie IP). W tym zadaniu zainstalujesz Apache z obsługą PHP i skonfigurujesz dwie niezależne strony.

Wymagania

System Linux (Debian/Ubuntu) z uprawnieniami root (sudo).


Część 1: Instalacja LAMP (Linux Apache MySQL PHP)

Na potrzeby tego zadania wystarczy nam "LAP" (bez bazy danych).

Zadanie 1: Instalacja pakietów

Zainstaluj serwer Apache oraz interpreter PHP.

sudo apt update
sudo apt install apache2 php libapache2-mod-php -y

Zadanie 2: Weryfikacja

Sprawdź, czy serwer działa (powinien być "active (running)").

systemctl status apache2

Część 2: Przygotowanie Stron (Document Root)

Domyślnie Apache serwuje pliki z /var/www/html. My stworzymy dwa oddzielne katalogi dla naszych wirtualnych hostów.

Zadanie 3: Struktura katalogów

Stwórz katalogi dla strona1 i strona2.

sudo mkdir -p /var/www/strona1
sudo mkdir -p /var/www/strona2

Zadanie 4: Uprawnienia

Zmień właściciela na swojego użytkownika (zastąp $USER swoją nazwą użytkownika, jeśli zmienna nie zadziała, lub po prostu użyj chown -R $USER:$USER), abyś mógł łatwo edytować pliki.

sudo chown -R $USER:$USER /var/www/strona1
sudo chown -R $USER:$USER /var/www/strona2

Dla bezpieczeństwa produkcyjnego zazwyczaj właścicielem jest www-data, ale do nauki currentUser jest wygodniejszy.

Zadanie 5: Pliki PHP

W każdym katalogu stwórz plik index.php o następującej treści:

Plik /var/www/strona1/index.php:

<?php
echo "<h1>Witaj na Stronie 1</h1>";
echo "Katalog serwera: " . __DIR__ . "<br>";
echo "Czas serwera: " . date("Y-m-d H:i:s");
?>

Plik /var/www/strona2/index.php:

<?php
echo "<h1>Witaj na Stronie 2 (Inna domena)</h1>";
echo "Katalog serwera: " . __DIR__ . "<br>";
echo "Czas serwera: " . date("Y-m-d H:i:s");
?>

Część 3: Konfiguracja Virtual Hosts (VHosts)

Apache trzyma konfiguracje stron w /etc/apache2/sites-available/.

Zadanie 6: Konfiguracja Strony 1

Stwórz plik konfiguracyjny (będziesz potrzebować sudo).

sudo nano /etc/apache2/sites-available/strona1.conf

Wklej treść:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName strona1.local
    ServerAlias www.strona1.local
    DocumentRoot /var/www/strona1
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Zadanie 7: Konfiguracja Strony 2

Analogicznie dla drugiej strony.

sudo nano /etc/apache2/sites-available/strona2.conf

Treść:

<VirtualHost *:80>
    ServerName strona2.local
    DocumentRoot /var/www/strona2
</VirtualHost>

Część 4: Aktywacja i Testy

Zadanie 8: Włączenie stron

Użyj narzędzia a2ensite (Apache2 Enable Site).

sudo a2ensite strona1.conf
sudo a2ensite strona2.conf

Zadanie 9: Reload serwera

Aby zmiany weszły w życie, przeładuj Apache.

sudo systemctl reload apache2

Zadanie 10: "Oszukanie" DNS (/etc/hosts)

Ponieważ domeny strona1.local nie istnieją w prawdziwym internecie, musimy powiedzieć naszemu komputerowi, że te adresy kierują na nasz własny komputer (127.0.0.1 lub IP maszyny wirtualnej).

Edytuj plik /etc/hosts:

sudo nano /etc/hosts

Dopisz na końcu:

127.0.0.1   strona1.local
127.0.0.1   strona2.local

Zadanie 11: Sprawdzenie

Otwórz przeglądarkę (jeśli masz GUI) lub użyj curl w terminalu.

curl http://strona1.local
curl http://strona2.local

Powinieneś widzieć różne treści dla każdej z domen, mimo że są na tym samym serwerze! Zwróć uwagę na różne ścieżki (__DIR__) wypisane przez PHP.


Commit

cd ..
git add zadanie1301/
git commit -m "Linux Zadanie 1303: Apache VHosts PHP"