Apache i okolice... Jacek Prucia jacek.prucia@7bulls.com http://www.7bulls.com/
Historia... Serwer Apache 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.).
Apache 1.3.x moduły Serwer Apache mod proxy (RFC2068, ProxyPass oraz ProxyPassReverse), mod rewrite (niezwykle elastyczna manipulacja adresami URI), mod vhost alias (dynamicznie konfigurowane wirtualne serwery), 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
Apache 2.0 apr Serwer Apache bazuje na bibliotece apr Apache Portable Run- Time, 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.
Apache 2.0 MPM Serwer Apache 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ść).
Apache 2.0 MPM Serwer Apache 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,
Tomcat Projekt Jakarta 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 XML:FO (Formatting Objects), 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?