Apache HTTP-server
| Apache HTTP-server | |
|---|---|
| Apache logo | |
| | |
| Type | webserver og serversoftware |
| Forfatter | Robert McCool [d] |
| Udvikler | Apache Software Foundation [1] |
| Skrevet i | C [3] [4] [5] […] |
| Operativ system | Microsoft Windows og Unix-lignende operativsystem |
| Interface sprog | engelsk |
| Første udgave | 1995 |
| nyeste version | |
| Licens | Apache-licens 2.0 [6] |
| Internet side | httpd.apache.org _ |
| Mediefiler på Wikimedia Commons | |
Apache HTTP-server (er en forvrænget forkortelse for engelsk. en patchy server ; blandt russiske brugere er oversættelsen af Apache generelt accepteret ) er en gratis webserver .
Apache er en cross-platform software , der understøtter Linux , BSD , macOS , Microsoft Windows , Novell NetWare , BeOS -operativsystemer .
De vigtigste fordele ved Apache er pålidelighed og konfigurationsfleksibilitet. Det giver dig mulighed for at tilslutte eksterne moduler til at levere data, bruge en DBMS til at godkende brugere, ændre fejlmeddelelser osv. Understøtter IPv4 .
Historie
Serveren blev skrevet i begyndelsen af 1995 , og dens navn menes at være afledt af det jokulære navn "en usammenhængende [server]" , da den rettede fejl i den dengang så populære NCSA HTTPd 1.3 World Wide Web- server. Senere, fra version 2.x, blev serveren omskrevet og indeholder nu ikke NCSA -koden . I øjeblikket udføres udviklingen i 2.4-grenen, og der laves kun sikkerhedsrettelser i version 1.3, 2.0 og 2.2. I øjeblikket er den seneste version af 2.4-grenen 2.4.46 (5. august 2020), for den første version er den 1.3.42.
Apache-webserveren er udviklet og vedligeholdt af et åbent fællesskab af udviklere i regi af Apache Software Foundation og er inkluderet i mange softwareprodukter , herunder Oracle-databasen og IBM WebSphere .
Fra april 1996 til i dag har det været den mest populære HTTP -server på internettet . Netcraft -statistikker viser følgende Apache-brugsdata:
- i august 2007 kørte den på 51 % af alle webservere [7]
- i maj 2009 - med 46 % [8]
- i januar 2011 - med 59 %, det vil sige mere end 160 millioner websteder [9]
- i januar 2016 - med 33,56 %, det vil sige mere end 304 millioner websteder [10] .
Apache har en markedsandel i Rusland på op til 17,45%. Det er den mest populære webserver efter NGINX med en markedsandel på 64,89% [11] .
Arkitektur
Core
Apache-kernen inkluderer kernefunktionalitet såsom konfigurationsfilhåndtering, HTTP-protokollen og et modulindlæsningssystem. Kernen (i modsætning til moduler) er fuldstændig udviklet af Apache Software Foundation , uden involvering fra eksterne programmører.
Teoretisk set kan apache-kernen fungere i sin rene form, uden brug af moduler. Funktionaliteten af en sådan løsning er dog yderst begrænset.
Apache-kernen er udelukkende skrevet i programmeringssproget C.
Konfigurationssystem
Apache-konfigurationssystemet er baseret på tekstbaserede konfigurationsfiler . Den har tre betingede konfigurationsniveauer:
- Serverkonfiguration ( httpd.conf ). Konfigurationsdirektiverne er grupperet i tre hovedafsnit:
- direktiver, der kontrollerer Apache-processen som helhed (det globale miljø);
- direktiver, der definerer parametrene for "hoved"-serveren eller "standard"-serveren, der reagerer på anmodninger, der ikke behandles af virtuelle værter (definerer også standardindstillinger for alle andre virtuelle værter);
- indstillinger for virtuelle værter, der tillader webanmodninger at blive håndteret af en enkelt Apache-server, men omdirigeret til separate IP -adresser eller værtsnavne.
- Virtuel værtskonfiguration (httpd.conf siden version 2.2, extra/httpd-vhosts.conf).
- Indstilling på biblioteksniveau ( .htaccess ).
Det har sit eget konfigurationsfilsprog baseret på blokke af direktiver. Næsten alle kerneparametre kan ændres gennem konfigurationsfiler, op til MPM-kontrol. De fleste af modulerne har deres egne parametre.
Nogle moduler bruger operativsystemets konfigurationsfiler (f.eks . /etc/passwd og /etc/hosts ) i deres arbejde.
Derudover kan parametre indstilles via kommandolinjekontakter .
Multiprocessor-modeller (MPM)
Der er mange symmetriske multiprocessing -modeller til Apache-webserveren . Her er de vigtigste:
| Navn | Udvikler | Understøttet OS | Beskrivelse | Formål | Status |
|---|---|---|---|---|---|
| arbejder | Apache Software Foundation | Linux , FreeBSD | Hybrid multiprocessor-flertrådsmodel. Samtidig med at stabiliteten af multiprocessorløsninger bevares, giver det dig mulighed for at betjene et stort antal klienter med minimal brug af ressourcer. | Middelbelastede webservere. | Stabil. |
| forgaffel | Apache Software Foundation | Linux , FreeBSD | MPM, baseret på præ-oprettelse af separate processer, bruger ikke trådmekanismen. | Større sikkerhed og stabilitet på grund af isolering af processer fra hinanden, opretholdelse af kompatibilitet med gamle biblioteker, der ikke understøtter tråde. | Stabil. |
| barn | Apache Software Foundation | linux | Hybrid model, med et fast antal processer. | Højt belastede servere, muligheden for at køre underordnede processer ved hjælp af et andet brugernavn for at forbedre sikkerheden. | I udvikling, ustabil. |
| netware | Apache Software Foundation | Novell NetWare | Multi-threaded model optimeret til NetWare-miljøer. | Novell NetWare- servere | Stabil. |
| vinde | Apache Software Foundation | Microsoft Windows | En multi-threaded model skabt til Microsoft Windows -operativsystemet . | Servere, der kører Windows Server . | Stabil. |
| Apache-ITK | Steinar H Gunderson | Linux , FreeBSD | MPM baseret på prefork-modellen. Tillader hver virtuel vært at køre under en separat uid og gid . | Hostede servere, servere, der er vigtige for brugerisolering og ressourceregnskab. | Stabil. |
| gennemlæser | Sean Gabriel Heacock | Linux , FreeBSD | Model baseret på MPM per barn. Tillader hver virtuel vært at køre under en separat uid og gid . Bruger ikke tråde. | Sikring af øget sikkerhed, arbejde med biblioteker, der ikke understøtter tråde. | Stabil udgivelse dateret 4. oktober 2007 , eksperimentel udgivelse dateret 10. september 2009 . |
| begivenhed | Apache Software Foundation | Linux , FreeBSD | Modellen bruger tråde og trådsikker polling er baseret på arbejder. er designet til at betjene flere anmodninger samtidigt ved at overlade noget behandling til lyttertrådene, hvilket frigør arbejdstråde til at betjene nye anmodninger. | Leverer forbedret ydeevne. fungerer ikke godt på ældre platforme, der mangler god multithreading, men EPol- eller KQueue-kravet gør dette moot. | Stabil. |
Modulsystem
Apache HTTP Server understøtter modularitet . Der er mere end 500 moduler [12] , der udfører forskellige funktioner. Nogle af dem er udviklet af Apache Software Foundation -teamet , men størstedelen er af individuelle open source- udviklere.
Moduler kan enten inkluderes i serveren på tidspunktet for kompilering eller indlæses dynamisk gennem konfigurationsfildirektiver.
Moduler gør ting som:
- Understøttelse af programmeringssprog .
- Tilføjelse af funktioner.
- Korrigering af fejl eller ændring af grundlæggende funktioner.
- Styrkelse af sikkerheden .
Nogle webapplikationer, såsom ISPmanager og VDSmanager kontrolpaneler , er implementeret som et Apache-modul.
Virtuel værtsmekanisme
Apache har en indbygget virtuel værtsmekanisme . Det giver dig mulighed for fuldt ud at betjene mange websteder ( domænenavne ) på én IP-adresse og vise deres eget indhold for hver af dem.
For hver virtuel vært kan du angive dine egne kerne- og modulindstillinger, begrænse adgangen til hele webstedet eller individuelle filer. Nogle MPM'er, såsom Apache-ITK, giver dig mulighed for at køre en httpd - proces for hver virtuel vært med en separat uid og guide .
Der er også moduler, der giver dig mulighed for at tage hensyn til og begrænse serverressourcer ( CPU , RAM , trafik ) for hver virtuel vært.
Funktionalitet
Integration med anden software og programmeringssprog
Der er mange moduler, der tilføjer understøttelse af forskellige programmeringssprog og udviklingssystemer til Apache.
Disse omfatter:
- PHP (mod_php).
- Python ( mod python , mod wsgi ).
- Ruby (apache-ruby).
- Perl ( mod perl ).
- ASP (apache-asp) [13] .
- Tcl (nitte [14] )
Derudover understøtter Apache CGI- og FastCGI- mekanismer , som giver dig mulighed for at udføre programmer på næsten alle programmeringssprog, inklusive C , C++ , Lua , sh , Java .
Sikkerhed
Apache har forskellige sikkerhedsmekanismer og dataadgangskontrol. De vigtigste er:
- Begrænsning af adgang til bestemte mapper eller filer.
- Brugerautorisationsmekanisme til biblioteksadgang baseret på HTTP-godkendelse (mod_auth_basic) og digest - godkendelse (mod_auth_digest).
- Begræns adgangen til specifikke mapper eller hele serveren baseret på brugerens IP-adresser .
- Afvisning af adgang til visse typer filer for alle eller nogle brugere, såsom at nægte adgang til konfigurationsfiler og databasefiler.
- Der er moduler, der implementerer autorisation gennem en DBMS eller PAM .
Nogle MPM-moduler har mulighed for at starte hver Apache-proces ved hjælp af en anden uid og gid med den relevante bruger og brugergruppe.
Der er også en suexec- mekanisme, der bruges til at køre scripts og CGI -applikationer med brugerrettigheder og legitimationsoplysninger.
For at implementere kryptering af data, der overføres mellem klienten og serveren, bruges SSL - mekanismen , implementeret gennem OpenSSL - biblioteket . X.509 -certifikater bruges til at godkende webserveren .
Der er eksterne sikkerhedsværktøjer såsom mod_security .
Internationalisering
Fra og med version 2.0 blev det muligt for serveren at bestemme brugerens lokalitet . Fejl- og hændelsesmeddelelser sendt til browseren er nu på flere sprog og bruger SSI - teknologi.
Det er også muligt ved hjælp af serveren at implementere visning af forskellige sider for brugere med forskellige lokaliteter. Apache understøtter mange kodninger, inklusive Unicode , som giver dig mulighed for at bruge sider, der er oprettet i enhver kodning og på ethvert sprog.
Hændelseshåndtering
Administratoren kan indstille brugerdefinerede sider og behandlere for alle HTTP- fejl og hændelser såsom 404 (Ikke fundet) eller 403 (Forbudt). Herunder er der mulighed for at køre scripts og vise beskeder på forskellige sprog.
Server Side Inkluderer
I version 1.3 og ældre blev Server Side Includes-mekanismen implementeret, som giver dig mulighed for dynamisk at generere HTML -dokumenter på serversiden.
SSI styres af mod_include - modulet inkluderet i basisdistributionen af Apache.
Se også
- LAMP er et bundt af Linux, Apache, MySQL, PHP osv.
- WAMP er en suite af Windows, Apache, MySQL, PHP osv.
- MAMP er et bundt af Mac OS, Apache, MySQL, PHP osv.
Noter
- ↑ http://www.apache.org/foundation/
- ↑ https://downloads.apache.org/httpd/Announcement2.4.html
- ↑ http://linuxdocs.org/HOWTOs/Apache-Overview-HOWTO-12.html
- ↑ https://github.com/apache/httpd
- ↑ Apache Open Source-projektet på Open Hub: Languages-side - 2006.
- ↑ https://httpd.apache.org/docs/trunk/license.html
- ↑ Webserverundersøgelse - august 2007 ( utilgængeligt link) . Netcraft (august 2007). Hentet 21. juni 2009. Arkiveret fra originalen 7. februar 2009.
- ↑ Webserverundersøgelse - maj 2009 (engelsk) (link ikke tilgængeligt) . Netcraft (maj 2009). Hentet 21. juni 2009. Arkiveret fra originalen 30. maj 2009.
- ↑ Januar 2011 Web Server Survey (engelsk) (link ikke tilgængeligt) . Dato for adgang: 14. januar 2011. Arkiveret fra originalen 16. januar 2011.
- ↑ Januar 2016 webserverundersøgelse . Arkiveret fra originalen den 12. juni 2016.
- ↑ Statistik over det russiske internet runfo.ru . www.runfo.ru Dato for adgang: 16. februar 2017. Arkiveret fra originalen 17. februar 2017.
- ↑ Apache Module Registry Arkiveret 3. februar 2010 på Wayback Machine
- ↑ Apache::ASP Arkiveret 15. november 2011 på Wayback Machine
- ↑ Rivet - Webscripting for Tcl'ers . Hentet 6. oktober 2011. Arkiveret fra originalen 27. september 2011.
Litteratur
- Scott Hawkins. Apache Web Server Administration og e-Commerce Håndbog. - M. : Williams , 2001. - 336 s. — ISBN 0-13-089873-2 .
Links
- Officiel side (engelsk)
- Apache HTTP Server Wiki
- Apache arkitektur. The Apache Modeling Project (oktober 2003) (russisk) ; original på apache.hpi.uni-potsdam.de/ (eng.)