Sites-Enabled i Sites-Available: Kompletny Przewodnik dla NGINX i Apache
NGINX i Apache pozostają dwoma najbardziej dominującymi serwerami WWW w internecie — i z dobrych powodów. Oba są sprawdzone w boju, wysoce konfigurowalne i zdolne do obsługi złożonych, wysoko obciążonych witryn z łatwością. Jedną z najważniejszych koncepcji dla każdego administratora systemu zarządzającego serwerem opartym na Linuksie jest zrozumienie, jak te serwery WWW obsługują konfigurację witryny poprzez strukturę katalogów sites-available i sites-enabled.
Niezależnie od tego, czy uruchamiasz jedną witrynę, czy zarządzasz dziesiątkami hostów wirtualnych w planie VPS Hosting, opanowanie tego modelu konfiguracji da ci precyzyjną kontrolę nad tym, które witryny są aktywne, które są przygotowywane, i jak zasoby serwera są alokowane.
Ten przewodnik zawiera kompleksowy, krok po kroku opis sposobu włączania, wyłączania i zarządzania witrynami przy użyciu zarówno NGINX, jak i Apache na systemach Linux.
Zrozumienie sites-available i sites-enabled
Zarówno NGINX, jak i Apache używają modelu dwóch katalogów do oddzielenia konfiguracji witryny od aktywacji witryny. Ten wzorzec architektoniczny jest elegancki w swojej prostocie i niezwykle potężny w praktyce.
sites-available
Katalog /etc/nginx/sites-available/ lub /etc/apache2/sites-available/ działa jako biblioteka wszystkich możliwych konfiguracji witryn. Każda witryna, którą zamierzasz hostować na serwerze, otrzymuje własny plik konfiguracyjny przechowywany tutaj. Co ważne, pliki w tym katalogu nie są aktywne — definiują konfigurację, ale nie obsługują żadnego ruchu, dopóki nie zostaną wyraźnie włączone.
sites-enabled
Katalog /etc/nginx/sites-enabled/ lub /etc/apache2/sites-enabled/ zawiera dowiązania symboliczne wskazujące na pliki konfiguracyjne w sites-available. Tylko witryny z aktywnym dowiązaniem symbolicznym w tym katalogu są ładowane przez serwer WWW i obsługiwane dla odwiedzających.
To rozdzielenie oferuje kilka kluczowych zalet:
- Niedestrukcyjne wyłączanie: Możesz dezaktywować witrynę bez usuwania jej konfiguracji.
- Szybkie wdrażanie: Przygotowanie nowej witryny jest tak proste, jak utworzenie dowiązania symbolicznego.
- Czysta organizacja: Wszystkie konfiguracje istnieją w jednym miejscu, niezależnie od tego, czy są aktywne.
Zarządzanie witrynami za pomocą Apache
1. Konfiguracja hostów wirtualnych Apache
Apache używa Virtual Hosts do obsługi wielu witryn z jednej instancji serwera. Każda witryna otrzymuje własny plik konfiguracyjny, który mówi Apache, jak obsługiwać przychodzące żądania dla tej domeny — w tym katalog główny dokumentów, ścieżki logowania, aliasy serwera i wiele więcej.
Pliki konfiguracyjne dla hostów wirtualnych Apache są przechowywane w:
/etc/apache2/sites-available/#### Tworzenie pliku konfiguracyjnego hosta wirtualnego
Aby utworzyć plik konfiguracyjny dla witryny o nazwie test.oo.md, uruchom:
sudo nano /etc/apache2/sites-available/test.oo.md.confWewnątrz pliku zdefiniuj blok hosta wirtualnego:
<VirtualHost *:80>
ServerAdmin admin@test.oo.md
ServerName your_domain_or_IP
ServerAlias www.test.oo.md
DocumentRoot /var/www/test.oo.md
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>> Uwaga: Zastąp your_domain_or_IP rzeczywistą nazwą domeny lub adresem IP serwera. Dyrektywa ServerAlias pozwala Apache odpowiadać również na subdomenę www.
Zapisz i zamknij plik po zakończeniu.
2. Włącz witrynę za pomocą a2ensite
Po umieszczeniu pliku konfiguracyjnego aktywuj witrynę za pomocą polecenia a2ensite (Apache 2 Enable Site):
sudo a2ensite test.oo.md.confTo polecenie automatycznie tworzy dowiązanie symboliczne z sites-available do sites-enabled:
/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.confWitryna jest teraz gotowa do obsługi, ale zmiany nie wejdą w życie, dopóki Apache nie zostanie przeładowany.
3. Przetestuj konfigurację Apache
Przed przeładowaniem Apache zawsze sprawdź składnię konfiguracji, aby wychwycić błędy:
sudo apachectl configtestPomyślne wyjście będzie wyglądać następująco:
Syntax OKJeśli są błędy, Apache opisze problem i numer linii — napraw je przed kontynuowaniem.
4. Przeładuj Apache, aby zastosować zmiany
sudo systemctl reload apache2Używanie reload zamiast restart jest preferowane w środowiskach produkcyjnych, ponieważ stosuje nową konfigurację bez przerywania aktywnych połączeń.
5. Wyłącz witrynę za pomocą a2dissite
Aby przełączyć witrynę do trybu offline bez usuwania jej konfiguracji, użyj polecenia a2dissite:
sudo a2dissite test.oo.md.confTo usuwa dowiązanie symboliczne z sites-enabled. Plik konfiguracyjny w sites-available pozostaje niezmieniony. Przeładuj Apache, aby zastosować:
sudo systemctl reload apache2Zarządzanie witrynami za pomocą NGINX
1. Konfiguracja bloku serwera NGINX
NGINX używa Server Blocks — funkcjonalnego odpowiednika Virtual Hosts Apache. Pliki konfiguracyjne bloku serwera są przechowywane w:
/etc/nginx/sites-available/#### Tworzenie pliku konfiguracyjnego bloku serwera
Aby utworzyć plik konfiguracyjny dla test.oo.md, uruchom:
sudo nano /etc/nginx/sites-available/test.oo.mdZdefiniuj blok serwera wewnątrz pliku:
server {
listen 80;
server_name test.oo.md www.test.oo.md;
root /var/www/test.oo.md;
index index.html index.htm;
access_log /var/log/nginx/test.oo.md_access.log;
error_log /var/log/nginx/test.oo.md_error.log;
location / {
try_files $uri $uri/ =404;
}
}> Wyjaśnione kluczowe dyrektywy:
> – listen 80 — Instruuje NGINX do nasłuchiwania ruchu HTTP na porcie 80.
> – server_name — Definiuje, na które nazwy domen ten blok odpowiada.
> – root — Ustawia katalog główny dokumentów dla plików witryny.
> – try_files — Próbuje obsługiwać żądany plik lub katalog; zwraca 404, jeśli nie znaleziono.
2. Włącz witrynę, tworząc dowiązanie symboliczne
W przeciwieństwie do Apache, NGINX nie zapewnia wbudowanego polecenia takiego jak a2ensite. Zamiast tego ręcznie tworzysz dowiązanie symboliczne:
sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/To łączy plik konfiguracyjny z katalogiem sites-enabled, czyniąc go kwalifikującym się do załadowania przez NGINX.
3. Przetestuj konfigurację NGINX
Zawsze testuj konfigurację NGINX przed przeładowaniem:
sudo nginx -tPomyślny test zwraca:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulJeśli zgłoszono błędy, przejrzyj wskazane linie w pliku konfiguracyjnym i popraw je przed kontynuowaniem.
4. Przeładuj NGINX, aby zastosować zmiany
sudo systemctl reload nginxPodobnie jak w Apache, reload elegancko stosuje zmiany konfiguracji bez przerywania aktywnych połączeń — zawsze preferowane w stosunku do pełnego restart w środowiskach produkcyjnych.
5. Wyłącz witrynę w NGINX
Aby wyłączyć witrynę, usuń jej dowiązanie symboliczne z katalogu sites-enabled:
sudo rm /etc/nginx/sites-enabled/test.oo.mdNastępnie przeładuj NGINX, aby zastosować zmianę:
sudo systemctl reload nginxPlik konfiguracyjny w sites-available jest zachowywany i może być ponownie włączony w dowolnym momencie.
Szybki przewodnik: Zarządzanie witrynami Apache vs. NGINX
| Zadanie | Polecenie Apache | Polecenie NGINX |
|---|---|---|
| Utwórz plik konfiguracyjny | nano /etc/apache2/sites-available/site.conf | nano /etc/nginx/sites-available/site |
| Włącz witrynę | sudo a2ensite site.conf | sudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/ |
| Przetestuj konfigurację | sudo apachectl configtest | sudo nginx -t |
| Przeładuj serwer WWW | sudo systemctl reload apache2 | sudo systemctl reload nginx |
| Wyłącz witrynę | sudo a2dissite site.conf | sudo rm /etc/nginx/sites-enabled/site |
Najlepsze praktyki zarządzania witrynami za pomocą NGINX i Apache
1. Jeden plik konfiguracyjny na witrynę
Zawsze twórz dedykowany plik konfiguracyjny dla każdej domeny lub subdomeny w katalogu sites-available. Mieszanie wielu witryn w jeden plik powoduje bóle głowy w utrzymaniu i znacznie utrudnia rozwiązywanie problemów.
2. Zawsze testuj przed przeładowaniem
Uczyń sobie niezbędnym nawykiem uruchamianie apachectl configtest lub nginx -t przed każdym przeładowaniem. Błąd składni w pliku konfiguracyjnym może wyłączyć wszystkie witryny na serwerze — nie tylko tę, którą edytujesz.
3. Użyj kontroli wersji dla plików konfiguracyjnych
Dla serwerów hostujących wiele witryn lub złożonych konfiguracji śledź pliki konfiguracyjne za pomocą Git:
cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"To daje ci pełną historię zmian i możliwość natychmiastowego powrotu do znanego dobrego stanu.
4. Zawsze wymuszaj HTTPS za pomocą certyfikatów SSL
Obsługiwanie witryn przez zwykły HTTP nie jest już akceptowalne. Skonfiguruj certyfikaty SSL dla każdej witryny, którą zarządzasz. Let’s Encrypt zapewnia bezpłatne, automatycznie odnawiane certyfikaty i bezproblemowo integruje się zarówno z Apache (poprzez mod_ssl i Certbot), jak i NGINX.
Po uzyskaniu certyfikatu zaktualizuj blok serwera lub host wirtualny, aby nasłuchiwać na porcie 443 i przekierować cały ruch HTTP do HTTPS.
5. Skonfiguruj kompleksowe logowanie
Zawsze definiuj zarówno dyrektywy access_log jak i error_log dla każdej witryny. Logi są twoją pierwszą linią obrony przy diagnozowaniu problemów, badaniu incydentów bezpieczeństwa lub analizie wzorców ruchu. Przechowuj logi w plikach specyficznych dla witryny, a nie polegaj na domyślnym globalnym logu.
6. Używaj opisowych, spójnych nazw plików
Nazwij pliki konfiguracyjne po domenie, którą obsługują (np. example.com.conf dla Apache, example.com dla NGINX). To sprawia, że natychmiast widać, który plik odpowiada której witrynie podczas zarządzania serwerem z wieloma hostami wirtualnymi.
Wybór odpowiedniego środowiska hostingowego
Techniki konfiguracji omówione w tym przewodniku mają zastosowanie niezależnie od konfiguracji hostingu, ale wybór środowiska serwera znacząco wpływa na wydajność i elastyczność.
- Hosting współdzielony — Idealny dla początkujących lub małych witryn, gdzie konfiguracja serwera jest zarządzana dla ciebie. NGINX lub Apache jest wstępnie skonfigurowany, a ty w
