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.