Apache i okolice

Transkrypt

Apache i okolice
Apache i okolice...
Jacek Prucia
[email protected]
http://www.7bulls.com/
Serwer Apache
Historia...
• Serwer httpd, autor Rob McCool (NCSA, Illinois,
1995),
• Apache = A PAtCHEd server,
• Apache 0.8.8 (codename Shambhala) – modularyzacja, jednolite API, prefork itd.,
• Obecnie: apache 1.3.20 oraz apache 2.0.16
beta,
• Strona domowa: http://httpd.apache.org
Serwer Apache
Apache 1.3.x – podstawa
• Obsługuje w pełni HTTP/1.1 (także tzw. name based Virtual Hosts),
• DSO (Dynamic Shared Object), APXS (APache
eXtenSion)
• CGI, SSI (wraz z dodatkowymi dyrektywami #if,
#elif, #else, #endif),
• Dodatki: KeepAlive, wszechstronne limity (dostęp,
ilość połączeń, metody HTTP, CPU, pamięć itd.).
Serwer Apache
Apache 1.3.x – moduły
• mod proxy
(RFC2068,
ProxyPassReverse),
ProxyPass
oraz
• mod rewrite (niezwykle elastyczna manipulacja
adresami URI),
• mod vhost alias
wirtualne serwery),
(dynamicznie
konfigurowane
• mod ssl (szyfrowane połączenia ’commercial grade’
→ 128 bitów),
• mod backhand (wydajne klastry z prostymi mechanizmami load balancing oraz failover).
• Strona domowa: http://modules.apache.org
Serwer Apache
Apache 2.0 – apr
• bazuje na bibliotece apr – Apache Portable RunTime,
• Jednolite API dla wszystkich systemów operacyjnych, eliminacja dużej ilości makr #ifdef,
• wysoka wydajność na wspieranych platformach dzięki wykorzystaniu naturalnych typów (plik → Unix:
fd, Win32: FILEDES, APR: apr file t),
• obsługa: pliki, liczby losowe, procesy, wątki, czas,
locki, sygnały, ciągi znaków, DSO, MD5, MMAP,
I18N.
• Strona domowa: http://apr.apache.org.
Serwer Apache
Apache 2.0 – MPM
• MPM – MultiProcessing Module,
• obsługa zapytań w Apache 1.3.x: Unix → procesy,
Win32 → wątki,
• Problem martwych dyrektyw konfiguracyjnych
(ThreadsPerChild na Unix, oraz StartServers
na Win32),
• Moduł MPM zawiera ’silnik’ serwera → sposób w
jaki serwer obsługuje zapytania,
• Serwer pracuje w oparciu o *jeden* moduł MPM,
wkompilowany statycznie do serwera podczas procesu kompilacji (wydajność).
Serwer Apache
Apache 2.0 – MPM
• Moduł MPM prefork – obsługa zapytań przez procesy, stosowany w apache 1.3.x,
• Moduł MPM threaded (poprzednia nazwa
mpmt pthread) – hybryda procesów i wątków,
bardzo wydajny, domyślny dla platform Unix’owych,
• Moduł MPM perchild – podobnie jak threaded,
ale można uruchamiać serwery wirtualne z prawami
wskazanych użytkowników,
• Moduł MPM mpm winnt – pojedyńczy proces, zapytania obsługiwane przez wątki,
• Pozostałe moduły MPM: mpmt beos, spmt os2,
oraz porzucony dexter (zastąpił go perchild).
Java Apache Project
• Obecnie integrowany z projektem Jakarta,
• Pierwszy darmowy ’servlet engine’: Apache JServ
(moduł mod jserv),
• Pełna obsługa specyfikacji Java Servlet 2.0,
• Prestiżowa nagroda JavaWorld Readers’ Choice
Award 1999 dla: Apache JServ 1.1 – Best Free
Product 1999,
• Apache JServ nie jest już rozwijany – jego rolę
przejmuje serwer aplikacyjny tomcat.
Java Apache Project
• Wyższość servlet’ów nad skryptami CGI (a także
FastCGI),
• servlet kontra skrypt CGI → serwer przetrzymuje
servlet’y w pamięci operacyjnej,
• servlet kontra skrypt FastCGI → servlet posiada funkcję inicjalizującą (init()) oraz zwalniającą zasoby (destroy()),
• W środowiskach enterprise servlet’y wyparły już
całkowicie skrypty CGI,
Projekt Jakarta
Tomcat
• Projekt Jakarta docelowo zastąpi projekt Java,
• Główny produkt: serwer aplikacyjny tomcat,
• Pełna obsługa specyfikacji Java Servlet 2.2
oraz JavaServer Pages 1.1 (tomcat 4.0
beta – Servlet 2.3 oraz JSP 1.2),
• Serwer tomcat jest oficjalną referencyjną implementacją technologii Java Servlets oraz JavaServer
Pages,
• Duża zgodność ze specyfikacjami, nieco mniejsza
wydajność (szybszy jest m.in. serwer aplikacyjny
Jetty).
Projekt Jakarta
Podprojekty towarzyszące
• LOG4J – specyficzny debugging (logowanie) dla
programów w języku Java,
• JMeter – doskonały, modularny (wizualizacja,
opóźnienia, testy) benchmark dla serwerów (lepszy
niż ApacheBench: ab),
• Ant – narzędzie podobne do make (cross-platform,
build.xml zamiast Makefile’a).
Projekt Jakarta
Podprojekty towarzyszące
• Avalon – zestaw gotowych komponentów (Excalibur, Phoenix, Cornerstone, Testlet, LogKit) które pozwalają na szybkie budowanie zaawansowanych
serwisów,
• Regexp, ORO – wyrażenia regularne (w tym
perl5 i awk style), globbing itd.,
• ECS (Element Construction Set) – zestaw klas które pozwalają na eleganckie budowanie dokumetu HTML. Zamiast
system.out.println("<BODY>"); można używać html.addElement(new Body());.
Projekt XML
• SOAP – implementacja SOAP (Simple Object
Access Protocol) dla serwera Apache,
• Xerces – parser XML v1.0 oraz XML Schema,
• Xalan (Java, C) – parser XSL w pełni zgodny z W3C
XSLT v1.0 oraz XPath v1.0,
• FOP – implementacja
Objects),
XML:FO
(Formatting
• Cocoon – servlet służący do zaawansowanej
publikacji dokumentów; na podstawie XML oraz
XSL/XSLT produkuje HTML, SVG lub PDF (Cocoon
Live Show).
mod perl
• Interpreter języka perl wbudowany w serwer Apache,
• Szybsze wykonywanie skryptów CGI w języku perl,
• Dostęp do wewnętrznych struktur serwera Apache,
• Możliwość pisania modułów do serwera Apache w
języku perl,
• Strona domowa: http://perl.apache.org.
mod php
• Jezyk PHP – zagnieżdżony w HTML,
• Dostępne są dwie wersje PHP3 i nowsza PHP4,
• Pierwotnie PHP pracował tylko jako interpreter CGI,
• Obecnie dostępny jest moduł dla serwera Apache lub
ISAPI (większa wydajność niż interpreter CGI),
• Prosty w nauce (intuicyjna mieszanka C i Perl’a),
• Modularny – własne API do dynamicznie ładowalnych (podczas startu serwera, lub przetwarzania
skryptu) modułów.
mod php
• Wsparcie dla Persistent Connections (*bardzo*
ważny atut),
• Wsparcie dla sporego spektrum baz danych
(commercial jak i open source),
• PHP3 zawiera network debugger, brak go w
PHP4 (atut w porównaniu do JSP, ASP),
• Wsparcie dla sesji HTTP (w oparciu o mechanizm
cookies),
• Strona domowa: http://php.apache.org.
Projekt GUI Apache
• Problem – stosunkowo złożona konfiguracja serwera,
dużo dyrektyw,
• Historyczne trzy pliki konfiguracyjne,
• Oprogramowanie do wizualnej konfiguracji:
– Comanche (http://www.comanche.org) –
Tcl/Tk,
– Mohawk (http://everythinglinux.org/Mohawk/)
– C/Gtk+,
Projekt GUI Apache
Program Mohawk w akcji...
• Strona domowa: http://gui.apache.org.
Podziękowania
• Firma 7bulls.com S.A. za wsparcie (sprzęt, czas,
podróż),
• Programiści Apache Software Foundation,
• Ryan Bloom z Covalent Technologies (Apache
2.0),
• Moja kobieta Dorota (za anielską cierpliwość dla
mojej pasji ;).
Pytania?

Podobne dokumenty