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?