Kompletny poradnik dla systemów opartych na CentOS / RHEL / Fedora
Konfiguracja VirtualHostów w Apache (httpd) to fundament dla hostowania wielu stron WWW na jednym serwerze. W teorii wydaje się to proste – tworzysz katalog z plikami strony, definiujesz VirtualHost
w katalogu konfiguracyjnym i restartujesz usługę. W praktyce, jeśli coś nie działa, problemem może być nie tylko sama konfiguracja Apache, ale też DNS, SELinux, uprawnienia, firewalld i brakujące usługi.
Ten poradnik krok po kroku pokazuje co musi być uruchomione i poprawnie ustawione, aby VirtualHosty zadziałały bez frustracji.
Krok 1: Sprawdź, czy działa usługa Apache (httpd)
Pierwszy i najbardziej oczywisty krok.
Jeśli usługa nie działa, uruchom ją i ustaw na autostart:
Krok 2: Upewnij się, że port 80 (HTTP) jest otwarty w zaporze
Domyślnie w CentOS/Fedora/RHEL zainstalowany jest firewalld, który może blokować porty.
Sprawdź, czy port 80 jest otwarty:
Jeśli nie, dodaj wyjątek:
Krok 3: Struktura katalogów i uprawnienia
Przyjmijmy, że chcesz hostować stronę pod adresem: www.domena.com
. Pliki mają znajdować się w:
Sprawdź:
-
Czy katalog
/var/www/domena.com/public_html/
istnieje. -
Czy
index.html
ma poprawne uprawnienia (np.644
). -
Czy katalogi mają prawa odczytu i wykonania (
755
).
Dodatkowo, upewnij się, że właściciel katalogu to użytkownik Apache (np. apache:apache
albo www-data:www-data
, zależnie od dystrybucji).
Krok 4: Konfiguracja VirtualHost – gdzie i jak ją umieścić
W dystrybucjach opartych na RHEL / CentOS / Fedora, pliki konfiguracyjne VirtualHostów najlepiej umieszczać w:
Plik powinien mieć rozszerzenie .conf
, np.:
Zawartość pliku powinna wyglądać następująco:
Nie edytuj głównego httpd.conf
, chyba że musisz włączyć Include.
Upewnij się, że Apache wczytuje pliki z conf.d/
. W /etc/httpd/conf/httpd.conf
powinna być linia:
Krok 5: Sprawdź konfigurację Apache
Po każdej zmianie konfiguracji uruchom:
Jeśli wszystko jest OK, powinieneś zobaczyć:
W przeciwnym razie popraw wskazane błędy.
Krok 6: Ustaw nazwę hosta w systemie
Aby móc testować domenę lokalnie (np. www.domena.com
), musisz ją zmapować do IP lokalnego serwera.
Edytuj plik /etc/hosts
i dodaj:
To pozwala systemowi rozpoznać nazwę domeny bez DNS.
Krok 7: Sprawdź SELinux (jeśli aktywny)
SELinux potrafi blokować dostęp Apache do plików spoza domyślnej lokalizacji /var/www/html
.
Sprawdź, czy SELinux jest aktywny:
Jeśli jest Enforcing, musisz nadać kontekst bezpieczeństwa dla nowego katalogu:
Dodatkowo – jeśli pliki będą zapisywane przez Apache (np. CMS), dodaj:
Krok 8: Logi – czyli gdzie szukać błędów
Jeśli nadal coś nie działa, sprawdź logi Apache:
Błędy związane z uprawnieniami, błędną ścieżką, błędem w konfiguracji – wszystko znajdziesz tutaj.
Dodatkowo, jeśli zdefiniowałeś osobne ErrorLog
w VirtualHoście, zajrzyj także do:
Krok 9: Restart lub reload usługi
Po wprowadzeniu zmian pamiętaj, by zrestartować Apache:
Lub bez przerywania aktywnych połączeń:
Krok 10: Test działania
Wejdź w przeglądarce na:
Jeśli wszystko działa – zobaczysz zawartość index.html
. Jeśli nie:
-
Upewnij się, że nie używasz HTTPS przez pomyłkę.
-
Sprawdź, czy DNS / hosts kieruje poprawnie.
-
Upewnij się, że Apache działa i port 80 jest otwarty.
Podsumowanie – co MUSI działać, aby VirtualHosty funkcjonowały?
✅ Usługa Apache (httpd
) działa
✅ Port 80 otwarty w zaporze (firewalld)
✅ Pliki .conf
w /etc/httpd/conf.d/
mają poprawną składnię
✅ Dokument root istnieje i ma właściwe uprawnienia
✅ Nazwa domeny rozpoznawana lokalnie (lub przez DNS)
✅ SELinux nie blokuje dostępu
✅ apachectl configtest
zwraca Syntax OK
✅ Logi nie pokazują krytycznych błędów
Dobrze skonfigurowany VirtualHost to podstawa skalowalnego i bezpiecznego hostowania wielu stron w jednym środowisku. Działa bez problemów – o ile zadbasz o wszystkie powyższe aspekty.
Jeśli nadal masz problemy mimo poprawnej konfiguracji – być może problem leży poza Apache (np. DNS, cache, przeglądarka, reverse proxy). Warto wtedy testować lokalnie i krok po kroku weryfikować każdy element.