Skirtumas tarp "Apache" ir "Tomcat" ir kodėl jos turi veikti kartu.


Paskelbimo data:2021 m. sausio 1 d.



INFOMARTION > Skirtumas tarp "Apache" ir "Tomcat" ir kodėl jos turi veikti kartu.

Apžvalga.

Norėčiau aprašyti "Apache" ir "Tomcat" skirtumus ir paaiškinti, kodėl juos reikia susieti, į kuriuos neradau tinkamo atsakymo, kai buvau naujokas, net paklausęs vyresniųjų ir pasidomėjęs internete. Kartais sakoma, kad "Apache" yra žiniatinklio serveris (atlieka statinį apdorojimą), o "Tomcat" yra servletų konteineris (atlieka dinaminį apdorojimą) (kaip man sakė vienas vyresnysis kolega, kai buvau naujokas), tačiau "Tomcat" taip pat atlieka žiniatinklio serverio funkcijas, jei atidžiai jas išnagrinėjame. Tuomet manytumėte, kad "Tomcat" yra viskas, ko jums reikia. Taip galiausiai grįžtama prie klausimo, kodėl "Apache" ir "Tomcat" reikia susieti. Tiems, kurie tai daro, norėčiau paaiškinti "Apache" ir "Tomcat" skirtumus ir kodėl jos turi veikti kartu.

Turinys

  1. Kodėl reikia susieti "Apache" ir "Tomcat"?
  2. "Apache" funkcijos
  3. "Tomcat" funkcijos
  4. svarstymas
  5. santrauka

1. Kodėl reikia susieti "Apache" ir "Tomcat"?

Pirmoji išvada, kurią galima padaryti, yra ta, kad skiriasi vaidmenų specializacija. "Apache" specializuojasi žiniatinklio serverio funkcijose, o "Tomcat" - dinaminiame apdorojime naudojant "Java".

Priežastis, dėl kurios rašoma, kad specializacija skiriasi, yra ta, kad pati "Tomcat" atlieka ir žiniatinklio serverio funkcijas. Tai gali būti šiek tiek kraštutinumas, bet jei yra sistema, kurioje "Apache" ir "Tomcat" yra susietos, nėra neįmanoma sukurti beveik tokią pačią sistemą naudojant tik "Apache" ir tik "Tomcat".

1-1. Kokie yra kompetencijos skirtumai?

Svarstydami vaidmenų specializacijos skirtumus, manome, kad tai sunku suprasti, nes staiga lyginami "Apache" ir "Tomcat". Lengviau suprasti, jei mąstysite apie "Tomcat" ir DB serverius. Tai gali skambėti ekstremaliai, tačiau galima sukurti programą naudojant tik "Tomcat" ir nesukuriant DB serverio. Pavyzdžiui, galite tvarkyti naudotojo informaciją xml arba nuosavybėje ir sukurti programą, kuri autentifikuoja prisijungimą pagal šią informaciją. Tačiau iš tikrųjų, jei pažvelgtumėte į bendrąsias žiniatinklio sistemas, dauguma sistemų vartotojo informaciją tvarko DB ir duomenis iš "Tomcat" nukreipia į DB serverį. Jei pagalvotumėte, kodėl, tai todėl, kad tokiu būdu galima efektyviau kurti programėles.

Kartais žmonės aiškina apie "Apache" ir "Tomcat" bendradarbiavimo "privalumus" ir "trūkumus", tačiau čia kalbama ne apie privalumus ir trūkumus. Paklausti apie "Tomcat" ir DB serverių susiejimo privalumus ir trūkumus, jie atsakytų, kad iš pradžių jų vaidmenys yra skirtingi. Tas pats pasakytina ir apie "Apache" bei "Tomcat", kurių pradiniai vaidmenys skiriasi.

1-2. Kas yra "Apache"?

Paminėjęs, kad vaidmenys skiriasi, norėčiau paaiškinti, kokie yra "Apache" ir "Tomcat" vaidmenys.

Dar kartą pakartosiu, kad "Apache" oficialiai vadinamas "Apache HTTP Server". "Apache" yra žiniatinklio serveris, tačiau trumpai tariant, jo paskirtis - analizuoti užklausas.

Konkrečiai jos yra šios.

  • Filtruoti (leisti/neleisti užklausas) tam tikriems IP adresams
  • Konkrečių URL adresų nukreipimas.
  • Konkrečių URL adresų atmetimas
  • Ryšių šifravimas naudojant SSL
  • Procesų priskyrimas konkretiems serveriams pagal užklausą

Tai tik vienas iš pavyzdžių, yra ir daugiau funkcijų, tačiau trumpai tariant, "Apache" (žiniatinklio serverio) paskirtis - tvarkyti iš naudotojų gautas užklausas.

"Tomcat" užduotis - nuspręsti, kokį atsakymą pateikti, atsižvelgiant į konkrečią užklausą. Nederėtų klaidingai suprasti, kad "Apache" nedraudžia kurti atsakymų. Lygiai taip pat, kaip "Tomcat" bendradarbiauja su DB serveriu ir palaiko paprastus duomenis (pvz., pranešimų sąrašus) "Tomcat" pusėje, "Apache" nesunkiai įgyvendina dinaminius puslapius, jei jie yra paprasti atsakymai. Svarbiausia yra tai, ką galima tvarkyti efektyviausiai ir tvarkingai.

1-3. Kas yra "Tomcat"?

Oficialus "Tomcat" pavadinimas yra "Apache Tomcat". "Tomcat" yra servletų konteineris, tačiau trumpai paaiškinant jo vaidmenį, jis atsakingas už dinaminį apdorojimą pagal užklausas.

Konkrečiai jos yra šios.

  • Registruokite duomenis pagal užklausos informaciją.
  • Kurkite dinamiškus puslapius ir atsakymus pagal užklausos informaciją.
  • Nustatykite naudotoją pagal užklausos informaciją ir kiekvienam naudotojui sukurkite skirtingą atsakymą.

Iš esmės "Tomcat" užduotis yra grąžinti naudotojui puslapius, kurie nėra fiksuoti puslapiai.

Tai dar vienas dalykas, kurio nereikėtų suprasti klaidingai: tai nereiškia, kad statinių puslapių (pvz., html) negalima talpinti į "Tomcat". Jei komandos dizaino filosofija yra visą html tvarkyti "Tomcat" pusėje, statinių puslapių talpinimas "Tomcat" nėra problema. Šiuo atveju taip pat svarbiausia yra tai, ką galima tvarkyti efektyviausiai ir tvarkingiausiai.

2. "Apache" funkcijos

Norėčiau pristatyti kai kurias "Apache" funkcijas. "Apache" pateikia keletą modulių (failų, į kuriuos pakuojami procesai). Įkelkite modulį ir aprašykite jo funkcijoms naudoti reikalingas konfigūracijos vertes. Norėčiau apibūdinti turimus modulius.

2-1. Galimybė apdoroti užklausas vienu metu.

Modulis "mpm_prefork_module" yra atitinkamas modulis. Taip pat yra "mpm_worker_module" ir "mpm_event_module", nors jų funkcijos beveik identiškos.

Nustatykite tokias vertes.

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

Taip apibūdinant, paleidus serverį, vienu metu gali būti paleisti "5" procesai ir lygiagrečiai apdoroti "5", o kai gaunama daug užklausų, lygiagrečiai gali būti apdorojama iki "250".

2-2. Užklausos URL perrašymas

Modulis "rewrite_module" yra atitinkamas modulis.

Nustatykite tokias vertes.

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

Taip nurodžius, jei užklausa atkeliauja per http, ji bus grąžinta naudotojui, kad šis dar kartą pateiktų užklausą per https.

2-3. Prieigos valdymas pagal IP adresą

Šis modulis šiek tiek skiriasi nuo modulio, tačiau jis kontroliuoja prieigą pagal IP adresą.

Pagal šį aprašymą bus užkirstas kelias prieigai iš kitų IP adresų nei "1.0.16.0/20", "1.0.64.0/18" ir "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. "Tomcat" funkcijos

Norėčiau paaiškinti "Tomcat" funkcionalumą.

3-1. Galimybė dinamiškai grąžinti tinklalapius naudojant "Java".

"Tomcat" kompetencija yra "gebėjimas dinamiškai grąžinti tinklalapius naudojant "Java". Paprastai visą "Java" apdorojimą kuriate ne patys, o naudojate jį kartu su įvairių organizacijų sukurtomis "Java" bibliotekomis ("Apache" moduliais).

  • Dinamiškai generuoti atsakymus pagal naudotojo užklausos parametrus.
  • Išvesti tam tikro formato žurnalo failus.
  • Kurti ir redaguoti "Excel" failus
  • Nustatykite, ar zip faile yra slaptažodis.

Sudėtingus procesus, tokius kaip pirmiau aprašytieji, galima atlikti tiesiog įdėjus biblioteką ir ją iškvietus. "Tomcat" vaidmuo - palengvinti šių sudėtingų procesų įgyvendinimą.

4. svarstymas

Paaiškinome, kad "Apache" ir "Tomcat" skiriasi "vaidmenų specializacija", tačiau tiek "Apache" ("Apache HTTP Server"), tiek "Tomcat" ("Apache Tomcat") sukūrė tas pats "Apache Software Foundation". Priežastis gali būti ta, kad "Apache" parašyta "C", o "Tomcat" - "Java", t. y. skirtingomis kalbomis, tačiau jos nesujungtos į vieną galbūt todėl, kad atlieka skirtingus vaidmenis."

"Tomcat" pagrindinis puslapis buvo gana platus, be to, jis gerai veikia ir kaip žiniatinklio serveris.

http://tomcat.apache.org/

  • SSL/TLS (ryšių šifravimas)
  • SSI (galimybė įterpti skirtingus HTML į HTML)
  • "Rewrite" (URL perrašymo funkcija)

"Apache" yra didelio našumo žiniatinklio serveris, tačiau jame yra daug nenaudojamų funkcijų, todėl "Apache Software Foundation" galėjo padaryti taip, kad "Tomcat" galėtų veikti savarankiškai be "Apache". Tačiau vis tiek geriau įtraukti "Apache", jei reikia išsamios užklausų kontrolės.

5. santrauka

Aprašomi "Apache" ir "Tomcat" skirtumai ir kodėl jie turi veikti kartu.

Maniau, kad atsakymą į šį klausimą sunku suprasti, nes "Tomcat" yra visavertis žiniatinklio serveris. Verta pagalvoti apie "Apache" ir "Tomcat" bendradarbiavimą, turint omenyje, kad "Tomcat", kaip žiniatinklio serverio, funkcija nėra pagrindinė (jis nėra specializuotas kaip žiniatinklio serveris).

Dėkojame, kad žiūrėjote iki pabaigos.