Zainstaluj Apache na Ubuntu 18.04 Bionic Beaver Linux

Zainstaluj Apache na Ubuntu 18.04 Bionic Beaver Linux

Cel

Dowiedz się, jak zainstaluj Apache na Ubuntu 18.04, Jak skonfigurować wirtualne hosty, skonfigurować zaporę ogniową i używać certyfikatów SSL w celu bezpiecznego połączenia

Wymagania

  • Uprawnienia korzeniowe

Konwencje

  • # - Wymaga podanych poleceń Linuksa, które można wykonać z uprawnieniami root
    bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Wstęp

Serwer WWW Apache nie potrzebuje dużych prezentacji: oprogramowanie typu open source, wydane przez Apache Foundation, jest jednym z najczęściej używanych serwerów WWW na świecie. W tym samouczku zobaczymy, jak go zainstalować, dostosować konfigurację zapory, aby umożliwić ruch HTTP i HTTPS oraz konfiguruj wirtualne hosty na Ubuntu 18.04.

Instalacja

Instalowanie serwera WWW Apache na Ubuntu 18.04 Bionic Beaver to naprawdę prosty proces:

$ sudo apt-get aktualizacja && apt-get instaluj apache2

Skrypty instalacyjne Ubuntu zajmie się uruchomieniem i włączeniem Apache2 usługa w rozruchu.

Konfiguracja zapory ogniowej

Aby uzyskać dostęp do domyślnej treści obsługiwanej przez Apache, na tym samym komputerze, na którym działa serwer, będziemy musieli po prostu zwolnić przeglądarkę internetową i przejść do Lokalny Gospodarz na pasku adresu. Jeśli wszystko jest prawidłowo skonfigurowane, strona powinna nas powitać z „IT działa!" wiadomość:

Strona powitalna Apache

Jeśli zapora jest włączona w naszym systemie (tak jak powinna), aby zawartość była dostępna spoza naszego komputera, musimy umożliwić przychodzący ruch w porcie 80. Polecenie do uruchomienia zależy od używanego menedżera zapory. Na przykład podczas korzystania z UFW (Domyślnie Ubuntu), musimy uruchomić:

$ sudo ufw pozwól http

Podobnie, jeśli używasz Firewalld, Możemy uruchomić:

$ sudo firewall-cmd --Permanent --add-service = http && firewall-cmd--reload

Zauważ, że powyższe polecenie będzie miało swój wpływ na domyślną strefę zapory ogniowej. Jeśli chcemy działać na innym, musimy to określić za pomocą --strefa opcja.



Konfigurowanie wirtualnego hosta

Serwer WWW Apache ma możliwość uruchamiania więcej niż jednej strony internetowej na tym samym komputerze. Każda strona (wirtualny host w terminologii Apache), która powinna być obsługiwana, musi mieć własną konfigurację. Wirtualny host może być adresowy lub oparty na nazwie.

W tym samouczku skupimy się na drugim typu, ponieważ jest to łatwiejsze do konfiguracji i nie wymaga wielu adresów IP (wirtualne hosty oparte na nazwach pozwala wielu stronom udostępnić ten sam adres).

Domyślny wirtualny host

Na Ubuntu domyślny wirtualny host jest zdefiniowany w /etc/apache2/witryny katalog, wewnątrz 000-default.conf plik. Rzućmy na to okiem:

 [… .] ServerAdmin Webmaster@LocalHost DocumentRoot/var/www/html [… .] ERRORLOG $ apache_log_dir/błąd.Zaloguj się CustomLog $ Apache_Log_dir/Access.Dziennik połączony [… .]  
Kopiuj

Dyrektywa online 1 służy do grupowania ustawień używanych przez Apache dla określonego hosta wirtualnego. Pierwszą rzeczą, którą w nim zdefiniowaliśmy, jest to *: 80 instrukcja. Wskazuje to adres IP i port używany przez wirtualny host.

Wiele wirtualnych hostów można zdefiniować w tym samym pliku lub przez przestrzeganie schematu „Jedna wirtualna definicja hosta na plik”. W obu przypadkach pierwsza definicja jest uważana za domyślną, jeśli żaden inny wirtualny host nie jest dopasowany przez żądanie klienta.

ServerAdmin dyrektywa w linii 3IS Opcjonalnie i służy do określenia adresu kontaktowego, który wyświetli się serwer WWW w przypadku komunikatów o błędach. Zwykle chcemy podać prawidłowy adres e -mail jako argument tej dyrektywy, ponieważ serwer WWW będzie używać Mailto: na nim, aby ułatwić kontakt z administratorem.

DocumentRoot On line 4IS obowiązkowe i jest niezbędne do konfiguracji wirtualnej hosta. Argumentem tej instrukcji musi być prawidłowa ścieżka systemu plików. Podany katalog zostanie uznany za główny katalog wirtualnego hosta i nie może zawierać ciągłego „/”. W takim przypadku katalog główny dokumentu to jest /var/www/html. Jeśli spojrzymy na jego treść, widzimy, że zawiera ona indeks.html Strona używana jako strona powitalna serwera, którą widzieliśmy wcześniej.

Dwie ostatnie instrukcje w linii 8–9 w tym wirtualnym hostach to ErrorLog I CustomLog. Korzystając z pierwszego, ustawiamy plik, do którego serwer zarejestruje występujące błędy. Drugi, zamiast tego jest używany do rejestrowania żądań wysyłanych do serwera w określonym formacie (możesz użyć tego jako odniesienia dla dogłębnej wiedzy o formatach dziennika).



Utwórz nowy wirtualny host

Widzieliśmy, jak definiuje się domyślny wirtualhost; Załóżmy teraz, że chcemy obsłużyć inną stronę internetową za pomocą naszego WebServer: Musimy zdefiniować nowego wirtualnego gospodarza, aby móc osiągnąć nasz cel.

Jak wspomniano powyżej, wirtualne pliki hostów muszą być zdefiniowane wewnątrz /etc/apache2/witryny katalog (przynajmniej w dystrybucjach opartych na debian): dlatego utworzymy tam nasz plik. Przed wykonaniem tego chcemy utworzyć katalog, który ma być używany jako nasz Dokument root, i utwórz podstawową stronę, którą należy wyświetlić, gdy dotrzemy do witryny:

$ sudo mkdir/var/www/example && echo "!">/var/www/example/index.html 

Możemy teraz kontynuować konfigurację naszego wirtualnego hosta:

 DocumentRoot/var/www/przykład Servername www.przykład.lokalny 

Jest to minimalna konfiguracja potrzebna do uruchomienia wirtualnego hosta. Tutaj możemy zobaczyć nową dyrektywę, Nazwa serwera: To definiuje nasz wirtualny host. Zapiszmy ten plik jako przykład.conf. Aby aktywować nasz wirtualHost, używamy A2ENSITE Polecenie: Wszystko to polecenie to utworzyć symaltykę pliku w /etc/apache2/witryny informator:

$ sudo a2ensite przykład.conf

Następnie musimy ponownie załadować konfigurację serwera:

$ sudo systemCtl RELOOD APACHE2.praca

Zdefiniowaliśmy jednak nasz wirtualHost, ponieważ jest to test i nie mamy Wpis DNS powiązane z tym, aby sprawdzić, czy konfiguracja działa, musimy dodać wpis w /etc/hosts plik komputera, z którego próbujemy dotrzeć do witryny.

$ sudo echo "192.168.122.241 www.przykład.lokalne ">> /etc /hosts

Bez tej linii (i bez wpisu DNS) byłoby niemożliwe do powiązania adresu serwera z nazwą naszego wirtualnegohost, a bezpośrednio używając adresu IP serwera, zamiast tego „uruchamia” domyślny host wirtualny.

Z komputera klienckiego, jeśli teraz przejdziemy do „www.przykład.Lokalny ”powinniśmy zobaczyć minimalną stronę, którą konfigurujemy powyżej:

Przykład wskaźnika VirtualHost

Konfigurowanie SSL

SSL, skrót Bezpieczna warstwa gniazd To technologia, która pozwala nam szyfrować dane związane z klientem a serwerem. Gdy używane są certyfikaty SSL, https (Protokół transferu hiper tekstu bezpieczny) zastępuje HTTP w adresie URL.

Certyfikaty SSL są wydawane przez organ certyfikatów, który jako zaufana strona trzecia zapewnia, że ​​ktoś naprawdę twierdzi, że jest w Internecie. Certyfikaty SSL mogą być bardzo drogie, jednak istnieją dwie główne alternatywy w celu uzyskania certyfikatu: Utwórz własny certyfikat lub zdobądź jeden z nich Zaszypujmy.

Wygeneruj samowystarczalny certyfikat SSL

Chociaż generowanie samowystarczalnego certyfikatu nie jest to trudne zadanie i może być przydatne, gdy chcesz osiągnąć szyfrowanie, nie można go używać w kontekstach, w których sam certyfikat musi zostać podpisany przez zaufaną stronę trzecią. Możemy wygenerować samowystarczalny certyfikat za pomocą Openssl pożytek:

$ sudo openssl req -x509 \ -Days 365 \ -sha256 \ -Newkey RSA: 2048 \ -nodes \ -keyout Przykład.klucz \ -out przykładowy.pem 

Zobaczmy, co robi to polecenie. Pierwsza opcja, którą napotykamy, -x509, modyfikuje zachowanie polecenia, tak aby generowało to samowystarczalny certyfikat zamiast żądania certyfikatu.

Z -dni, W ciągu dnia ustawiamy ważność dla certyfikatu. Następna podana opcja jest -Newkey: Wraz z nim tworzymy nowy klucz, w tym przypadku RSA klucz o wielkości 2048 bitów. W naszym przypadku testowym nie chcemy szyfrować plik klucza prywatnego, więc użyliśmy -węzły. Jeśli ta opcja zostanie pominięta, plik, w którym przechowywany jest klawisz, będzie chroniony przez hasło, które zostaniemy poproszone o wstawianie za każdym razem, gdy serwer WWW zostanie ponownie uruchomiony.

Z -Keyout I -na zewnątrz Określamy plik, aby zapisać wygenerowany klucz i certyfikat odpowiednio. Podczas uruchamiania polecenia zostaniemy poproszeni o odpowiedź na niektóre pytania, a następnie klucz i certyfikat zostaną wygenerowane.

Zaraz zostaniesz poproszony o wprowadzenie informacji, które zostaną włączone do Twojego żądania certyfikatu. To, co zamierzasz wejść, to tak zwana nazwa wyróżniająca lub DN. Istnieje sporo pól, ale możesz zostawić puste pola na niektórych polach, jeśli wejdziesz, będzie wartość domyślna.', pole pozostanie puste. ----- Nazwa kraju (2-literowa kod) [AU]: IT State lub Province Nazwa (pełna nazwa) [Some State]: Nazwa lokalizacji (np. Miasto) []: Nazwa organizacji Milan (np. Firma) [Internet Widgits Pty Ltd] : Obrażenia inc. Nazwa jednostki organizacyjnej (np. Sekcja) []: nazwa zwyczajowa (e.G. serwer fqdn lub twoje imię) []: www.przykład.Lokalny adres e -mail []: 

Następnym krokiem jest skopiowanie naszego wygenerowanego klucza i certyfikatu do /etc/ssl/prywatny I /etc/SSL/SSL-CERTS DAJEKTORY: odpowiednio:

$ sudo mv przykład-CERT.PEM/etc/ssl/certs

Certyfikat jest publiczny, więc nie wymaga specjalnego pozwolenia. Teraz klucz:

Przykład $ sudo mv.klucz/etc/ssl/private

Ważne jest, aby dostosowywać uprawnienia do plików kluczowych. Jeśli zbadamy /etc/ssl/prywatny folder widzimy, że należy do źródło użytkownik i SSL-CERT grupa i ma 710 Jako uprawnienia, co oznacza, że ​​chociaż właściciel ma pełne uprawnienia, właściciel grupy może tylko uzyskać do niego dostęp i wymienić jej treść, i nie jest dozwolone żadne zezwolenie dla innych:

$ ls -ld/etc/ssl/private DRWX-x --- 2 root SSL-CERT 4096 MAR 16 11:57/etc/ssl/prywatny 

Zmieńmy odpowiednio nasze kluczowe uprawnienia do plików, dając właścicielowi czytanie i pisanie uprawnień oraz uprawnienia tylko do odczytu dla grupy:

