HTTP server Apache | |
---|---|
Logo Apache | |
Typ | webový server a serverový software |
Autor | Robert McCool [d] |
Vývojář | Apache Software Foundation [1] |
Zapsáno v | C [3] [4] [5] […] |
Operační systém | Microsoft Windows a operační systém podobný Unixu |
Jazyky rozhraní | Angličtina |
První vydání | 1995 |
Nejnovější verze | |
Licence | Licence Apache 2.0 [6] |
webová stránka | httpd.apache.org _ |
Mediální soubory na Wikimedia Commons |
Apache HTTP server (je zkomolená zkratka pro angličtinu. a patchy server ; mezi ruskými uživateli je obecně přijímán překlad Apache ) je bezplatný webový server .
Apache je multiplatformní software , který podporuje operační systémy Linux , BSD , macOS , Microsoft Windows , Novell NetWare , BeOS .
Hlavními výhodami Apache jsou spolehlivost a flexibilita konfigurace. Umožňuje připojit externí moduly pro poskytování dat, používat DBMS k ověřování uživatelů, upravovat chybová hlášení atd. Podporuje IPv4 .
Server byl napsán počátkem roku 1995 a jeho jméno je pravděpodobně odvozeno od vtipného jména „a patchy [server]“ , protože opravoval chyby v tehdy populárním NCSA HTTPd 1.3 World Wide Web serveru. Později, od verze 2.x, byl server přepsán a nyní neobsahuje kód NCSA . V tuto chvíli probíhá vývoj ve větvi 2.4 a ve verzích 1.3, 2.0 a 2.2 jsou prováděny pouze bezpečnostní opravy. V tuto chvíli je nejnovější verze větve 2.4 2.4.46 (5. srpna 2020), pro první verzi je to 1.3.42.
Webový server Apache je vyvíjen a udržován otevřenou komunitou vývojářů pod záštitou Apache Software Foundation a je součástí mnoha softwarových produktů , včetně databáze Oracle a IBM WebSphere .
Od dubna 1996 do současnosti je nejpopulárnějším HTTP serverem na internetu . Statistiky Netcraftu ukazují následující údaje o využití Apache:
Apache má v Rusku podíl na trhu až 17,45 %. Je to nejoblíbenější webový server po NGINX s podílem na trhu 64,89 % [11] .
Jádro Apache zahrnuje základní funkce, jako je manipulace s konfiguračním souborem, protokol HTTP a systém načítání modulů. Jádro (na rozdíl od modulů) je zcela vyvinuto nadací Apache Software Foundation bez účasti externích programátorů.
Teoreticky může jádro Apache fungovat ve své čisté podobě, bez použití modulů. Funkčnost takového řešení je však extrémně omezená.
Jádro Apache je napsáno výhradně v programovacím jazyce C.
Konfigurační systém Apache je založen na textových konfiguračních souborech . Má tři podmíněné konfigurační úrovně:
Má svůj vlastní jazyk konfiguračních souborů založený na blocích direktiv. Téměř všechny parametry jádra lze měnit pomocí konfiguračních souborů až po řízení MPM. Většina modulů má své vlastní parametry.
Některé moduly při své práci používají konfigurační soubory operačního systému (např . /etc/passwd a /etc/hosts ).
Kromě toho lze parametry nastavit pomocí přepínačů příkazového řádku .
Pro webový server Apache existuje mnoho symetrických multiprocesních modelů . Zde jsou ty hlavní:
název | Vývojář | Podporovaný OS | Popis | Účel | Postavení |
---|---|---|---|---|---|
pracovník | Apache Software Foundation | Linux , FreeBSD | Hybridní víceprocesorový-vícevláknový model. Při zachování stability víceprocesorových řešení umožňuje obsluhovat velké množství klientů s minimálním využitím zdrojů. | Středně zatížené webové servery. | Stabilní. |
před-vidlička | Apache Software Foundation | Linux , FreeBSD | MPM, založený na předvytvoření samostatných procesů, nepoužívá mechanismus vláken. | Větší bezpečnost a stabilita díky izolaci procesů od sebe, zachování kompatibility se starými knihovnami, které nepodporují vlákna. | Stabilní. |
dítě | Apache Software Foundation | linux | Hybridní model s pevným počtem procesů. | Vysoce zatížené servery, možnost spouštět podřízené procesy pomocí jiného uživatelského jména pro zlepšení zabezpečení. | Ve vývoji, nestabilní. |
síťový software | Apache Software Foundation | Novell NetWare | Vícevláknový model optimalizovaný pro prostředí NetWare. | Servery Novell NetWare | Stabilní. |
winnt | Apache Software Foundation | Microsoft Windows | Vícevláknový model vytvořený pro operační systém Microsoft Windows . | Servery se systémem Windows Server . | Stabilní. |
Apache-ITK | Steinar H Gunderson | Linux , FreeBSD | MPM na základě modelu předvidle. Umožňuje každému virtuálnímu hostiteli běžet pod samostatným uid a gid . | Hostované servery, servery kritické pro izolaci uživatelů a účtování zdrojů. | Stabilní. |
uživatel | Sean Gabriel Heacock | Linux , FreeBSD | Model založený na MPM perchild. Umožňuje každému virtuálnímu hostiteli běžet pod samostatným uid a gid . Nepoužívá vlákna. | Zajištění zvýšené bezpečnosti, práce s knihovnami, které nepodporují vlákna. | Stabilní vydání datované 4. října 2007 , experimentální vydání datované 10. září 2009 . |
událost | Apache Software Foundation | Linux , FreeBSD | Model používá vlákna a vlákno-safe dotazování je založeno na worker. je navržen tak, aby obsluhoval více požadavků současně tím, že přenese některé zpracování na vlákna posluchače a uvolní pracovní vlákna pro obsluhu nových požadavků. | Poskytování zlepšeného výkonu. nefunguje dobře na starších platformách, které postrádají dobrý multithreading, ale požadavek EPoll nebo KQueue to dělá diskutabilním. | Stabilní. |
Apache HTTP Server podporuje modularitu . Existuje více než 500 modulů [12] , které plní různé funkce. Některé z nich jsou vyvinuty týmem Apache Software Foundation , ale většinu tvoří jednotliví vývojáři open source .
Moduly mohou být buď zahrnuty do serveru v době kompilace , nebo mohou být načteny dynamicky prostřednictvím direktiv konfiguračního souboru.
Moduly dělají věci jako:
Některé webové aplikace, jako jsou ovládací panely ISPmanager a VDSmanager, jsou implementovány jako modul Apache.
Apache má vestavěný mechanismus virtuálního hostitele . Umožňuje vám plně obsluhovat mnoho webů ( doménových jmen ) na jedné IP adrese a zobrazovat jejich vlastní obsah pro každou z nich.
Pro každého virtuálního hostitele můžete zadat vlastní nastavení jádra a modulu, omezit přístup k celému webu nebo jednotlivým souborům. Některé MPM, jako je Apache-ITK, vám umožňují spouštět proces httpd pro každého virtuálního hostitele se samostatným uid a guid .
Existují také moduly, které vám umožní vzít v úvahu a omezit zdroje serveru ( CPU , RAM , provoz ) pro každého virtuálního hostitele.
Existuje mnoho modulů, které do Apache přidávají podporu pro různé programovací jazyky a vývojové systémy.
Tyto zahrnují:
Apache navíc podporuje mechanismy CGI a FastCGI , které vám umožňují spouštět programy téměř ve všech programovacích jazycích, včetně C , C++ , Lua , sh , Java .
Apache má různé bezpečnostní mechanismy a řízení přístupu k datům. Hlavní jsou:
Některé moduly MPM mají schopnost spustit každý proces Apache pomocí jiného uid a gid s příslušným uživatelem a skupinou uživatelů.
Existuje také mechanismus suexec používaný ke spouštění skriptů a aplikací CGI s uživatelskými právy a pověřeními.
Pro implementaci šifrování dat přenášených mezi klientem a serverem se používá mechanismus SSL implementovaný prostřednictvím knihovny OpenSSL . Certifikáty X.509 se používají k ověření webového serveru .
Existují externí bezpečnostní nástroje, jako je mod_security .
Počínaje verzí 2.0 bylo možné, aby server určil národní prostředí uživatele . Chybové zprávy a zprávy o událostech odeslané do prohlížeče jsou nyní ve více jazycích a používají technologii SSI .
Také je možné pomocí serveru implementovat zobrazování různých stránek pro uživatele s různými lokalitami. Apache podporuje mnoho kódování, včetně Unicode , které umožňuje používat stránky vytvořené v jakémkoli kódování a v jakémkoli jazyce.
Správce může nastavit vlastní stránky a obslužné rutiny pro všechny chyby a události HTTP , jako je 404 (Nenalezeno) nebo 403 (Zakázáno). Včetně možnosti spouštění skriptů a zobrazování zpráv v různých jazycích.
Ve verzích 1.3 a starších byl implementován mechanismus Server Side include, který umožňuje dynamicky generovat HTML dokumenty na straně serveru.
SSI je spravováno modulem mod_include , který je součástí základní distribuce Apache.
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekty nejvyšší úrovně |
| ||||||
Podprojekty |
| ||||||
Webové |
| ||||||
Jiné projekty | |||||||
Rozvojové projekty ( Inkubátor ) |
| ||||||
Vyřazené projekty ( podkroví ) | |||||||
|