Powrót do bloga

Konfiguracja serwera WWW Apache na serwerze VPS z systemem Ubuntu lub Debian

Konfiguracja serwera WWW Apache na serwerze VPS z systemem Ubuntu lub Debian

Wprowadzenie

Apache jest obecnie najczęściej używanym serwerem WWW na świecie. Jest to oprogramowanie open-source opracowane ponad dwadzieścia lat temu i utrzymywane przez Apache Software Foundation. Według stanu na wrzesień 2020 r. szacuje się, że obsługuje 35% całego ruchu na stronach internetowych na świecie.

Programiści wolą Apache ze względu na jego szybkość, bezpieczeństwo, niezawodność, solidność i łatwość dostosowywania. Ponadto Apache jest w stanie sprostać potrzebom wielu środowisk, ponieważ umożliwia instalację różnych rozszerzeń i modułów. Jest to możliwe dzięki zestawowi konfiguracji, które programiści i administratorzy serwerów mogą modyfikować w celu realizacji różnych celów. W tym samouczku przeprowadzimy Cię przez ogólne pliki konfiguracyjne i opcje, które mogą wpływać na różne wyniki na serwerach Ubuntu i Debian.

Debian i Ubuntu należą do najczęściej wybieranych serwerowych systemów operacyjnych. Oba mają wiele podobieństw. Na przykład oba używają menedżera pakietów APT i pakietów DEB do ręcznej instalacji. Podobnie obsługują ustawienia Apache i strukturę katalogów. W związku z tym powinieneś być w stanie postępować zgodnie z tym samouczkiem na dowolnym z tych systemów operacyjnych. Najpierw możesz skorzystać z tego samouczka, aby skonfigurować serwer Ubuntu w kilku krokach.

Następnie zaloguj się jako użytkownik inny niż root z uprawnieniami sudo i zaczynajmy!

Jak zainstalować Apache na Ubuntu i Debianie

Jeśli Twój serwer nie ma jeszcze zainstalowanego Apache, możesz go łatwo zainstalować za pomocą jednego polecenia. Najpierw uruchom polecenie aktualizacji:

Następnie możesz zainstalować Apache, wydając następujące polecenie:

Po zakończeniu instalacji możesz sprawdzić zainstalowaną wersję za pomocą polecenia:

W momencie pisania tego samouczka wersja brzmiała:

Apache Web Server

Następnie odwiedź adres IP lub nazwę domeny swojego serwera. Powinieneś zobaczyć domyślną stronę główną Apache:

Apache Web Server

Hierarchia plików Apache w dystrybucjach Ubuntu i Debian

Zarówno dystrybucje Ubuntu, jak i Debian używają menedżera pakietów apt. Podobnie, po zainstalowaniu pakietu, tworzy on podobne hierarchie plików. W naszym przypadku, zarówno dla Ubuntu, jak i Debiana, Apache przechowuje swoje pliki konfiguracyjne w katalogu „/etc/apache2”. Wejdź do tego katalogu za pomocą następującego polecenia i wyświetl jego zawartość:

Wynik polecenia możesz zobaczyć na poniższym zrzucie ekranu:

screenshot

Możesz zobaczyć szereg plików i podkatalogów, z którymi powinieneś się zapoznać podczas konfiguracji serwera Apache. Oto ich opis:

  • apache2.conf – Jest to główny plik konfiguracyjny serwera Apache. Zawiera również wszystkie domyślne konfiguracje. Chociaż prawie wszystkie konfiguracje można wykonać z poziomu tego pliku, zawsze zaleca się korzystanie z osobnych, dedykowanych plików dla uproszczenia i ochrony tego domyślnego pliku przed uszkodzeniem.
  • conf-available – Jest to katalog zawierający dodatkowe lokalne pliki konfiguracyjne oraz pliki innych aplikacji, które nie są jeszcze powiązane z żadnymi modułami. Konfiguracje w tym katalogu nie są aktywne, dopóki ich nie włączysz. Polecenie a2enconf  może włączyć plik konfiguracyjny. Oto zawartość tego katalogu:

Apache Web Server

  • conf-enabled – Jest to katalog zawierający dodatkowe lokalne konfiguracje i pliki konfiguracyjne innych aplikacji powiązanych z ich odpowiednimi modułami. Pliki konfiguracyjne w tym katalogu są aktywne i wpływają na działanie Apache. Możesz wyłączyć plik konfiguracyjny za pomocą polecenia a2disconf. Oto zawartość tego katalogu:

