Serwer WWW przechowuje, przetwarza i dostarcza strony internetowe odwiedzającym witrynę. Istnieje całkiem sporo opcji oprogramowania serwerów WWW Open Source, ale serwer Apache HTTP jest uznawany za najczęściej używany serwer WWW na świecie. Wynika to z faktu, że oprócz tego, iż jest on oprogramowaniem open-source, jego modułowa architektura pozwala na rozszerzanie jego możliwości poprzez dodawanie modułów do różnych celów. W rezultacie serwer WWW jest niezwykle solidny.
Jeśli chcesz zainstalować Apache na systemie CentOS 7, ten poradnik jest dla Ciebie. Dodatkowo dowiesz się, jak tworzyć wirtualne hosty aby móc obsługiwać wiele stron internetowych na jednym serwerze Apache HTTP działającym na systemie CentOS.
To szczegółowy poradnik skupiający się wyłącznie na instalacji Apache. Jeśli szukasz poradnika w punktach na temat stosu LAMP, mamy ten przewodnik po Jak zainstalować Linux, Apache, MySQL, PHP (LAMP) na CentOS 7, z którym możesz się zapoznać. A teraz zaczynajmy!
Wymagania wstępne
Ponieważ jest to poradnik praktyczny, powinieneś posiadać następujące elementy:
- Serwer z systemem CentOS 7, który możesz utworzyć na CloudSigma w kilku prostych krokach, korzystając z tego linku.
- Skonfiguruj użytkownika innego niż root z uprawnieniami sudo na swoim serwerze. Następnie zaloguj się jako ten użytkownik.
- Skonfiguruj podstawową zaporę sieciową, postępując zgodnie z instrukcjami w naszym poradniku dotyczącym Konfiguracji zapory sieciowej za pomocą FirewallD na CentOS 7.
Krok 1: Instalacja serwera Apache HTTP
Apache można znaleźć w domyślnych repozytoriach CentOS. W związku z tym instalacja jest prosta przy użyciu menedżera pakietów yum. Zgodnie z sekcją wymagań wstępnych, musisz być zalogowany jako użytkownik niebędący rootem. Uruchom następujące polecenie w terminalu, aby zaktualizować lokalny indeks pakietów Apache httpd:
|
1 |
sudo yum update httpd |
Po zaktualizowaniu pakietów wprowadź następujące polecenie, aby zainstalować Apache:
|
1 |
sudo yum install httpd |
Potwierdź instalację i poczekaj, aż yum zainstaluje Apache oraz wymagane zależności.
Jeśli wykonałeś kroki opisane w poradniku dotyczącym Setting Up a Firewall with FirewallD on CentOS 7 i włączyłeś zaporę dla portu 80, to wszystko jest gotowe. Firewalld to menedżer zapory sieciowej dla systemu CentOS. W przeciwnym razie możesz włączyć usługę http (port 80) w firewalld, wprowadzając następujące polecenie:
|
1 |
sudo firewall-cmd --permanent --add-service=http |
Jeśli planujesz obsługiwać ruch przez bezpieczny protokół HTTPS, możesz włączyć usługę https (port 443) w firewalld, wprowadzając następujące polecenie:
|
1 |
sudo firewall-cmd --permanent --add-service=https |
Na koniec musisz przeładować firewalld, aby zmiany weszły w życie. Oto polecenie przeładowania:
|
1 |
sudo firewall-cmd –reload |
W tym momencie masz już zainstalowany i skonfigurowany serwer Apache do obsługi ruchu przez HTTP lub HTTPS, w zależności od tego, czy uruchomiłeś powyższe polecenia.
Krok 2: Potwierdzenie, że serwer WWW Apache działa
W systemie CentOS proces Apache nie uruchamia się automatycznie po instalacji. Aby ręcznie uruchomić Apache, wprowadź następujące polecenie:
|
1 |
sudo systemctl start httpd |
Aby zweryfikować, czy usługa uruchomiła się pomyślnie, sprawdź jej status, wprowadzając następujące polecenie:
|
1 |
sudo systemctl status httpd |
Jeśli usługa działa, powinieneś zobaczyć dane wyjściowe podobne do poniższego zrzutu ekranu. Zwróć uwagę na aktywny status:

