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 firewalld
na 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ęfirewalld
http
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:
OutputRedirecting 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:
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:
<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:
<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/log
katalog:
- 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:
Outputdrwxr-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:
Outputrestorecon 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:
Outputdrwxr-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:
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.