Wyszukiwanie w witrynie

Jak zainstalować Apache z wirtualnym hostem na CentOS 8


Serwer WWW Apache to popularny serwer WWW HTTP typu open source, który nadal cieszy się ogromnym udziałem w rynku w branży hostingu. Zawiera mnóstwo funkcji, w tym ulepszenia modułów, obsługę wielu protokołów, uproszczoną konfigurację i obsługę wielu języków, żeby wymienić tylko kilka.

Przeczytaj także: Jak zainstalować Nginx na CentOS 8

W tym przewodniku przeprowadzimy Cię przez proces instalacji serwera WWW Apache na CentOS 8 i RHEL 8 ze środowiskiem Virtual Host. W chwili pisania tego samouczka najnowsza wersja Apache to Apache 2.2.43.

Instalowanie serwera WWW Apache

Aby rozpocząć, najpierw zaktualizuj listę pakietów systemowych CentOS 8 lub RHEL 8, używając następującego polecenia dnf.

sudo dnf update

Po zakończeniu aktualizacji zainstaluj serwer WWW Apache, wykonując następujące polecenie.

sudo dnf install httpd

Po zainstalowaniu możesz sprawdzić wersję Apache, uruchamiając polecenie obr./min.

rpm -qi httpd

Polecenie wypisuje tablicę informacji, takich jak wersja, data wydania, kompilacja i architektura pakietu.

Aby uruchomić usługę internetową Apache HTTP, uruchom komendę systemctl.

sudo systemctl start httpd

Aby potwierdzić, czy usługa jest uruchomiona, wykonaj.

sudo systemctl status httpd

Z danych wyjściowych wynika, że status „aktywny” w kolorze zielonym oznacza, że serwer WWW Apache jest uruchomiony.

Aby rozwiać wszelkie wątpliwości, czy serwer WWW działa, poproś Apache o stronę testową, przeglądając adres IP lub nazwę domeny swojego serwera, jak pokazano.

http://server-ip  

Możesz uzyskać adres IP serwera, uruchamiając polecenie ifconfig. Jeśli Twój serwer jest hostowany w chmurze, możesz uzyskać publiczny adres IP, uruchamiając polecenie curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Podczas przeglądania adresu IP serwera powinna wyświetlić się następująca strona internetowa.

Jest to pewne potwierdzenie, że serwer WWW działa.

Zarządzanie serwerem WWW Apache

Po zainstalowaniu i uruchomieniu Apache możesz używać narzędzia inspekcyjnego systemctl do zarządzania Apache.

Na przykład, aby zatrzymać Apache, uruchom polecenie:

sudo systemctl stop httpd

Aby ponownie uruchomić usługę, wykonaj:

sudo systemctl start httpd

Jeśli dokonałeś zmian w którymkolwiek z plików konfiguracyjnych i musisz uruchomić ponownie, aby zastosować zmiany, wykonaj polecenie:

sudo systemctl restart httpd

Ponowne uruchomienie usługi zwykle powoduje zakłócenie działania usługi. Lepszą alternatywą jest po prostu ponowne załadowanie bez przerywania połączenia.

sudo systemctl reload httpd

Aby automatycznie uruchomić serwer WWW Apache po uruchomieniu lub ponownym uruchomieniu, uruchom poniższe polecenie. Dzięki temu Apache uruchomi się automatycznie, bez Twojej interwencji.

sudo systemctl enable httpd

Jeśli zdecydujesz się nie uruchamiać usługi automatycznie podczas rozruchu, uruchom:

sudo systemctl disable httpd

Konfigurowanie wirtualnych hostów Apache

Domyślnie serwer WWW Apache jest skonfigurowany do obsługi lub hostowania tylko jednej witryny internetowej. Jeśli chcesz hostować tylko jedną witrynę internetową, ten krok nie jest wymagany. Jeśli jednak planujesz hostować wiele domen na swoim serwerze, musisz skonfigurować wirtualne hosty Apache.

Host wirtualny to oddzielny plik zawierający konfiguracje umożliwiające ustawienie domeny odrębnej od domeny domyślnej. Na potrzeby tego przewodnika skonfigurujemy wirtualnego hosta dla domeny crazytechgeek.info.

Domyślny host wirtualny znajduje się w katalogu /var/www/html. Działa to tylko w przypadku jednej witryny. Aby utworzyć oddzielny wirtualny host dla naszej domeny, utworzymy inną strukturę katalogów w katalogu /var/www, jak pokazano.

sudo mkdir -p /var/www/crazytechgeek.info/html

Dodatkowo możesz także utworzyć katalog do przechowywania plików dziennika.

sudo mkdir -p /var/www/crazytechgeek.info/log

Następnie edytuj uprawnienia do plików, używając zmiennej środowiskowej $USER, jak pokazano.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Dostosuj także uprawnienia do katalogu webroot, jak pokazano.

sudo chmod -R 755 /var/www

Następnie utwórz przykładowy plik index.html, jak pokazano.

sudo vim /var/www/crazytechgeek.info/html/index.html

Naciśnij literę 'i' na klawiaturze i wklej przykładową treść, jak pokazano, która będzie wyświetlana w przeglądarce internetowej podczas testowania hosta wirtualnego.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Zapisz i wyjdź z pliku konfiguracyjnego.

Po utworzeniu przykładowego pliku indeksu i katalogu witryny możesz teraz kontynuować i utworzyć plik hosta wirtualnego. Plik hosta wirtualnego będzie zawierał konfigurację witryny Twojej domeny i poinstruuje Apache, w jaki sposób będzie reagował na żądania klientów.

