Apache2: Virtual Hosts i PHP
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"