Jak zainstalować serwer WWW Apache na CentOS 7

wprowadzenie

serwer HTTP Apache jest najczęściej używanym serwerem internetowym na świecie. Zapewnia wiele zaawansowanych funkcji, w tym dynamicznie ładowane Moduły, solidną obsługę multimediów i rozległą integrację z innym popularnym oprogramowaniem.

w tym przewodniku zainstalujesz serwer WWW Apache z wirtualnymi hostami na serwerze CentOS 7.

wymagania wstępne

aby ukończyć ten przewodnik, musisz wykonać następujące czynności:

  • użytkownik niebędący rootem z uprawnieniami sudo skonfigurowany na serwerze, skonfigurowany zgodnie z początkową instrukcją konfiguracji serwera dla CentOS 7.
  • podstawowa zapora sieciowa skonfigurowana zgodnie z dodatkowymi zalecanymi krokami dla nowych serwerów CentOS 7.

Krok 1 — instalacja Apache

Apache jest dostępny w domyślnych repozytoriach oprogramowania CentOS, co oznacza, że można go zainstalować za pomocąyum menedżera pakietów.

jako użytkownik nieroot sudo skonfigurowany w wymaganiach wstępnych, zaktualizuj lokalny Apache httpd indeks pakietów, aby odzwierciedlić najnowsze zmiany upstream:

  • sudo yum update httpd

Po aktualizacji pakietów zainstaluj pakiet Apache:

  • sudo yum install httpd

po potwierdzeniu instalacji, yum zainstaluje Apache i wszystkie wymagane zależności.

jeśli wykonałeś dodatkowe zalecane kroki dla nowego przewodnika dla serwerów CentOS 7 wymienionego w sekcji Wymagania wstępne, zainstalujesz firewalldna swoim serwerze i musisz otworzyć port 80, aby Apache mógł obsługiwać żądania przez HTTP. Jeśli jeszcze tego nie zrobiłeś, możesz to zrobić, włączając usługęfirewalldhttp za pomocą następującego polecenia:

  • sudo firewall-cmd --permanent --add-service=http

Jeśli planujesz skonfigurować Apache do obsługi treści przez HTTPS, będziesz także chciał otworzyć port443, włączając usługęhttps:

  • sudo firewall-cmd --permanent --add-service=https

następnie przeładuj zaporę, aby wprowadzić w życie te nowe zasady:

  • sudo firewall-cmd --reload

po przeładowaniu zapory jesteś gotowy do uruchomienia usługi i sprawdzenia serwera www.

Krok 2 — sprawdzanie serwera www

Apache nie uruchamia się automatycznie na CentOS po zakończeniu instalacji. Musisz uruchomić proces Apache ręcznie:

  • sudo systemctl start httpd

sprawdź, czy usługa jest uruchomiona za pomocą następującego polecenia:

  • sudo systemctl status httpd

zobaczysz active status, gdy usługa jest uruchomiona:

Output
Redirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...

jak widać na tym wyjściu, usługa wydaje się być uruchomiona pomyślnie. Jednak najlepszym sposobem na przetestowanie tego jest żądanie strony od Apache.

możesz uzyskać dostęp do domyślnej strony docelowej Apache, aby potwierdzić, że oprogramowanie działa poprawnie poprzez twój adres IP. Jeśli nie znasz adresu IP serwera, możesz uzyskać go na kilka różnych sposobów z wiersza poleceń.

wpisz to w wierszu polecenia serwera:

  • hostname -I

To polecenie wyświetli wszystkie adresy sieciowe hosta, więc otrzymasz kilka adresów IP oddzielonych spacjami. Możesz wypróbować każdy z nich w przeglądarce internetowej, aby sprawdzić, czy działają.

Alternatywnie możesz użyćcurl, aby zażądać adresu IP zicanhazip.com, co da ci publiczny adres IPv4 widziany z innej lokalizacji w Internecie:

  • curl -4 icanhazip.com

gdy masz adres IP serwera, wprowadź go w pasku adresu przeglądarki:

