+48 506 130 673 info@tosetec.com

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.

systemctl status httpd

Jeśli usługa nie działa, uruchom ją i ustaw na autostart:

systemctl enable httpd --now

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:

firewall-cmd --list-all

Jeśli nie, dodaj wyjątek:

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

Krok 3: Struktura katalogów i uprawnienia

Przyjmijmy, że chcesz hostować stronę pod adresem: www.domena.com. Pliki mają znajdować się w:

/var/www/domena.com/public_html/index.html

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).

chown -R apache:apache /var/www/domena.com
chmod -R 755 /var/www/domena.com

Krok 4: Konfiguracja VirtualHost – gdzie i jak ją umieścić

W dystrybucjach opartych na RHEL / CentOS / Fedora, pliki konfiguracyjne VirtualHostów najlepiej umieszczać w:

/etc/httpd/conf.d/

Plik powinien mieć rozszerzenie .conf, np.:

/etc/httpd/conf.d/domena.com.conf

Zawartość pliku powinna wyglądać następująco:

<VirtualHost *:80>
ServerName www.domena.com
ServerAlias domena.com
DocumentRoot /var/www/domena.com/public_html
ErrorLog /var/www/domena.com/error.log
CustomLog /var/www/domena.com/requests.log combined
</VirtualHost>

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:

IncludeOptional conf.d/*.conf

Krok 5: Sprawdź konfigurację Apache

Po każdej zmianie konfiguracji uruchom:

apachectl configtest

Jeśli wszystko jest OK, powinieneś zobaczyć:

Syntax OK

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:

127.0.0.1 www.domena.com domena.com

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:

sestatus

Jeśli jest Enforcing, musisz nadać kontekst bezpieczeństwa dla nowego katalogu:

chcon -R -t httpd_sys_content_t /var/www/domena.com

Dodatkowo – jeśli pliki będą zapisywane przez Apache (np. CMS), dodaj:

chcon -R -t httpd_sys_rw_content_t /var/www/domena.com

Krok 8: Logi – czyli gdzie szukać błędów

Jeśli nadal coś nie działa, sprawdź logi Apache:

tail -f /var/log/httpd/error_log

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:

/var/www/domena.com/error.log

Krok 9: Restart lub reload usługi

Po wprowadzeniu zmian pamiętaj, by zrestartować Apache:

systemctl restart httpd

Lub bez przerywania aktywnych połączeń:

systemctl reload httpd

Krok 10: Test działania

Wejdź w przeglądarce na:

http://www.domena.com

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.