Dane wyjściowe wskazują, że usługa została pomyślnie uruchomiona i działa. Następnie musimy również przetestować, czy Apache może serwować stronę użytkownikom internetu. Apache zawiera domyślną stronę, której można użyć do przetestowania, czy serwer jest dostępny z poziomu sieci.
Będziesz musiał znaleźć publiczny adres IP swojego serwera, jeśli jeszcze go nie znasz. Tego adresu IP użyjesz w pasku adresowym przeglądarki, aby zażądać domyślnej strony WWW Apache. Możesz wyświetlić adresy sieciowe hosta, wprowadzając następujące polecenie:
|
1 |
hostname –I |
Z otrzymanej listy adresów możesz wypróbować każdy w swojej przeglądarce, aby potwierdzić, że działają. Opcjonalnie możesz użyć narzędzia curl aby uzyskać swój adres IP z icanhazip.com. Poniższe polecenie wyświetla Twój publiczny adres IP widziany z komputera w innej lokalizacji w internecie:
|
1 |
curl -4 icanhazip.com |
Gdy masz już publiczny adres IP swojego serwera, skopiuj go i wklej do paska adresu przeglądarki:
|
1 |
http://your_server_public_ip |
Twoja przeglądarka powinna załadować domyślną stronę internetową Apache dla systemu CentOS 7:

Jeśli udało Ci się załadować domyślną stronę Apache, oznacza to, że Twój serwer działa poprawnie. Jeśli przewiniesz w dół, zobaczysz podstawowe informacje o plikach Apache i lokalizacjach katalogów. Po zainstalowaniu i prawidłowym uruchomieniu usługi powinieneś móc korzystać z różnych systemctl poleceń do zarządzania usługą.
Krok 3: Zarządzanie usługą Apache
W tej sekcji przedstawimy kilka podstawowych poleceń do zarządzania serwerem Apache. Oto polecenie, które zatrzymuje serwer WWW:
|
1 |
sudo systemctl stop httpd |
Oto polecenie służące do uruchomienia serwera WWW:
|
1 |
sudo systemctl start httpd |
Następnie, oto polecenie do zrestartowania serwera WWW (zatrzymanie i uruchomienie):
|
1 |
sudo systemctl restart httpd |
Następnie pokażemy polecenie przeładowania usługi Apache. To polecenie jest konieczne, gdy wprowadzasz jedynie zmiany w konfiguracji. Dzięki przeładowaniu proces Apache zastosuje zmiany w konfiguracji bez przerywania połączeń, co miałoby miejsce w przypadku restartu:
|
1 |
sudo systemctl reload httpd |
Zgodnie z domyślną konfiguracją Apache uruchamia się automatycznie podczas startu serwera. Jeśli chcesz zmienić to zachowanie, oto polecenie wyłączające uruchamianie usługi przy starcie systemu:
|
1 |
sudo systemctl disable httpd |
Aby ponownie włączyć uruchamianie usługi przy starcie systemu, wpisz następujące polecenie:
|
1 |
sudo systemctl enable httpd |
Krok 4: Konfiguracja wirtualnych hostów Apache
Domyślnie Apache jest skonfigurowany do hostowania i obsługi jednej strony internetowej. W większości przypadków będziesz chciał, aby Twój serwer WWW obsługiwał i hostował wiele witryn. Na przykład możesz mieć subdomeny lub chcieć skonfigurować stronę bloga dla głównej witryny swojej firmy/organizacji. W tym miejscu do gry wkraczają wirtualne hosty Apache. Wirtualne hosty Apache umożliwiają skonfigurowanie serwera WWW do obsługi wielu stron internetowych. Wirtualne hosty Apache są odpowiednikiem bloków serwera (server blocks) w serwerze Nginx.
W tym samouczku pokażemy, jak utworzyć wirtualnego hosta przy użyciu example.com jako naszej domeny. Oczywiście domena example.com nie będzie działać w internecie, więc należy zastąpić ją swoją rzeczywistą domeną – kroki są takie same.
Podczas instalacji Apache na systemie CentOS instalowany jest jeden wirtualny host, który jest skonfigurowany do obsługi zawartości z katalogu /var/www/html. Taka konstrukcja sprawdza się dobrze, jeśli hostujesz jedną witrynę. Chcemy jednak mieć możliwość hostowania wielu stron. Pozostawimy domyślny katalog /var/www/html i zamiast tego utworzymy inny katalog dla domeny example.com w lokalizacji /var/www. Powodem pozostawienia domyślnego katalogu jest to, że będzie on obsługiwany, gdy żądania klientów nie będą pasować do żadnych innych witryn skonfigurowanych za pomocą wirtualnych hostów. Ponadto, jeśli zechcesz wyłączyć utworzone wirtualne hosty, domyślny katalog nadal będzie obsługiwał ruch.
Najpierw utwórz katalog wewnątrz /var/www dla swojej nazwy domeny. Możesz wybrać dowolną nazwę. Zaleca się jednak wybranie nazwy podobnej do domeny, aby łatwo ją zapamiętać podczas tworzenia pliku conf wirtualnego hosta. Wpisz następujące polecenie, aby utworzyć przykładowy katalog:
|
1 |
sudo mkdir -p /var/www/example |
Wpisz następujące polecenie, aby utworzyć dodatkowy folder, który będzie przechowywał pliki dziennika (logi) dla tej witryny:
|
1 |
sudo mkdir -p /var/www/example/log |
Po przygotowaniu katalogów witryny przypisz własność katalogu za pomocą zmiennej środowiskowej $USER, używając następującego polecenia:
|
1 |
sudo chown -R $USER:$USER /var/www/example |
Uruchom następujące polecenie, aby upewnić się, że katalog główny sieci Web ma domyślne uprawnienia:
|
1 |
sudo chmod -R 755 /var/www |
Teraz utwórz prostą stronę index.html za pomocą edytora nano wewnątrz katalogu example, wprowadzając następujące polecenie:
|
1 |
sudo nano /var/www/example/index.html |
W edytorze nano dodaj następujący fragment kodu HTML:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Witaj na Example.com!</title> </head> <body> <h1>Jeśli możesz zobaczyć tę wiadomość to, oznaczaże <em>example.com</em> wirtualny host działa poprawnie!</h1> </body> </html> |
Po zakończeniu zapisz plik, naciskając Ctrl O i naciśnij ENTER. Możesz teraz zamknąć edytor, naciskając Ctrl X.
Do tej pory mamy katalog Twojej witryny i podstawową stronę internetową do przetestowania hosta wirtualnego. Następnie chcemy utworzyć pliki konfiguracyjne hosta wirtualnego. Pliki hosta wirtualnego określają konfiguracje różnych witryn, które chcesz hostować na jednym serwerze Apache. Kierują one żądania dotyczące określonej nazwy domeny do jej konkretnego katalogu.
Pliki hostów wirtualnych są przechowywane w katalogu /etc/httpd/sites-available. Aktywowane pliki hostów wirtualnych są powiązane dowiązaniem symbolicznym z katalogu /etc/httpd/sites-available do katalogu /etc/httpd/sites-enabled . Te dwa katalogi nie są domyślnie tworzone w systemie CentOS, więc musisz je utworzyć samodzielnie. Wprowadź następujące polecenie, aby utworzyć te katalogi:
|
1 |
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Gdy katalogi są już na swoim miejscu, poinstruuj Apache, aby szukał hostów wirtualnych w katalogu sites-enabled. Zrobisz to, modyfikując główny plik konfiguracyjny Apache. Wprowadź następujące polecenie, aby otworzyć plik w edytorze nano:
|
1 |
sudo nano /etc/httpd/conf/httpd.conf |
Chcemy dodać linię, która poinstruuje Apache, aby szukał dodatkowych plików konfiguracyjnych w opcjonalnym katalogu. Przewiń na sam dół pliku i dodaj na końcu następującą linię:
|
1 |
IncludeOptional sites-enabled/*.conf |
Zapisz plik, naciskając Ctrl O i naciśnij ENTER. Możesz teraz zamknąć edytor, naciskając Ctrl X. Następnym krokiem jest utworzenie pliku hosta wirtualnego w katalogu sites-available. Wprowadź następujące polecenie, aby utworzyć i otworzyć nowy plik w edytorze nano:
|
1 |
sudo nano /etc/httpd/sites-available/example.conf |
W otwartym pliku dodaj następujący blok konfiguracyjny. Pamiętaj, aby zastąpić nasz example.com swoją rzeczywistą nazwą domeny, a jeśli użyłeś innej nazwy katalogu w /var/www/example, również odpowiednio to zaktualizuj:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example ErrorLog /var/www/example/log/error.log CustomLog /var/www/example/log/requests.log combined </VirtualHost> |
Jak widać, określiliśmy nazwę domeny oraz katalog główny dokumentów (document root), w którym znajdą się pliki obsługiwane dla tej domeny. Określiliśmy również lokalizację dziennika błędów (error log) – pomoże to podczas rozwiązywania problemów z serwerem.
Gdy mamy już nasz plik hosta wirtualnego w katalogu sites-available, kolejnym krokiem jest włączenie pliku poprzez utworzenie dowiązania symbolicznego do katalogu sites-enabled. Wprowadź następujące polecenie, aby utworzyć dowiązanie symboliczne:
|
1 |
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Jeśli wykonałeś dotychczasowe kroki, Twój wirtualny host powinien być już gotowy do serwowania zawartości Twojej witryny. Istnieje jednak jeszcze jedna konfiguracja, którą musisz przeprowadzić, zanim wirtualne hosty zaczną działać. Omówimy to w następnej kolejności.
Krok 5: Dostosowanie uprawnień SELinux w celu zezwolenia na wirtualne hosty
Dystrybucje Linuksa, w tym Fedora, RHEL i CentOS są domyślnie wyposażone w SELinux. SELinux (Security Enhanced Linux) to architektura bezpieczeństwa dla systemów Linux, która ogranicza i definiuje sposób, w jaki serwer powinien przetwarzać żądania oraz jak użytkownicy powinni wchodzić w interakcję z gniazdami, portami sieciowymi i kluczowymi katalogami.
Domyślnie SELinux współpracuje z domyślną konfiguracją Apache. Jednak w przypadku utworzonego niestandardowego wirtualnego hosta, zawierającego niestandardowy katalog logów, podczas próby ponownego uruchomienia usługi Apache zostanie zgłoszony błąd usługi. Rozwiązaniem jest zmodyfikowanie polityk SELinux, aby umożliwić usłudze Apache zapisywanie do niezbędnych plików.
SELinux sprawia, że CentOS jest wysoce bezpiecznym serwerem. Dlatego nie zalecamy jego całkowitego wyłączania. Biorąc pod uwagę, że SELinux pozwala na dostosowanie poziomu bezpieczeństwa na różne sposoby, zaleca się aktualizowanie lub ustawianie polityk wyłącznie w oparciu o potrzeby danego środowiska.
Masz dwie opcje aktualizacji polityk Apache: albo Uniwersalnie lub dla Określonego katalogu. Aktualizacja polityk dla konkretnego katalogu jest bezpieczniejsza. Dlatego jest to zalecana opcja.
-
Uniwersalna aktualizacja polityk Apache
Możesz zmodyfikować politykę Apache uniwersalnie, co nakaże SELinux traktować wszystkie procesy Apache identycznie, używając httpd_unified typu Boolean. Pamiętaj, że uniwersalna modyfikacja polityk Apache nie zapewni takiego samego poziomu kontroli, jak robienie tego dla każdego katalogu z osobna. Jest to jednak wygodniejsze, jeśli chodzi o utrzymanie. Uruchom następujące polecenie, aby zaktualizować polityki Apache uniwersalnie:
|
1 |
sudo setsebool -P httpd_unified 1 |
Zdefiniujmy, co robiją wartości w tym poleceniu:
- setsebool – aktualizuje wartości logiczne SELinux.
- -P flaga – aktualizuje wartość startową, dzięki czemu ta zmiana zostanie zachowana po ponownym uruchomieniu.
- httpd_unified – wartość logiczna, która nakaże SELinux traktowanie wszystkich procesów Apache jako tego samego typu. Użycie wartości 1 włącza ją.
-
Dostosowywanie polityk Apache dla katalogu
Jeśli chcesz mieć większą kontrolę nad katalogami, właściwym rozwiązaniem jest dostosowanie polityk Apache dla poszczególnych katalogów. Wiąże się to jednak z koniecznością częstszego utrzymania. Wynika to z faktu, że polityka nie jest globalna. W związku z tym konieczne będzie ręczne ustawienie typu kontekstu dla wszystkich nowych katalogów logów określonych w plikach konfiguracyjnych wirtualnego hosta.
Przed aktualizacją polityki najpierw sprawdź typ kontekstu, jaki SELinux przypisał do katalogu /var/www/example/log za pomocą następującego polecenia:
|
1 |
sudo ls -dZ /var/www/example/log/ |
Polecenie wyświetli wynik podobny do poniższego, który jest w zasadzie kontekstem SELinux dla tego katalogu:
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t to bieżący kontekst, informujący SELinux, że proces Apache może jedynie odczytywać pliki utworzone w tym katalogu. Ponieważ w konfiguracji naszego wirtualnego hosta chcemy, aby Apache zapisywał pliki logów w katalogu /var/www/example/log, zmodyfikujemy tę politykę, aby umożliwić Apache generowanie i dopisywanie do plików logów aplikacji internetowej. Kontekst, który na to pozwala, to httpd_log_t. Oto polecenie służące do aktualizacji kontekstu:
|
1 |
sudo semanage fcontext -a -t httpd_log_t "/var/www/example/log(/.*)?" |
Aby zastosować zmiany z powyższego polecenia i zachować je po ponownym uruchomieniu, wykonaj następujące polecenie:
|
1 |
sudo restorecon -R -v /var/www/example/log |
Zdefiniujmy, co robi to polecenie:
- restorecon – stosuje zmiany i zapewnia, że utrzymają się one po ponownym uruchomieniu.
- flaga -R – uruchomi polecenie rekurencyjnie, aktualizując wszystkie istniejące pliki, aby używały nowego kontekstu.
- flaga -v – wypisuje zmiany kontekstu po uruchomieniu polecenia. Dane wyjściowe będą wyglądać mniej więcej tak:
|
1 2 |
Wynik: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
|
1 |
sudo ls -dZ /var/www/example/log/ |
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
Krok 6: Testowanie konfiguracji wirtualnego hosta
Zanim będzie można przetestować wirtualny host, należy zrestartować usługi Apache. Oto odpowiednie polecenie:
|
1 |
sudo systemctl restart httpd |
Następnie wyświetl zawartość katalogu logów za pomocą następującego polecenia:
|
1 |
ls -lZ /var/www/example/log |
Powinno wyświetlić się coś takiego, wskazując, że Apache utworzył pliki logów:

Jeśli postępowałeś zgodnie z dotychczasowymi krokami, Apache powinien teraz móc serwować przykładową stronę HTML po przejściu pod nazwę domeny zdefiniowaną w pliku wirtualnego hosta. Jeśli chcesz, możesz powtórzyć kroki 4 i 5, aby skonfigurować dodatkowe domeny i odpowiednio zaktualizować ich uprawnienia SELinux.
Podsumowanie
W tym samouczku zainstalowaliśmy Apache, dowiedzieliśmy się, jak aktualizować polityki SELinux, aby umożliwić Apache zapisywanie do niestandardowych plików logów, a na koniec przetestowaliśmy naszą konfigurację, aby potwierdzić, że działa poprawnie. Korzystając z tej wiedzy, powinieneś być w stanie ją rozwinąć i serwować lepsze aplikacje o bogatszych funkcjonalnościach.
Jeśli chcesz zapoznać się z kompletnym stosem sieciowym, sprawdź nasz samouczek dotyczący jak zainstalować stos LAMP na CentOS 7.
Powodzenia!
Komentarze
Brak komentarzy. Bądź pierwszy.