http://your_server_ip

zobaczysz domyślną stronę Apache CentOS 7:

Domyślna strona Apache dla CentOS 7

ta strona wskazuje, że Apache działa poprawnie. Zawiera również kilka podstawowych informacji na temat ważnych plików Apache i lokalizacji katalogów. Teraz, gdy usługa jest zainstalowana i uruchomiona, możesz teraz używać różnych poleceń systemctl do zarządzania usługą.

Krok 3 — Zarządzanie procesem Apache

teraz, gdy masz już uruchomiony serwer WWW, przejdźmy do kilku podstawowych poleceń zarządzania.

aby zatrzymać serwer WWW, wpisz:

  • sudo systemctl stop httpd

aby uruchomić serwer WWW po jego zatrzymaniu, wpisz:

  • sudo systemctl start httpd

aby zatrzymać, a następnie ponownie uruchomić usługę, wpisz:

  • sudo systemctl restart httpd

Jeśli po prostu dokonujesz zmian w konfiguracji, Apache często może przeładować bez upuszczania połączeń. Aby to zrobić, użyj tego polecenia:

  • sudo systemctl reload httpd

domyślnie Apache jest skonfigurowany tak, aby uruchamiał się automatycznie po uruchomieniu serwera. Jeśli tego nie chcesz, wyłącz to zachowanie, wpisując:

  • sudo systemctl disable httpd

aby ponownie włączyć uruchamianie usługi podczas rozruchu, wpisz:

  • sudo systemctl enable httpd

Apache uruchomi się automatycznie po ponownym uruchomieniu serwera.

domyślna konfiguracja Apache pozwoli Twojemu serwerowi hostować jedną stronę internetową. Jeśli planujesz hostowanie wielu domen na swoim serwerze, musisz skonfigurować wirtualne hosty na serwerze Apache.

Krok 4 — Konfigurowanie wirtualnych hostów (zalecane)

korzystając z serwera WWW Apache, możesz użyć wirtualnych hostów (podobnych do bloków serwerów w Nginx) do hermetyzacji szczegółów konfiguracji i hostowania więcej niż jednej domeny z jednego serwera. W tym kroku skonfigurujesz domenę o nazwie example.com, ale powinieneś zastąpić ją własną nazwą domeny. Aby dowiedzieć się więcej o konfigurowaniu nazwy domeny za pomocą DigitalOcean, zapoznaj się z naszym wprowadzeniem do DNS DigitalOcean.

Apache na CentOS 7 ma domyślnie włączony jeden blok serwera, który jest skonfigurowany do obsługi dokumentów z katalogu /var/www/html. Chociaż działa to dobrze dla jednej witryny, może stać się nieporęczne, jeśli hostujesz wiele witryn. Zamiast modyfikować /var/www/html, utworzysz strukturę katalogów w /var/www dla witryny example.com, pozostawiając /var/www/html jako domyślny katalog, który ma być obsługiwany, jeśli żądanie klienta nie pasuje do żadnego innego miejsca.

Utwórz katalog html dla example.com w następujący sposób, używając flagi -p, aby utworzyć wszystkie niezbędne katalogi nadrzędne:

  • sudo mkdir -p /var/www/example.com/html

Utwórz dodatkowy katalog do przechowuj pliki dziennika dla witryny:

  • sudo mkdir -p /var/www/example.com/log

następnie przypisz własność katalogu html z $USER zmienna środowiskowa:

  • sudo chown -R $USER:$USER /var/www/example.com/html

upewnij się, że Twój root ma domyślne uprawnienia ustawione:

  • sudo chmod -R 755 /var/www

Next, create a sample index.html page using vi or your favorite editor:

  • sudo vi /var/www/example.com/html/index.html

Press i to switch to INSERT mode and add the following sample HTML to the file:

/var/www/example.com/html/index.html
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body></html>

Save and close the file by pressing ESC, typing :wq, and pressing ENTER.