conf-enabled

  • envvars – Jest to plik zawierający zmienne środowiskowe Apache2. Zmienne w tym pliku wpływają tylko na Apache i nie są powiązane z Twoim systemem Linux. Oto zawartość tego pliku:

envvars

  • magic – Jest to plik zawierający instrukcje służące do określania typu MIME pliku. Pomaga serwerowi określić typ pliku.
  • mods-available – Jest to katalog zawierający pliki konfiguracyjne służące do ładowania modułów i ich konfiguracji. Nie są one jednak jeszcze włączone. Można je włączyć za pomocą polecenia a2enmod.
  • mods-enabled – Jest to katalog zawierający pliki konfiguracyjne służące do ładowania modułów i ich konfiguracji. Konfiguracje w tym katalogu są już włączone i linkują do odpowiednich modułów. Możesz wyłączyć te moduły za pomocą polecenia a2dismod. 
  • ports-conf – Jest to plik określający porty dostępne dla wirtualnych hostów oraz porty TCP, na których nasłuchuje Apache.
  • sites-available – Jest to katalog zawierający dostępne pliki konfiguracyjne dla wirtualnych hostów Apache. Wirtualne hosty pozwalają Apache na obsługę różnych stron internetowych. Pliki w tym katalogu nie są jeszcze aktywne. Możesz włączyć plik wirtualnego hosta za pomocą polecenia a2ensite.
  • sites-enabled – Jest to katalog zawierający aktywowane pliki konfiguracyjne wirtualnych hostów. Zazwyczaj zawiera on dowiązania symboliczne do plików w katalogu sites-available. Możesz wyłączyć plik wirtualnego hosta za pomocą polecenia a2dissite.

Modularna struktura plików konfiguracyjnych Apache pozwala na ich modyfikowanie i dodawanie w zależności od potrzeb.

Zawartość pliku Apache2.conf

Plik w “/etc/apache2/apache2.conf” zawiera główne pliki konfiguracyjne Apache. Dokładniej mówiąc, zawiera dyrektywy konfiguracyjne, które przekazują instrukcje serwerowi. Składa się z trzech sekcji definiujących konfiguracje globalnych procesów serwera, konfigurację domyślnego serwera oraz konfiguracje wirtualnych hostów .

W systemach Ubuntu i Debian większość pliku zawiera konfiguracje globalnych procesów serwera. W dolnej części można znaleźć konfiguracje dla domyślnego serwera i wirtualnych hostów, korzystając z dyrektywy „Include”. Apache używa dyrektywy „Include” do odczytywania innych plików konfiguracyjnych, a następnie dołączania ich do bieżącego pliku konfiguracyjnego od miejsca, w którym pojawia się dyrektywa. Dzieje się to podczas uruchamiania serwera Apache.

Przewijając na dół pliku apache2.conf, powinieneś zobaczyć kilka dyrektyw include. Dyrektywy te ładują definicje modułów w katalogu mods-enabled , plik ports.conf , lokalne konfiguracje w katalogu conf-enabled oraz konfiguracje wirtualnych hostów w katalogu sites-enabled .

Sekcja globalnej konfiguracji serwera

Sekcja globalnej konfiguracji serwera zawiera ustawienia i instrukcje, które kontrolują globalne działanie Apache. Zawiera ona kilka dyrektyw, których wartości można modyfikować, aby zmienić zachowanie Apache. Omówmy niektóre z nich:

  • Timeout – Ta dyrektywa określa maksymalny czas na realizację żądania przez serwer. Domyślnie jest to 300 sekund, co prawdopodobnie jest zbyt wysoką wartością, jeśli tworzysz aplikację o szybszym czasie reakcji. Możesz zmienić tę wartość na mniejszą, jeśli Twój serwer ma wystarczające zasoby.
  • KeepAlive – Określa, że każde połączenie powinno pozostać otwarte, aby obsługiwać wiele żądań od tego samego klienta. Domyślnie opcja ta jest ustawiona na „On”. Jeśli jednak zostanie ustawiona na „Off”, wówczas każde żądanie będzie musiało nawiązać nowe połączenie, nawet jeśli pochodzi od tego samego klienta. Może to spowodować znaczne przeciążenie serwera.
  • MaxKeepAliveRequests – Kontroluje maksymalną liczbę żądań dozwolonych podczas jednego trwałego połączenia przed jego zakończeniem. Aby zezwolić na nieograniczoną liczbę połączeń, ustaw wartość na 0. W celu uzyskania maksymalnej wydajności i efektywności ustaw tę liczbę na najwyższą możliwą.
  • KeepAliveTimeout – Określa maksymalną liczbę sekund oczekiwania na kolejne żądanie od tego samego klienta po ostatnim, zanim połączenie zostanie przerwane. Domyślnie jest to 5 sekund. Jeśli ten czas upłynie, przy następnym żądaniu zostanie nawiązane nowe połączenie w celu jego obsługi.
  • HostnameLookups – Decyduje, czy wyszukiwanie DNS powinno być włączone, czy nie. Domyślnie jest wyłączone. Jeśli je włączysz, każde żądanie spowoduje co najmniej jedno zapytanie do serwera nazw, co znacząco wpłynie negatywnie na wydajność serwera.

Domyślny plik wirtualnego hosta

Świeża instalacja serwera Apache zawiera domyślny plik wirtualnego hosta o nazwie 000-default.conf. Jest to plik, który obsługuje domyślną stronę index.html serwera Apache. Znajduje się on w katalogu sites-available. Zawartość tego pliku da Ci ogólne wyobrażenie o formacie plików wirtualnych hostów Apache. Wprowadź następujące polecenie, aby otworzyć ten plik:

Oto zawartość tego pliku. Dla zwięzłości usunęliśmy komentarze:

Jak widać w nagłówku konfiguracji VirtualHost *:80, domyślnie ten wirtualny host jest skonfigurowany do obsługi żądań na porcie 80. Jest to standardowy port HTTP.

Apache został zaprojektowany tak, aby używać najbardziej szczegółowej definicji wirtualnego hosta, która pasuje do konkretnego żądania. Oznacza to, że ten konkretny wirtualny host niekoniecznie musi obsługiwać każde żądanie skierowane do serwera. Jeśli istniałby inny plik wirtualnego hosta z bardziej szczegółową definicją, miałby on pierwszeństwo przed tym plikiem.

Oto opisy dyrektyw w pliku wirtualnego hosta:

  • ServerAdmin – Określa kontaktowy adres e-mail, który ma być używany w przypadku problemów z serwerem. Apache zazwyczaj wyświetla go na wygenerowanej stronie błędu. Jeśli ustawisz ServerSignature na „Email” w pliku /etc/apache2/conf-enabled/security.conf, adres e-mail podany tutaj zostanie wyświetlony z odnośnikiem mailto
  • DocumentRoot – Ta dyrektywa wskazuje na katalog zawierający pliki strony internetowej. Domyślną stronę powitalną Apache index można znaleźć w katalogu /var/www/html w systemie Ubuntu 20.04.
  • ErrorLog – Ta dyrektywa określa lokalizację pliku dziennika błędów.
  • CustomLog – Ta dyrektywa wskazuje lokalizację dziennika dostępu oraz format wyświetlania logów.

Dodatkowe dyrektywy wirtualnego hosta

  • ServerName – Określa nazwę domeny lub adres IP, które wirtualny host powinien obsługiwać. Gdybyśmy definiowali wiele wirtualnych hostów, aby nasz serwer Apache mógł obsługiwać wiele stron internetowych, dodalibyśmy dyrektywę ServerName i określili domenę, którą każdy wirtualny host powinien obsługiwać.
  • ServerAlias – Ta dyrektywa sprawia, że jeden plik wirtualnego hosta ma zastosowanie do więcej niż jednej nazwy, udostępniając alternatywne domeny prowadzące do tej samej zawartości. Na przykład, gdy użytkownicy mają dostęp do tej samej zawartości po poprzedzeniu nazwy domeny przedrostkiem www. Na przykład, moglibyśmy dodać następujący wpis do wirtualnego hosta dla domeny example.com:

Dyrektywa definicji katalogu

W rzeczywistych przypadkach pliki Twojej strony internetowej będą prawdopodobnie znajdować się w kilku katalogach. Domyślny plik wirtualnego hosta nie posiada dyrektywy Directory, ponieważ może obsługiwać tylko jeden plik index.html. Dyrektywa Directory określa, jak Apache traktuje różne katalogi wewnątrz głównego katalogu dokumentów strony. To właśnie w tej dyrektywie definiuje się również ograniczenia dostępu do systemu plików. Domyślnie Apache zezwala na dostęp z Internetu tylko do plików w katalogu /var/www. W tym katalogu możesz tworzyć inne katalogi, które będą zawierać pliki Twojej strony internetowej. Ponadto możesz określić, w jaki sposób ma odbywać się dostęp do plików w tym katalogu. Przykładowa definicja może wyglądać tak:

Dyrektywa <Directory /var/www/html> określa katalog, do którego będą miały zastosowanie te reguły. Opcja „AllowOverride” określa, czy plik „.htaccess” powinien nadpisywać ustawienia, jeśli umieścisz go w określonym katalogu. Jest to konieczne podczas pracy z frameworkami takimi jak Laravel, które współpracują z .htaccess i przepisywaniem adresów URL.

Aby dowiedzieć się więcej o wirtualnych hostach, możesz odwiedzić nasz poradnik o tym, jak skonfigurować wirtualne hosty Apache na Ubuntu 20.04. Oto przykładowy plik wirtualnego hosta ze wszystkimi zdefiniowanymi przez nas dyrektywami:

Redirect, Alias, and ScriptAlias Directives

W niektórych przypadkach możesz chcieć uzyskać dostęp do plików witryny lub plików wykonywalnych, które nie znajdują się bezpośrednio w katalogu DocumentRoot. W takich sytuacjach przydają się te trzy dyrektywy.

Dyrektywa Redirect instruuje klientów, aby wykonali nowe żądanie z innym adresem URL. Zazwyczaj będziesz jej używać, gdy chcesz skierować odwiedzających Twoją witrynę na inną domenę lub adres IP. Pamiętaj, że dyrektywa Redirect jest wykonywana jako pierwsza, przed Alias i ScriptAlias. Dyrektywa Alias mapuje adres URL na ścieżkę katalogu. Dyrektywa ScriptAlias mapuje adres URL na katalogi, które będą zawierać skrypty wykonywalne. Aby dyrektywy Alias i ScriptAlias działały, musisz ustawić uprawnienia do katalogu dla użytkownika www-data, z którego korzysta serwer WWW.

Jak włączyć witryny i moduły w Apache

Wirtualne hosty i moduły muszą zostać włączone, zanim staną się aktywne i dostępne dla procesu Apache. Ponadto wirtualne hosty są tworzone wewnątrz katalogu sites-available, jak wyjaśniono wcześniej. Jeśli posiadasz plik wirtualnego hosta o nazwie example.com.conf, możesz go włączyć za pomocą następującego polecenia:

To polecenie włącza wirtualnego hosta. Jednak aby zmiany weszły w życie, musisz poinstruować Apache, aby przeładował pliki konfiguracyjne, wprowadzając następujące polecenie:

Możesz chcieć wyłączyć plik wirtualnego hosta o nazwie example.com.conf aby Apache nie używał go do obsługi żądań. Aby to zrobić, wprowadź następujące polecenie wyłączające plik:

Ponownie, aby zmiany weszły w życie natychmiast, musisz poinstruować Apache, aby przeładował pliki konfiguracyjne, wprowadzając następujące polecenie:

Podobnie możesz włączać i wyłączać moduły, używając tej samej składni. Polecenie włączenia modułu to “a2enmod”, a polecenie wyłączenia modułu to “a2dismod.” Na przykład istnieje moduł Apache o nazwie mod_rewrite, który pomaga w przepisywaniu adresów URL w zależności od konfiguracji .htaccess. Musisz włączyć ten moduł, aby plik .htaccess działał. Możesz to zrobić, wprowadzając polecenie:

Aby ta zmiana weszła w życie, musisz przeładować konfigurację Apache. Możesz również wyłączyć ten moduł, wprowadzając polecenie:

Następnie przeładuj konfigurację Apache2, aby zmiany weszły w życie natychmiast.

Na koniec oto kilka dodatkowych zasobów, które pomogą Ci zapoznać się z serwerem WWW Apache:

Podsumowanie

W tym samouczku zdefiniowaliśmy podstawowe pliki konfiguracyjne Apache w systemach Ubuntu i Debian. Jak wykazaliśmy, Apache jest wysoce modularny, co oznacza, że można zainstalować wiele modułów do wykonywania różnych zadań.

Możesz łatwo włączać i wyłączać te moduły oraz zmieniać inne konfiguracje, aby osiągnąć różne rezultaty. Możesz teraz modyfikować lokalne pliki konfiguracyjne, które są następnie dołączane do głównego pliku konfiguracyjnego. Dzięki temu nie musisz się martwić o uszkodzenie globalnego pliku konfiguracyjnego.

Miłego korzystania z komputera!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.