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 ●
●
Worker ●
●
Procesy bez vláken (pro vláknově ne-bezpečné moduly – např. PHP)
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í ●
●
●
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 ●
●
http://httpd.apache.org/download.cgi Stable Release → Unix Source → *.gz | *.bz2 + MD5
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 ●
●
Seznam zakompilovaných (statických) modulů ●
●
apachectl -f /usr/local/apache2/conf/httpd.conf
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 ●
●
V případě kompilace a instalace do /usr/local/apache2 ●
●
●
man apachectl man 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