BI-AWD Administrace Webového a Databázového serveru Instalace webového serveru Apache httpd Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti 1
Obsah Popis Apache httpd serveru Implementace webového serveru Historie Apache httpd serveru Architektura Vlastnosti Instalace a spuštění serveru Kompilace Instalace Spuštění Dokumentace Lokální On-line 2
Webový server implementace Používané implementace http://en.wikipedia.org/wiki/comparison_of_web_servers Apache httpd, Tomcat Microsoft IIS lighttpd nginx [http://news.netcraft.com] 3
Apache httpd historie 1993: NCSA HTTPd (National Center for Supercomputing Applications) 1994: Odchod hlavního programátora, založení emailové konference, koordinace patchů 1995: 1. veřejná verze 0.6.2 1996: Nejúspěšnější web server 2002: Verze 2.0 Přepsání kódu verze 1.3 s ohledem na modularizaci a nezávislou přenositelnou vrstvu (Apache Portable Runtime), UNIX vlákna, podpora ne-unixových systémů, nové Apache API a podpora IPv6 4
Vlastnosti Open source, dostupnost na mnoha systémech Velká konfigurovatelnost pomocí souborů Podpora jazyků (PHP, Perl, Python, TCL, JSP, SSI,...) a rozhraní CGI / FastCGI Virtualhosting, HTTP autentizace, proxy server, přizpůsobitelné logování, přepisování URL, filtrování vstupu/výstupu, dojednávání obsahu Podpora SSL, TLS, komprese 5
Architektura Prostředí pro běh serveru (Apache Portable Runtime) Core Moduly souběžného zpracování (Multi-Processing Module) Prefork Procesy bez vláken (pro vláknově ne-bezpečné moduly např. PHP) Worker Procesy a vlákna (vyšší výkon) Další moduly Filtry vstupní / výstupní Handlery zpracování požadavků Auth, Autoindex, Alias, CGI, Include, Info, Mime, Status, Userdir,... 6
Zpracování dotazu Překlad URI na jméno souboru Kontrola přístupu Autorizace jména uživatele Kontrola práv pro přístup uživatele Kontrola přístupu založená na jiných kritériích (např. podle IP adresy) Zjištění MIME typu dotazu Fixups co se doposud nestihlo udělat Zaslání požadovaných dat klientovi Zalogování přístupu 7
Způsoby instalace Binární instalace (balíčkovacím systémem) apache2 apache2-mpm-? apache2-utils apache2.2-bin apache2.2-common libapache2-mod-* Instalace ze zdrojových kódů Stažení http://httpd.apache.org/download.cgi Stable Release Unix Source *.gz *.bz2 + MD5 wget http://ftp.sh.cvut.cz/mirrors/apache//httpd/httpd-2.2.21.tar.gz wget http://www.apache.org/dist/httpd/httpd-2.2.21.tar.gz.md5 Kontrola md5sum -c httpd-2.2.21.tar.gz.md5 Rozbalení archivu tar xzf httpd-2.2.21.tar.gz cd httpd-2.2.21 8
Instalace Konfigurace Kompilace Instalace./configure && make && make install Konfigurace./configure --help --enable-layout=layout --prefix=dir --enable-feature / --disable-feature zahrne/nezahrne danou vlastnost do instalace --enable-modules=module-list all most module1,..,modulen mastavení modulů --with-package / --without-package použije/nepoužije balík 9
Adresářová struktura V případě začlenění webserveru do infrastruktury serveru /etc/apache2/ - globální konfigurace /etc/apache2/modules.d - konfigurace modulů serveru /etc/apache2/ssl - klíče/certifikáty /etc/apache2/vhosts.d - konfigurace virtuálních hostů /usr/lib64/apache2/ - zkompilované knihovny /usr/lib64/apache2/modules - zkompilované moduly /usr/sbin - binární soubory /usr/share - dokumentace, manuálové /usr/share/man stránky, příklady /var/log/apache2 - logy /var/www - webové stránky /var - v dalších podadresářích další soubory, zámky V případě instalace do /usr/local jsou všechny součásti webserveru umístěny do jeho podadresářů (snadnější odinstalace) 10
Spuštění I Manuální ovládání pomocí wrapperu apache2ctl apachectl [-k] start -D DEF... apachectl [-k] stop apachectl [-k] test Kontrola konfigurace apachectl -t apachectl -t -D INFO... Kontrola log souborů tail -f /usr/local/apache2/logs{error,access}_log Automatické ovládání Init skripty volání příkazu apachectl (v případě začlenění webserveru do infrastruktury serveru) 11
Spuštění II apachectl je pouze skript volající program httpd file -b /usr/local/apache2/bin/apachectl POSIX shell script, ASCII text executable Skript předává své argumenty programu grep HTTPD /usr/local/apache2/bin/apachectl HTTPD='/usr/local/apache2/bin/httpd' $HTTPD -k $ARGV $HTTPD -t $HTTPD $ARGV file -b /usr/local/apache2/bin/httpd ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x07781d88d95ac5c22d5af2ba17135037acc db438, not stripped 12
Spuštění III Volba konfiguračního souboru apachectl -f /usr/local/apache2/conf/httpd.conf Seznam zakompilovaných (statických) modulů apachectl -l Seznam načítaných (dynamických/statických) modulů podle konfigurace apachectl -M 13
Lokální dokumentace V případě začlenění do infrastruktury man apachectl man apache2 V případě kompilace a instalace do /usr/local/apache2 man /usr/local/apache2/man/man8/apachectl.8 man /usr/local/apache2/man/man8/httpd.8 export MANPATH=$MANPATH:/usr/local/apache2/man man apachectl man httpd Lokální webová dokumentace (HTML) file:///usr/local/apache2//manual/index.html.en http://localhost/manual (v případě aktivace v konfiguraci) 14
On-line dokumentace http://httpd.apache.org/docs/2.2/ Reference Manual Compiling and Installing Directive Quick-Reference Modules Server and Supporting Programs Glosary Users' Guide How-To / Tutorials Platform Specific Notes Other Topics 15
Instalace I :: LAB 1. Stažení a kontrola zdrojových kódů z http://www.apache.org md5sum -c *.md5 2. Rozbalení zdrojových kódů tar xzf httpd*.gz 3. Kompilace/instalace./configure && make && make install 4. Spuštění severu /usr/local/apache2/bin/apachectl start 16
Instalace II :: LAB 5. Kontrola běhu serveru telnet localhost 80 GET / HTTP/1.0 netstat -tapln pgrep -l httpd 6. Kontrola běhu serveru v prohlížeči 7. Zjištění zkompilovaných modulů /usr/local/apache2/bin/apachectl -l ( je zkompilován mod_status a není zkompilován mod_info) 17
Instalace III :: LAB 8. Konfigurace status modulu (mod_status) Načtení konfigurace mod_status - odkomentujte řádek Include conf/extra/httpd-info.conf v souboru /usr/local/apache2/conf/httpd.conf vi /usr/local/apache2/conf/httpd.conf 9. Povolení přístupu k informacím z mod_status Modifikace řádky Allow from... v souboru /usr/local/apache2/conf/extra/httpd-info.conf vi /usr/local/apache2/conf/extra/httpd-info.conf Allow from.example.com Allow from localhost 10. Restart serveru /usr/local/apache2/bin/apachectl restart 18
Instalace IV :: LAB 11. Ověření funkčnosti modulu v prohlížeči http://localhost/server-status 12. Zastavení serveru /usr/local/apache2/bin/apachectl stop 13. Konfigurace kompilace./configure --enable-info 14. Kompilace make 15. Instalace make install 19
Instalace V :: LAB 16. Seznam modulů /usr/local/apache2/bin/apachectl -l 17. Start serveru /usr/local/apache2/bin/apachectl start 18. Ověření funkčnosti modulu v prohlížeči http://localhost/server-info 19. Zpřístupnění lokální webové dokumentace Odkomentování řádky Include conf/extra/httpd-manual.conf v souboru /usr/local/apache2/conf/httpd.conf vi /usr/local/apache2/conf/httpd.conf Restart serveru /usr/local/apache2/bin/apachectl restart 20
Instalace VI :: LAB 20. Zobrazení lokální webové dokumentace http://localhost/manual 21