A p a c h e h t t p d 2. 2 Lukáš Zapletal lukas.zapletal@liberix.cz
C o j e t o A p a c h e h t t p d? Apache httpd (nebo někdy jen httpd) je kvalitní, robustní, modulární webový server dostupný zdarma vyhovuje standardu HTTP/1.1 existuje snad pro všechny operační systémy (a také pro Windows) tvo í jej nezisková organizace Apache ř Software Foundation (ASF)
K d e h o s e h n a t stránky www.apache.org (kokrétn ě httpd.apache.org) je ve všech linuxových distribucích pro Windows je dostupný exe instalátor Next. Next. Next. Finish. Restart. instalace v Linuxu: triviální (balíčky) jmenují se apache2 nebo httpd2 m žete také stáhnout zdrojové kódy a ů zkompilovat vlastní (odlehčenou) verzi
M á m h o. J a k t o s p u s t i t? v UNIXu standardní démon; ve Windows běží jako služba tedy /etc/init.d/httpd start nebo /etc/init.d/apache2 start (záleží na distribuci) nebo také můžete použít program apachectl: apachectl start (stop restart reload...) skripty v init.d volají práv ě apachectl
B e z p e č n o s t jedná se o veřejn ě dostupnou službu dostupnou po síti - je nutné být maximáln ě opatrní Apache se spouští pod superuživatelem (root), protože musí navázat port 80 poté přepne efektivního uživatele na účet s nižšími právy (obvykle apache, httpd nebo www-run) pod tímto účtem dále pracuje - je nutno to mít na paměti
J a k A p a c h e p r a c u j e jelikož funguje pod mnoha systémy (vyžadující si různý přístup ke konkurečnímu zpracování požadavk ů), tato jeho část je modulární (MPM: Multi-Processing Modules) unixová verze nabízí několik modulů (prefork, worker, leader, perchild) ostatní systémy (Windows, Netware, OS/2) mají obvykle jednu implementaci (jeden proces, více vláken)
M P M : p r e f o r k nejpoužívanější (a historický) přístup k vyřizování požadavků jeden hlavní proces, ostatní podřízené MinSpareServers, MaxSpareServers: kolik proces ů se může maximáln ě/minimáln ě flákat (idle) StartServers: kolik jich má spustit při startu MaxClients: maximum proces ů, které server může spustit (hranice)
M P M : p r e f o r k prefork nepoužívá vlákna (nemusí, proces ů běží víc a každý vyřídí jeden požadavek) postupn ě se zvyšuje nebo snižuje počet proces ů podle zátěže prefork je někdy jediná možnost, pokud používáte knihovny, které nejsou vláknov ě bezpečné (PHP...) chyba (pád) jednoho požadavku nevy ídí ř jiné požadavky (spadne jen jeden)
M P M : w o r k e r hybridní implementace, více proces ů, každý proces má více vláken obvykle výkonnější než prefork, ale pád jednoho procesu může zrušit jiné (nevinné) požadavky nastavení je podobné ThreadsPerChild: počet vláken na proces (statická hodnota) při zátěži se nezvyšuje počet vláken, ale počet procesů
M P M : d a l š í m o d u l y perchild: hybridní modul, podobný workeru, ale pracuje s proměnlivým počtem vláken z Apache httpd 2.2 byl odstraněn (není ješt ě hotov) event: podobný workeru, ale předává požadavky ve stavu KEEP ALIVE tomu určenému vláknu, pracovní vlákno se tím uvolňuje pro další zpracování
U k á z k a : p r v n í s p u š t ě n í implicitní nastavení je obvykle jednoduché a bezpečné server je nastaven obvykle na podávání stránek z adresáře /var/www/htdocs logování nastaveno do adresáře /var/log/httpd (nebo /var/log/apache2) na unixu je zvolen modul prefork (na Windows samozřejm ě mpm_winnt) server je nastaven na střední výkon
U k á z k a : p r v n í s p u š t ě n í ukázka: spuštění, přístup na stránky ukázka: základní konfigurace, nejdůležitější konfigurační hodnoty ukázka: logy, rotování logů k analýze log ů dobře poslouží například výborný webalizer - statistiky přístupů
A p a c h e - m o d u l y webový server od ASF je modulární je možné ho výborn ě škálovat, rozšiřovat moduly dělíme do dvou hlavních skupin: - filters - handlers filtry nějakým způsobem modifikují vstup nebo výstup serveru handlery zpracovávají požadavky
A p a c h e - f i l t r y nejvíce se používají výstupní filtry (nap ř. pro kompresi nebo šifrování výsledk ů) mod_include: vkládá do HTML stránek uživatelem definované elementy, jiné soubory, výstupy... mod_deflate: nabízí možnost komprese výsledk ů (u nevytížených server ů zlepšíme odezvu) mod_ssl: šifrování komunikace (HTTPS)
U k á z k a : f i l t r y mod_deflate snadný na konfiguraci, výsledek se dostaví ihned <Directory "/var/www/htdocs/komprimovane"> AddOutputFilterByType DEFLATE text/html </Directory>
U k á z k a : m o d u l S S L SSL (Secure Sockets Layer) poskytuje možnost šifrování a autentizace klienta i serveru instalace spočívá v několika krocích aktivovat SSL modul, vygenerovat certifikát, restartovat Apache pro Debian existuje šikovná utilitka apache2-ssl-certificate
U k á z k a : m o d u l P H P PHP je jednoduchý skriptovací jazyk velmi rozšířený, těší se velké oblibě instalace modulu je triviální: aktivovat, restartovat obliba u začátečníků-programátor ů, jako administrátor se musí velmi dbát na bezpečnost
A p a c h e - v i r t u á l n í h o s t é rozlišujeme dva typy virtuálních host ů: IP based vhost based první typ se váže na IP adresu (jedno síťové rozhraní může může mít více IP adres - tzv. virtuálních) druhý typ je možný díky podpo e hlavičky ř Host v HTTP dotazu
A p a c h e - v i r t u á l n í h o s t é <VirtualHost 172.20.30.40> DocumentRoot /www/example1 ServerName www.example.com </VirtualHost> <VirtualHost 172.20.30.50> DocumentRoot /www/example2 ServerName www.example.org </VirtualHost>
A p a c h e - v i r t u á l n í h o s t é NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /www/example1 ServerName www.example1.com #... </VirtualHost> <VirtualHost *:80> DocumentRoot /www/example2 ServerName www.example2.com #... </VirtualHost>
A p a c h e - m o d _ v h o s t _ a l i a s # get the server name from the Host: header UseCanonicalName Off LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon CustomLog logs/access_log vcommon VirtualDocumentRoot /www/hosts/%0/docs VirtualScriptAlias /www/hosts/%0/cgi-bin