Plik hosta wirtualnego będzie zawierał konfigurację witryny Twojej domeny i poinstruuje Apache, w jaki sposób będzie reagował na żądania klientów. Ale kontynuując, musisz utworzyć 2 katalogi: katalogi sites-available i sites-enabled.

Plik hosta wirtualnego będzie przechowywany w katalogu sites-available, natomiast katalog sites-enabled będzie zawierał symboliczne łącze do hosta wirtualnego.

Utwórz oba katalogi, jak pokazano.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Następnie zmodyfikuj główny plik konfiguracyjny serwera WWW Apache i poinstruuj Apache, gdzie ma zlokalizować hosta wirtualnego w katalogu obsługującym witryny.

sudo vim /etc/httpd/conf/httpd.conf

Dołącz linię, jak pokazano na samym końcu pliku konfiguracyjnego.

IncludeOptional sites-enabled/*.conf

Zapisz i wyjdź.

Teraz utwórz plik hosta wirtualnego, jak pokazano:

sudo vim /etc/httpd/sites-available/crazytechgeek.info

Wklej poniższą treść i zastąp crazytechgeek.info własną nazwą domeny.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Zapisz i wyjdź z pliku.

Teraz włącz plik hosta wirtualnego, tworząc dowiązanie symboliczne w katalogu sites-enabled.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Dostosowywanie uprawnień SELinux dla wirtualnych hostów

CentOS 8 i RHEL 8 są dostarczane z SELinux, który jest modułem bezpieczeństwa wzmacniającym bezpieczeństwo systemu Linux. Ponieważ w poprzednim kroku skonfigurowałeś niestandardowy katalog dziennika, musisz zaktualizować niektóre zasady SELinux, aby poinstruować serwer WWW Apache, aby zapisywał w tym katalogu.

Istnieją 2 podejścia do dostosowywania zasad SELinux Apache: dostosowywanie dostosowywania polityk uniwersalnie i polityk w katalogu. To drugie jest preferowane, ponieważ jest bardziej preferowane.

Dostosowywanie zasad SELinux w katalogu

Edycja uprawnień SELinux do katalogu dzienników zapewnia całkowitą kontrolę nad zasadami serwera WWW Apache. Ta metoda jest dość długa i wymaga ręcznego skonfigurowania typu kontekstu dla dodatkowych katalogów określonych w pliku konfiguracyjnym hosta wirtualnego.

Zanim zaczniesz, najpierw potwierdź typ kontekstu przypisany do katalogu logów przez SELinux:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Dane wyjściowe powinny być podobne do tych, które mamy poniżej.

Z danych wyjściowych wynika, że ustawiony kontekst to httpd_sys_content_t. Oznacza to, że serwer WWW może odczytywać tylko pliki z katalogu dziennika. Musisz zmienić ten kontekst na httpd_log_t, aby umożliwić Apache generowanie i dodawanie wpisów dziennika do katalogu.

Dlatego wykonaj polecenie:

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Jeśli zdarzy Ci się pojawić błąd poniżej „semanage: nie znaleziono polecenia”.

Oznacza to, że pakiety udostępniające polecenie semanage nie są zainstalowane. Aby naprawić ten błąd, musisz zainstalować te pakiety. Ale najpierw sprawdź, które pakiety udostępniają polecenie semanage, uruchamiając:

sudo dnf whatprovides /usr/sbin/semanage

Dane wyjściowe dają nam pakiet zapewniający semanage, czyli policycoreutils-python-utils.

Teraz zainstaluj pakiet, jak pokazano, za pomocą menedżera pakietów DNF.

sudo dnf install policycoreutils-python-utils

Polecenie zmiany kontekstu powinno teraz działać.

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Aby zapisać zmiany i nadać im trwałość, wydaj polecenie restorecon, jak pokazano:

sudo restorecon -R -v /var/www/crazytechgeek.info/log

Zmiany możesz zatwierdzić ponownie uruchamiając komendę:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Pamiętaj, że typ kontekstu zmienił się na httpd_log_t, jak widać w wynikach.

Uruchom ponownie Apache, aby zmiany zostały zastosowane.

sudo systemctl restart httpd

Możesz teraz sprawdzić, czy Apache zapisuje pliki dziennika w katalogu dziennika, wyświetlając jego zawartość, jak pokazano:

ls -l /var/www/crazytechgeek.info/log/

Powinieneś zobaczyć dwa pliki dziennika, jak pokazano: dziennik błędów i pliki dziennika żądań.

Testowanie wirtualnego hosta Apache

Na koniec musisz mieć pewność, że serwer Apache obsługuje plik hosta wirtualnego. Aby to zrobić, otwórz przeglądarkę i przejdź do adresu IP lub nazwy domeny swojego serwera:

http://domain-name

Doskonały! Oznacza to, że wszystko poszło dobrze i nasz wirtualny host jest obsługiwany zgodnie z oczekiwaniami.

Wniosek

W tym przewodniku dowiedzieliśmy się, jak zainstalować serwer WWW Apache na CentOS 8 i RHEL 8, a także jak skonfigurować plik hosta wirtualnego do udostępniać treści dla dodatkowej domeny. Możesz skonfigurować wiele plików hosta wirtualnego według własnego uznania, aby uwzględnić dodatkowe domeny.

Jeśli chcesz skonfigurować kompletny stos hostingowy, zaleciłem zainstalowanie stosu LAMP na CentOS 8.