dzięki katalogowi witryny i przykładowemu plikowi indeksu jesteś prawie gotowy do tworzenia wirtualnych plików hosta. Pliki wirtualnych hostów określają konfigurację oddzielnych witryn i informują serwer sieci Web Apache, jak reagować na różne żądania domen.

przed utworzeniem wirtualnych hostów należy utworzyć katalogsites-available, w którym będą one przechowywane. Utworzysz również katalog, który informuje Apache, że wirtualny host jest gotowy do obsługi odwiedzających. Katalog będzie zawierał dowiązania symboliczne do wirtualnych hostów, które chcemy opublikować. Utwórz oba katalogi za pomocą następującego polecenia:

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

następnie powiesz Apache ’ owi, aby szukał wirtualnych hostów w katalogu. Aby to osiągnąć, edytuj główny plik konfiguracyjny Apache i dodaj linię deklarującą opcjonalny katalog dla dodatkowych plików konfiguracyjnych:

  • sudo vi /etc/httpd/conf/httpd.conf

Dodaj tę linię na koniec pliku:

IncludeOptional sites-enabled/*.conf

Zapisz i zamknij plik po zakończeniu dodawania tej linii. Teraz, gdy masz swoje wirtualne katalogi hosta na miejscu, utworzysz plik wirtualnego hosta.

zacznij od utworzenia nowego pliku w katalogusites-available:

  • sudo vi /etc/httpd/sites-available/example.com.conf

Dodaj do następującego bloku konfiguracji i zmieńexample.com domenę na swoją nazwę domeny:

/etc/httpd/sites-available/example. com.conf
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/html ErrorLog /var/www/example.com/log/error.log CustomLog /var/www/example.com/log/requests.log combined</VirtualHost>

to powie Apache, gdzie bezpośrednio znaleźć root, który przechowuje publicznie dostępne Dokumenty internetowe. Informuje również Apache, gdzie ma przechowywać błędy i żądać dzienników dla tej konkretnej witryny.

Zapisz i zamknij plik po zakończeniu.

teraz, gdy utworzyłeś wirtualne pliki hosta, włączysz je, aby Apache wiedział, aby służyć im odwiedzającym. Aby to zrobić, utwórz dowiązanie symboliczne dla każdego hosta wirtualnego w katalogu :

  • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

Twój wirtualny host jest teraz skonfigurowany i gotowy do serwowania treści. Przed ponownym uruchomieniem usługi Apache, upewnijmy się, że SELinux ma odpowiednie zasady dla Twoich wirtualnych hostów.

Krok 5 — dostosowanie uprawnień SELinux dla hostów wirtualnych (zalecane)

SELinux jest skonfigurowany do pracy z domyślną konfiguracją Apache. Po skonfigurowaniu niestandardowego katalogu dziennika w pliku konfiguracyjnym wirtualnych hostów, podczas próby uruchomienia usługi Apache pojawi się błąd. Aby rozwiązać ten problem, musisz zaktualizować zasady SELinux, aby Apache mógł zapisywać do niezbędnych plików. SELinux zapewnia zwiększone bezpieczeństwo w środowisku CentOS 7, dlatego nie jest zalecane całkowite wyłączenie modułu jądra.

istnieją różne sposoby ustawiania zasad w zależności od potrzeb środowiska, ponieważ SELinux pozwala dostosować poziom bezpieczeństwa. Ten krok obejmie dwie metody dostosowywania zasad Apache: Uniwersalnie i w określonym katalogu. Dostosowywanie zasad dotyczących katalogów jest bezpieczniejsze i dlatego jest zalecanym podejściem.

uniwersalne dostosowanie zasad Apache

uniwersalne ustawienie zasad Apache powie SELinux, aby traktował wszystkie procesy Apache identycznie, używając logicznegohttpd_unified. Chociaż takie podejście jest wygodniejsze, nie daje takiego samego poziomu kontroli, jak podejście skupiające się na Polityce plików lub katalogów.

uruchom następujące polecenie, aby ustawić uniwersalną politykę Apache:

  • sudo setsebool -P httpd_unified 1

poleceniesetsebool zmienia wartości logiczne SELinux. Znacznik-P zaktualizuje wartość czasu rozruchu, dzięki czemu zmiana ta będzie utrzymywana podczas restartów. httpd_unified jest wartością logiczną, która powie SELinux, aby traktował wszystkie procesy Apache jako ten sam typ, więc włączyłeś go z wartością 1.

dostosowanie zasad Apache w katalogu

Indywidualne ustawienie uprawnień SELinux dla katalogu /var/www/example.com/log da ci większą kontrolę nad zasadami Apache, ale może również wymagać więcej konserwacji. Ponieważ ta opcja nie ustawia uniwersalnie zasad, musisz ręcznie ustawić typ kontekstu dla wszystkich nowych katalogów dziennika określonych w konfiguracjach hosta wirtualnego.

najpierw sprawdź typ kontekstu, który SELinux podał/var/www/example.com/logkatalog:

  • sudo ls -dZ /var/www/example.com/log/

To polecenie wyświetla i wypisuje kontekst SELinux katalogu. Zobaczysz wyjście podobne do następującego:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

obecny kontekst to httpd_sys_content_t, który informuje SELinux, że proces Apache może odczytywać tylko pliki utworzone w tym katalogu. W tym samouczku zmienisz Typ kontekstu katalogu/var/www/example.com/log nahttpd_log_t. Ten typ umożliwia Apache generowanie i dołączanie do plików dziennika aplikacji internetowych:

  • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

następnie użyj poleceniarestorecon, aby zastosować te zmiany i zachować je podczas restartów:

  • sudo restorecon -R -v /var/www/example.com/log

flaga-R uruchamia to polecenie rekurencyjnie, co oznacza, że zaktualizuje wszystkie istniejące pliki, aby użyć nowego kontekstu. Znacznik-v wyświetli zmiany kontekstu dokonane przez polecenie. Zobaczysz następujące wyjście potwierdzające zmiany:

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

możesz wyświetlić listę kontekstów jeszcze raz, aby zobaczyć zmiany:

  • sudo ls -dZ /var/www/example.com/log/

wyjście odzwierciedla zaktualizowany Typ kontekstu:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

teraz, gdy katalog/var/www/example.com/log używa typuhttpd_log_t, jesteś gotowy do przetestowania konfiguracji wirtualnego hosta.

Krok 6 — testowanie wirtualnego hosta (zalecane)

Po zaktualizowaniu kontekstu SELinux za pomocą którejkolwiek z metod, Apache będzie mógł zapisać do katalogu/var/www/example.com/log. Możesz teraz pomyślnie zrestartować usługę Apache:

  • sudo systemctl restart httpd

Wyświetl zawartość katalogu/var/www/example.com/log, aby sprawdzić, czy Apache utworzył pliki dziennika:

  • ls -lZ /var/www/example.com/log

zobaczysz, że Apache był w stanie utworzyć plikierror.log Irequests.log określone w konfiguracji wirtualnego hosta:

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

teraz, gdy masz skonfigurowany wirtualny host i zaktualizowane uprawnienia SELinux, Apache będzie teraz obsługiwał Twoją nazwę domeny. Możesz to sprawdzić, przechodząc do http://example.com, gdzie powinieneś zobaczyć coś takiego:

sukces! Na example.com wirtualny host działa!

to potwierdza, że Twój wirtualny host został pomyślnie skonfigurowany i obsługuje zawartość. Powtórz kroki 4 i 5, aby utworzyć nowe wirtualne hosty z uprawnieniami SELinux dla dodatkowych domen.

wniosek

w tym samouczku zainstalowałeś i zarządzałeś serwerem WWW Apache. Teraz, gdy masz zainstalowany serwer WWW, masz wiele opcji dla rodzaju treści, które możesz obsługiwać i technologii, których możesz użyć, aby stworzyć bogatsze doświadczenie.

Jeśli chcesz zbudować bardziej kompletny stos aplikacji, możesz spojrzeć na ten artykuł, Jak skonfigurować stos LAMP na CentOS 7.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *