Różnica między Apache'em a Tomcatem i dlaczego muszą one ze sobą współpracować.


Data publikacji:1 stycznia 2021 r.



INFOMARTION > Różnica między Apache'em a Tomcatem i dlaczego muszą one ze sobą współpracować.

Przegląd.

Chciałbym opisać różnice między Apache'em a Tomcatem oraz dlaczego muszą być one połączone, na co nie mogłem znaleźć satysfakcjonującej odpowiedzi, gdy byłem początkujący, nawet po wypytaniu moich starszych kolegów i poszukaniu informacji w Internecie. Czasami mówi się, że Apache jest serwerem WWW (wykonuje statyczne przetwarzanie danych), a Tomcat jest kontenerem serwletów (wykonuje dynamiczne przetwarzanie danych) (tak powiedział mi starszy kolega, gdy byłem nowy), ale Tomcat ma również funkcje serwera WWW, jeśli dobrze się przyjrzeć. Wtedy można by pomyśleć, że Tomcat jest wszystkim, czego potrzebujesz. Prowadzi to w końcu do pytania, dlaczego Apache i Tomcat muszą być ze sobą połączone. Dla tych, którzy to robią, chciałbym wyjaśnić różnice pomiędzy Apache'em a Tomcatem oraz dlaczego muszą one ze sobą współpracować.

Spis treści

  1. Powody łączenia Apache'a i Tomcata
  2. Cechy Apache
  3. Funkcje Tomcata
  4. rozważania
  5. streszczenie

1. Powody łączenia Apache'a i Tomcata

Pierwszym wnioskiem, jaki można wyciągnąć, jest różnica w specjalizacji ról. Apache specjalizuje się w funkcjach serwera WWW, natomiast Tomcat - w dynamicznym przetwarzaniu danych przy użyciu języka Java.

Powodem napisania, że istnieje różnica w specjalizacji, jest to, że sam Tomcat pełni również funkcję serwera WWW. Może to trochę ekstremalne podejście, ale jeśli istnieje system, w którym Apache i Tomcat są połączone, to nie jest niemożliwe zrealizowanie prawie takiego samego systemu przy użyciu tylko Apache'a i tylko Tomcata.

1-1. Jakie są różnice w wiedzy specjalistycznej?

Rozważając różnice w specjalizacji ról, mamy wrażenie, że jest to trudne do zrozumienia, ponieważ porównanie dokonywane jest nagle między Apache'em a Tomcatem. Łatwiej jest to zrozumieć, jeśli myśli się w kategoriach Tomcata i serwerów DB. Może to zabrzmieć ekstremalnie, ale możliwe jest stworzenie aplikacji z wykorzystaniem tylko Tomcata, bez konieczności konfigurowania serwera DB. Na przykład można zarządzać informacjami o użytkowniku w języku xml lub we właściwościach, a następnie utworzyć aplikację uwierzytelniającą logowanie na podstawie tych informacji. Jednak w rzeczywistości, jeśli przyjrzeć się ogólnym systemom internetowym, większość systemów zarządza informacjami o użytkownikach w bazie danych i kieruje dane z Tomcata do serwera bazy danych. Jeśli się zastanowić, dlaczego tak się dzieje, to dlatego, że w ten sposób można efektywniej tworzyć aplikacje.

Czasami ludzie tłumaczą "zalety" i "wady" współpracy Apache'a i Tomcata, ale tu nie chodzi o zalety i wady. Zapytani o "zalety" i "wady" łączenia serwerów Tomcat i DB, odpowiadają, że już na wstępie ich role są różne. To samo dotyczy Apache'a i Tomcata, które na początku pełnią różne role.

1-2. Co to jest Apache?

Skoro już wspomniałem, że role są różne, chciałbym teraz wyjaśnić, jakie są role Apache'a i Tomcata.

Po raz kolejny Apache jest oficjalnie znany jako Apache HTTP Server. Apache jest serwerem WWW, ale w skrócie jego rola polega na przetwarzaniu żądań.

Są to w szczególności.

  • Filtrowanie (zezwalanie/odmawianie żądań) dla określonych adresów IP
  • Przekierowanie dla określonych adresów URL.
  • Odrzucanie określonych adresów URL
  • Szyfrowanie komunikacji za pomocą protokołu SSL
  • Przydzielanie procesów do określonych serwerów na żądanie

Powyżej przedstawiono tylko jeden przykład, a funkcji jest więcej, ale w skrócie rola Apache'a (serwera WWW) polega na obsłudze żądań otrzymywanych od użytkowników.

Zadaniem Tomcata jest podjęcie decyzji, jaki rodzaj odpowiedzi należy wykonać w oparciu o konkretne żądanie. Nie należy błędnie rozumieć, że Apache nie zabrania tworzenia odpowiedzi. Tak jak Tomcat współpracuje z serwerem DB i przechowuje proste dane (np. listy wiadomości) po stronie Tomcata, tak Apache nie ma problemu z implementacją dynamicznych stron, o ile są to proste odpowiedzi. Kluczowe jest to, co można zrobić najskuteczniej i najsprawniej.

1-3. Co to jest Tomcat?

Oficjalna nazwa programu Tomcat to "Apache Tomcat". Tomcat jest kontenerem serwletów, ale aby w skrócie wyjaśnić jego rolę, należy powiedzieć, że jest on odpowiedzialny za dynamiczne przetwarzanie danych na podstawie żądań.

Są to w szczególności.

  • Zarejestruj dane na podstawie informacji o żądaniu.
  • Tworzenie dynamicznych stron i odpowiedzi na podstawie informacji o żądaniu.
  • Określ użytkownika na podstawie informacji o żądaniu i utwórz inną odpowiedź dla każdego użytkownika.

Zasadniczo zadaniem Tomcata jest zwracanie użytkownikowi stron, które nie są stronami stałymi.

Jest to kolejny punkt, którego nie należy źle rozumieć: nie oznacza to, że statyczne strony (np. html) nie powinny być umieszczane w Tomcacie. Jeśli filozofia projektowa zespołu polega na zarządzaniu całym html po stronie Tomcata, nie ma problemu z umieszczaniem statycznych stron w Tomcacie. Również w tym przypadku kluczową kwestią jest to, co można załatwić najskuteczniej i najsprawniej.

2. Cechy Apache

Chciałbym przedstawić kilka cech Apache'a. Apache udostępnia szereg modułów (plików, w których pakowane są procesy). Załaduj moduł i opisz wartości konfiguracyjne wymagane do korzystania z jego funkcji. Chciałabym opisać, jakie moduły są dostępne.

2-1. Zdolność do równoczesnego przetwarzania wniosków.

Właściwym modułem jest moduł "mpm_prefork_module". Istnieją także moduły "mpm_worker_module" i "mpm_event_module", choć ich funkcjonalność jest prawie identyczna.

Ustaw wartości w następujący sposób.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

Zgodnie z tym opisem, po uruchomieniu serwera można uruchomić "5" procesów i jednocześnie przetwarzać "5" równolegle, a w przypadku dużej liczby żądań można przetwarzać równolegle do "250".

2-2. Przepisywanie adresu URL żądania

Właściwym modułem jest moduł "rewrite_module".

Ustaw wartości w następujący sposób.

<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Jeśli zostanie to ujęte w ten sposób, to jeśli żądanie zostanie wysłane w trybie http, zostanie ono zwrócone użytkownikowi, aby ponownie złożył żądanie w trybie https.

2-3. Kontrola dostępu na podstawie adresu IP

Ten moduł różni się nieco od modułu, ale kontroluje dostęp na podstawie adresu IP.

Poniższy opis uniemożliwi dostęp z adresów IP innych niż "1.0.16.0/20", "1.0.64.0/18" i "1.1.64.0/18".

<Directory />
    order deny,allow
    deny from all
    allow from 1.0.16.0/20
    allow from 1.0.64.0/18
    allow from 1.1.64.0/18
</Directory>

3. Funkcje Tomcata

Chciałbym wyjaśnić, na czym polega funkcjonalność Tomcata.

3-1. Możliwość dynamicznego zwracania stron internetowych przy użyciu języka Java.

Specyfika Tomcata polega na jego "zdolności do dynamicznego zwracania stron internetowych przy użyciu języka Java". Na ogół użytkownik nie tworzy sam całego przetwarzania w Javie, ale używa go w połączeniu z bibliotekami Javy (modułami w Apache) tworzonymi przez różne organizacje.

  • Dynamiczne generowanie odpowiedzi na podstawie parametrów żądania użytkownika.
  • Wyświetlanie plików dziennika w określonym formacie.
  • Tworzenie i edycja plików programu Excel
  • Określ, czy plik zip ma hasło.

Złożone procesy, takie jak opisane powyżej, można zrealizować po prostu wstawiając bibliotekę i wywołując ją. Zadaniem Tomcata jest ułatwienie realizacji tych złożonych procesów.

4. rozważania

Wyjaśniliśmy, że różnica między Apachem a Tomcatem polega na "specjalizacji ról", ale zarówno Apache (Apache HTTP Server), jak i Tomcat (Apache Tomcat) zostały stworzone przez tę samą Apache Software Foundation. Powodem może być to, że Apache jest napisany w C, a Tomcat w Javie, czyli w różnych językach, ale powodem, dla którego nie połączono ich w jeden, może być fakt, że pełnią one różne role."

Strona domowa Tomcata jest dość obszerna, a ponadto działa on dobrze jako serwer WWW.

http://tomcat.apache.org/

  • SSL/TLS (szyfrowanie komunikacji)
  • SSI (możliwość osadzania różnych elementów HTML w obrębie HTML)
  • Rewrite (funkcja przepisywania adresów URL)

Apache jest wydajnym serwerem WWW, ale ma wiele funkcji, które nie są używane, dlatego Apache Software Foundation może sprawić, że Tomcat będzie działał niezależnie bez Apache'a. Jeśli jednak potrzebna jest szczegółowa kontrola nad żądaniami, nadal lepiej jest włączyć Apache.

5. streszczenie

Opisane są różnice między Apache'em a Tomcatem oraz powody, dla których muszą one ze sobą współpracować.

Wydawało mi się, że odpowiedź na to pytanie jest trudna do zrozumienia, ponieważ Tomcat jest w pełni funkcjonalnym serwerem WWW. Dobrze jest zastanowić się nad współpracą Apache'a i Tomcata, pamiętając, że funkcja Tomcata jako serwera WWW nie jest jego główną funkcją (nie jest on wyspecjalizowany jako serwer WWW).

Dziękujemy, że oglądaliście do końca.