Server HTTP Apache

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 4 mai 2022; verificările necesită 2 modificări .
Server HTTP Apache

Logo Apache
Tip de server web și software de server
Autor Robert McCool [d]
Dezvoltator Apache Software Foundation [1]
Scris in C [3] [4] [5] […]
Sistem de operare Sistem de operare similar Microsoft Windows și Unix
Limbi de interfață Engleză
Prima editie 1995
ultima versiune
Licență Licență Apache 2.0 [6]
Site-ul web httpd.apache.org
 Fișiere media la Wikimedia Commons

Serverul Apache HTTP (este o abreviere distorsionată pentru engleză.  un server neregulat ; printre utilizatorii ruși, traducerea Apache este în general acceptată ) este un server web gratuit .

Apache este un software multiplatform care acceptă sistemele de operare Linux , BSD , macOS , Microsoft Windows , Novell NetWare , BeOS .

Principalele avantaje ale Apache sunt fiabilitatea și flexibilitatea configurației. Vă permite să conectați module externe pentru a furniza date, să utilizați un SGBD pentru a autentifica utilizatorii, să modificați mesajele de eroare etc. Suportă IPv4 .

Istorie

Serverul a fost scris la începutul anului 1995 și se crede că numele său este derivat din  numele glumeț „un [server] neregulat”  ,  deoarece a remediat erori în serverul NCSA HTTPd 1.3 World Wide Web de atunci. Ulterior, din versiunea 2.x, serverul a fost rescris și acum nu conține codul NCSA . Momentan, dezvoltarea se desfășoară în ramura 2.4, iar în versiunile 1.3, 2.0 și 2.2 se fac doar remedieri de securitate. În acest moment, cea mai recentă versiune a ramurii 2.4 este 2.4.46 (5 august 2020), pentru prima versiune este 1.3.42.

Serverul web Apache este dezvoltat și întreținut de o comunitate deschisă de dezvoltatori sub auspiciile Apache Software Foundation și este inclus în multe produse software , inclusiv baza de date Oracle și IBM WebSphere .

Din aprilie 1996 până în prezent a fost cel mai popular server HTTP de pe Internet . Statisticile Netcraft arată următoarele date de utilizare Apache:

Apache are o cotă de piață în Rusia de până la 17,45%. Este cel mai popular server web după NGINX cu o cotă de piață de 64,89% [11] .

Arhitectură

Core

Nucleul Apache include funcționalități de bază, cum ar fi gestionarea fișierelor de configurare, protocolul HTTP și un sistem de încărcare a modulelor. Nucleul (spre deosebire de module) este dezvoltat în întregime de Apache Software Foundation , fără implicarea programatorilor externi.

Teoretic, nucleul apache poate funcționa în forma sa pură, fără utilizarea modulelor. Cu toate acestea, funcționalitatea unei astfel de soluții este extrem de limitată.

Nucleul Apache este scris în întregime în limbajul de programare C.

Sistem de configurare

Sistemul de configurare Apache se bazează pe fișiere de configurare bazate pe text . Are trei niveluri de configurare condiționată:

Are propriul limbaj al fișierului de configurare bazat pe blocuri de directive. Aproape toți parametrii kernelului pot fi modificați prin fișierele de configurare, până la controlul MPM. Majoritatea modulelor au proprii lor parametri.

Unele module folosesc fișiere de configurare a sistemului de operare (de exemplu, /etc/passwd și /etc/hosts ) în munca lor.

În plus, parametrii pot fi setați prin comutatoarele din linia de comandă .

Modele multiprocesor (MPM)

Există multe modele simetrice de multiprocesare pentru serverul web Apache . Iată pe cele principale:

Nume Dezvoltator Sistem de operare acceptat Descriere Scop stare
muncitor Apache Software Foundation Linux , FreeBSD Model hibrid multiprocesor-multithread. În timp ce menține stabilitatea soluțiilor multiprocesor, vă permite să serviți un număr mare de clienți cu o utilizare minimă a resurselor. Servere web cu încărcare medie. Grajd.
pre-furca Apache Software Foundation Linux , FreeBSD MPM, bazat pe pre-crearea proceselor separate, nu utilizează mecanismul thread-urilor. Securitate și stabilitate mai mare datorită izolării proceselor unele de altele, menținând compatibilitatea cu bibliotecile vechi care nu acceptă thread-uri. Grajd.
copil Apache Software Foundation linux Model hibrid, cu un număr fix de procese. Servere foarte încărcate, capacitatea de a rula procese copil folosind un nume de utilizator diferit pentru a îmbunătăți securitatea. În dezvoltare, instabil.
netware Apache Software Foundation Novell NetWare Model cu mai multe fire optimizat pentru mediile NetWare. Servere Novell NetWare Grajd.
winnt Apache Software Foundation Microsoft Windows Un model cu mai multe fire create pentru sistemul de operare Microsoft Windows . Servere care rulează Windows Server . Grajd.
Apache-ITK Steinar H Gunderson Linux , FreeBSD MPM bazat pe modelul prefurcă. Permite fiecărei gazde virtuale să ruleze sub un uid și gid separat . Servere găzduite, servere critice pentru izolarea utilizatorilor și contabilitatea resurselor. Grajd.
cititor Sean Gabriel Heacock Linux , FreeBSD Model bazat pe MPM percopil. Permite fiecărei gazde virtuale să ruleze sub un uid și gid separat . Nu folosește fire. Asigurarea securității sporite, lucrând cu biblioteci care nu acceptă fire. Lansare stabilă din 4 octombrie 2007 , lansare experimentală din 10 septembrie 2009 .
eveniment Apache Software Foundation Linux , FreeBSD Modelul folosește fire de execuție, iar sondarea sigură pentru fire se bazează pe worker. este conceput pentru a servi mai multe solicitări simultan, prin descărcarea unor procesări către firele de execuție, eliberând firele de lucru pentru a răspunde noilor solicitări. Oferă performanță îmbunătățită. nu funcționează bine pe platformele mai vechi cărora le lipsește un multithreading bun, dar cerința EPoll sau KQueue face acest lucru nesolubil. Grajd.

Sistem de module

Apache HTTP Server acceptă modularitatea . Există mai mult de 500 de module [12] care îndeplinesc diverse funcții. Unele dintre ele sunt dezvoltate de echipa Apache Software Foundation , dar majoritatea sunt de către dezvoltatori individuali open source .

Modulele pot fi fie incluse în server în momentul compilării , fie încărcate dinamic, prin directivele fișierului de configurare.

Modulele fac lucruri precum:

Unele aplicații web, cum ar fi panourile de control ISPmanager și VDSmanager , sunt implementate ca un modul Apache.

Mecanismul gazdei virtuale

Apache are un mecanism de gazdă virtuală încorporat . Vă permite să serviți pe deplin multe site-uri ( nume de domenii ) pe o singură adresă IP , afișând propriul conținut pentru fiecare dintre ele.

Pentru fiecare gazdă virtuală, puteți specifica propriile setări de kernel și modul, puteți restricționa accesul la întregul site sau la fișiere individuale. Unele MPM, cum ar fi Apache-ITK, vă permit să rulați un proces httpd pentru fiecare gazdă virtuală cu un uid și un ghid separat .

Există și module care vă permit să luați în considerare și să limitați resursele serverului ( CPU , RAM , trafic ) pentru fiecare gazdă virtuală.

Funcționalitate

Integrare cu alte software și limbaje de programare

Există multe module care adaugă suport pentru diverse limbaje de programare și sisteme de dezvoltare la Apache.

Acestea includ:

În plus, Apache acceptă mecanismele CGI și FastCGI , ceea ce vă permite să executați programe în aproape toate limbajele de programare, inclusiv C , C++ , Lua , sh , Java .

Securitate

Apache are diverse mecanisme de securitate și control al accesului la date. Principalele sunt:

Unele module MPM au capacitatea de a porni fiecare proces Apache folosind un uid și un gid diferit cu utilizatorul și grupul de utilizatori corespunzător.

Există, de asemenea, un mecanism suexec utilizat pentru a rula scripturi și aplicații CGI cu drepturi de utilizator și acreditări.

Pentru a implementa criptarea datelor transmise între client și server, se folosește mecanismul SSL , implementat prin biblioteca OpenSSL . Certificatele X.509 sunt folosite pentru autentificarea serverului web .

Există instrumente de securitate externe, cum ar fi mod_security .

Internaționalizare

Începând cu versiunea 2.0, serverul a devenit posibil să determine locația utilizatorului . Mesajele de eroare și evenimente trimise către browser sunt acum în mai multe limbi și utilizează tehnologia SSI .

De asemenea, este posibil să se implementeze prin intermediul serverului afișarea diferitelor pagini pentru utilizatori cu locații diferite. Apache acceptă multe codificări, inclusiv Unicode , care vă permite să utilizați pagini create în orice codificare și în orice limbă.

Gestionarea evenimentelor

Administratorul poate seta pagini și handlere personalizate pentru toate erorile și evenimentele HTTP , cum ar fi 404 (Negăsit) sau 403 (Interzis). Inclusiv există posibilitatea de a rula scripturi și de a afișa mesaje în diferite limbi.

Partea server include

În versiunile 1.3 și mai vechi, a fost implementat mecanismul Server Side Includes, care vă permite să generați în mod dinamic documente HTML pe partea serverului.

SSI este gestionat de modulul mod_include inclus în distribuția de bază a Apache.


Vezi și

Note

  1. http://www.apache.org/foundation/
  2. https://downloads.apache.org/httpd/Announcement2.4.html
  3. http://linuxdocs.org/HOWTOs/Apache-Overview-HOWTO-12.html
  4. https://github.com/apache/httpd
  5. Proiectul Apache Open Source pe Open Hub: Pagina de limbi - 2006.
  6. https://httpd.apache.org/docs/trunk/license.html
  7. Web Server Survey - August 2007  (  link inaccesibil) . Netcraft (august 2007). Consultat la 21 iunie 2009. Arhivat din original pe 7 februarie 2009.
  8. Web Server Survey - mai 2009  (engleză)  (link nu este disponibil) . Netcraft (mai 2009). Consultat la 21 iunie 2009. Arhivat din original la 30 mai 2009.
  9. Ianuarie 2011 Web Server Survey  (engleză)  (link nu este disponibil) . Data accesului: 14 ianuarie 2011. Arhivat din original la 16 ianuarie 2011.
  10. Ianuarie 2016 Web Server Survey  . Arhivat din original pe 12 iunie 2016.
  11. Statisticile internetului rusesc runfo.ru . www.runfo.ru Data accesului: 16 februarie 2017. Arhivat din original pe 17 februarie 2017.
  12. Apache Module Registry Arhivat la 3 februarie 2010 la Wayback Machine 
  13. Apache::ASP Arhivat 15 noiembrie 2011 la Wayback Machine 
  14. Rivet - Webscripting for Tcl'ers . Consultat la 6 octombrie 2011. Arhivat din original la 27 septembrie 2011.

Literatură

Link -uri