$ sudo chown root: SSL-CERT/etc/ssl/private/przykład.Klucz $ sudo chmod 640/etc/ssl/private/przykład.klucz 

Aby skorzystać z naszego certyfikatu, musimy teraz włączyć moduł SSL Apache. Robimy to za pomocą A2enmod Komenda:

$ sudo a2enmod ssl

Jesteśmy prawie tam. Teraz nadszedł czas, aby zmodyfikować nasz wirtualny host i ustawić go w ten sposób:

 DocumentRoot/var/www/przykład Servername www.przykład.Lokalny # Włącz silnik SSL SSLENGINE na SSLCertificateFile/Etc/SSL/certs/przykład-cert.PEM SSLCertificateKeKeyFile/etc/ssl/private/przykład.klucz 
Kopiuj

Port 443 W linii 1is port używany do HTTPS (zamiast portu 80 używany do HTTP). Dodaliśmy również Sslengine on Instrukcja on linii 6, która jest dość oczywista.

Wreszcie w linii 8–9 określiliśmy ścieżki dla naszego certyfikatu i plików kluczowych, używając SslcertificateFile I SSLCertificateKeyeyFile instrukcje.

Teraz postępuj zgodnie z instukcjami, aby otworzyć porty zapory używane na początku samouczka, ale tym razem na zezwolenie https praca:

$ sudo ufw zezwala na https

Wreszcie, ponownie załaduj konfigurację Apache:

$ sudo systemCtl RELOOD APACHE2

Wszystkie zrobione. Teraz, jeśli od klienta, przejdziemy do https: // www.przykład.lokalny Adres, powinniśmy zobaczyć serwer WWW, który ostrzegał nas, że używany certyfikat nie jest bezpieczny (ponieważ jest zaufany). Jest to jednak podpis nasza konfiguracja, a ruch między klientem a serwerem zostanie zaszyfrowany (musisz dodać wyjątek, aby certyfikat go użyć).

SSL Browser Alert

Konfigurowanie Let's Encrypt

Alternatywa dla certyfikatów komercyjnych i podpisanych w sobie, reprezentowana przez „Let's Encrypt”. Let's Encrypt to bezpłatny, zautomatyzowany i otwarty organ certyfikatu; Jego celem jest umożliwienie automatycznego uzyskania certyfikatu zaufanego przez przeglądarkę bez żadnej interwencji człowieka.

Można to osiągnąć dzięki zastosowaniu KULMINACJA protokół i Agent zarządzania certyfikatem który działa na serwerze.

Aby uzyskać certyfikat, musimy wykazać kontrolę nad domeną, do której chcemy użyć certyfikatu. Jeśli nie mamy dostępu do powłoki na serwerze, powinniśmy skontaktować się z naszym usługodawcą, aby aktywować Let's Encrypt w naszym imieniu, ale prawdopodobnie istnieje dedykowana sekcja w panelu konfiguracji usług.

Jeśli zamiast tego mamy dostęp do danego serwera, przede wszystkim musimy zainstalować Certbot Klient ACME. Instalowanie Certbot na Ubuntu 18.04 To tylko kwestia biegania:

$ sudo apt-get aktualizacja && apt-get instaluj certbot python-certbot-apache

Pakiet CertBot jest wyposażony w Timer systemu Jednostka, która będzie prowadzić CertBot dwa razy dziennie, aby aktualizować certyfikat. Uzyskanie certyfikatu jest dość proste:

$ sudo certbot --apache -m -d 

Oczywiście, aby to działało, domena musi prawidłowo wskazywać na nasz publicznie dostępny serwer IP. Certbot poprosi o kilka pytań o dostosowanie konfiguracji, a jeśli wszystko pójdzie dobrze, certyfikat i klucz powinny zapisać się w /etc/limsecrrypt/na żywo/ informator. Po prostu poprawiaj swój wirtualny plik hosta, aby wskazać na nich i skończyłeś!

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Zainstaluj Arch Linux na stacji roboczej VMware
  • Ubuntu 20.04: WordPress z instalacją Nginx
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Włącz/wyłącz zaporę na Manjaro Linux
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Ubuntu 20.04 WordPress z instalacją Apache
  • Skonfiguruj serwer FTP w systemie Linux
  • Jak skonfigurować VSFTPD na Debian