Serwer Apache

Serwer WWW jest to oprogramowanie odpowiedzialne za akceptowanie zapytań klienta, odszukiwanie określonych plików, uruchamianie skryptów php i zwracanie ich zawartości (lub wyników działania skryptów). Większość serwerów WWW pracujących w sieci Internet, to serwery pracujące na maszynach UNIX.

Do głównych typów serwerów WWW możemy zaliczyć: Serwer NCSA, Serwer Apache, Serwer CERN i Serwery Netscape. Z wymienionych serwerów najbardziej popularnym i najczęściej stosowanym serwerem jest Apache.

Serwer Apache pochodzi od serwera NCSA - National Center for Supercomputing Applications, opracowanego w 1995 roku na zlecenie rządu Stanów Zjednoczonych. Jego dominacja na rynku serwerów WWW jest ogromna i wynosi ok. 60%. Popularność serwera Apache jest pochodną popularności samego systemu Linux oraz faktu, że zarówno system, jak i serwer są całkowicie bezpłatne dla wszelkich zastosowań. Możliwości serwera pozwalają na publikację w Internecie wszystkich typów stron, począwszy od zwyczajnej strony firmowej, a skończywszy na dużych serwisach połączonych z bazami danych. Skalowalność oraz dostępność na praktycznie wszystkie liczące się platformy sprzętowe i programowe jest możliwa dzięki modułowości budowy, która pozwala na tworzenie rozwiązań wieloplatformowych, szybkich oraz stabilnych.

Apache jest najszerzej stosowanym serwerem HTTP (HTTP (ang. Hypertext Transfer Protocol) to protokół sieci WWW (World Wide Web). Właśnie za pomocą protokołu HTTP przesyła się żądania udostępnienia dokumentów WWW i informacje o kliknięciu odnośnika oraz informacje z formularzy. Zadaniem stron WWW jest publikowanie informacji - natomiast protokół HTTP właśnie to umożliwia.) w Internecie. W połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych środowisk w firmach oferujących miejsce na serwerach sieciowych.
Apache/PHP jest platformą konkurencyjną do technologii ASP.NET(ASP (ang. Active Server Pages) to technologia firmy Microsoft służąca tworzeniu dynamicznych stron WWW wykonywanych po stronie serwera, oparta o jeden z dostępnych języków skryptowych.) Microsoftu, opartej na komercyjnym serwerze IIS.( IIS (ang. Internet Information Services - internetowe usługi informacyjne) jest serwerem dołączonym do rodziny systemów Microsoft Windows Server, a także Microsoft Windows XP.) Wraz z PHP i silnikiem baz danych MySQL na platformie Linux, Apache stanowi tzw. platformę LAMP (Linux, Apache, MySQL, PHP).( LAMP – skrót określający zestaw oprogramowania open source stanowiący popularną platformę serwerową dynamicznych stron WWW:
• Linux, system operacyjny;
• Apache, serwer WWW;
• MySQL, serwer bazy danych;
• Perl, PHP, (ew. Python), interpreter języka skryptowego.
Pomimo że żaden z tych elementów nie został stworzony specjalnie do współdziałania z pozostałymi, taki zestaw oprogramowania jest bardzo popularny ze względu na niski koszt i dostępność wszystkich komponentów (m.in. są dołączane do większości dystrybucji Linuksa).



Serwer Apache ma minimalne wymagania sprzętowe - małe (np. testowe) serwisy WWW mogą pracować nawet na komputerach klasy 486. Minimalizuje to w znacznym stopniu inwestycje związane z uruchomieniem usługi WWW.

Umożliwiający obsługę między innymi skryptów CGI, PHP (liczniki odwiedzin, księgi gości, statystyki, formularze itp.) stanowi podstawę do testowania nowo utworzonych stron przed publikacją ich w sieci. Serwer Apache możemy również wykorzystywać do integracji z bazami danych za pomocą php czy perla.

Rozwojem serwera zajmuje się zespół wybranych, doświadczonych programistów tzw. Apache Group, którzy wraz z użytkownikami rozwijają program jako Apache Projekt, a główna baza programu znajduje się pod adresem http://www.apache.org/, gdzie znajdziemy informacje na temat samego serwera.

Oficjalna witryna serwera Apache jest otwarta dla wszystkich, którzy chcieliby się podzielić swoimi doświadczeniami na temat serwera WWW - jego pracy, znalezionych błędach oraz nowych rozwiązań.

Do głównych zadań serwera WWW należy:

- pracować szybko bez powodowania obciążeń komputera na którym jest uruchomiony
- tryb wielozadaniowy: możliwość obsługi jednocześnie większej ilości zadań
- kontrola nad użytkownikami
- wysyłanie komunikatów o błędach w zależności od popełnionego rodzaju błędu
- uzgodnienie formy i języka komunikacji co sprawia zdolność serwera do porozumiewania się z klientem w danym języku
- udostępnianie danych różnego rodzaju formatu
- praca w charakterze serwera pośredniczącego (proxy server)
- bezpieczeństwo danych

Serwer Apache składa się z modułów oprogramowania. Moduły są samodzielnymi blokami kodu źródłowego, obsługującymi określone funkcje programu Apache. Poszczególne moduły mogą być w kompilowane w serwer lub załadowane w czasie działania. Możemy także tworzyć własne moduły.


Dodatkowe moduły Apache pozwalają m.in. na automatyczne poprawianie błędów w nazwach URL, modyfikację standardowych nagłówków HTTP, dają rozszerzone możliwości raportowania pracy serwera, uruchomienia funkcji proxy. Możemy je dynamicznie dołączać do programu dzięki wykorzystaniu techniki DSO (Dynamic Shared Object), co przyczynia się do optymalnego wykorzystania pamięci komputera.


Przy instalacji serwera powinniśmy wiedzieć, które moduły będą nam potrzebne do pracy. Nie należy bezmyślnie włączać wszystkich modułów, gdyż im jest ich mniej, mniejsza jest objętość kodu wynikowego, a co za tym idzie, wydajniej działa serwer. Ponadto instalacja zbędnych modułów zmniejsza potencjalne bezpieczeństwo systemu.


W pliku konfiguracyjnym httpd.conf do włączania dynamicznie ładowanych modułów wykorzystujemy dwa polecenia: LoadModule i AddModule. Dyrektywa LoadModule służy do identyfikacji danego modułu, zaś AddModule dodaje nazwę modułu do listy modułów ładowanych w czasie działania.

Cechy serwera i obsługiwane moduły
• wielowątkowość, skalowalność
• bezpieczeństwo
• Kontrola dostępu/uwierzytelnianie: mod_access
• CGI (CGI (ang. Common Gateway Interface, interfejs bram sieciowych) jest jednym ze sposobów komunikacji serwera WWW z innymi aplikacjami. CGI umożliwia zarówno pobieranie danych pochodzących od przeglądarki jak i przekazywanie danych przeznaczonych dla niej.)
• Proxy typu HTTP, FTP, CONNECT: mod_proxy* (Serwer pośredniczący (pośrednik, często z ang. proxy) - oprogramowanie lub serwer z odpowiednim oprogramowaniem, które dokonuje pewnych operacji (zwykle nawiązuje połączenia) w imieniu użytkownika. Często utożsamiany z pośrednikiem HTTP (HTTP proxy).
• SSI: mod_include (SSI (ang. Server Side Includes) to prosty mechanizm skryptowy służący do dynamicznego generowania stron WWW na serwerze WWW. Używany przede wszystkim do włączania zdefiniowanych plików do dokumentu wynikowego (include'owanie). Pozwala na zagnieżdżaniu w kodzie dokumentu wartości zmiennych serwera i wyników działania programów uruchomionych po stronie serwera. Domyślnie pliki generowane (filtrowane) przez SSI mają rozszerzenie .shtml.)
• Content-Negotation: mod_negotation
• Moduł URL-Rewriting: mod_rewrite
• SSL: mod_ssl SSL (ang. Secure Socket Layer) - protokół, w swojej pierwotnej wersji zaprojektowany przez firmę Netscape Communications Corporation zapewniający poufność i integralność transmisji danych oraz zapewnienie uwierzytelnienia, opierający się na szyfrach asymetrycznych oraz tzw. certyfikatach standardu X.509.)
• możliwość osadzania interpreterów języków skryptowych, np. mod_perl, mod_php czy mod_python



Moduły umieszczone w standardowej dystrybucji serwera Apache wersja 1.3.x
Core Podstawowe funkcje zawsze dostępne w dystrybucji (kontrolują również inne moduły)
mod_access Kontrola dostępu do plików w zależności od adresu IP i/lub nazwy komputera klienta. Użycie tego modułu pozwala na dokładną kontrolę użytkowników, np. administrator może zezwolić na wykonywanie skryptów CGI tylko pracownikom firmy.
mod_actions Odpowiada za wykonywanie skryptów CGI w zależności od typu danych lub sposobu pobrania.
mod_alias Pozwala mapować (udostępniać) część systemu plików w katalogu głównym Apache'a, umożliwia też przekierowanie adresów URL. Część plików może znajdować się poza katalogiem lub nawet na innym komputerze w sieci.
mod_asis Deklaracja plików, które mogą być wysyłane bez nagłówków HTTP (pliki *.asis).
mod_auth Moduł odpowiedzialny za uwierzytelnianie użytkowników na podstawie zdefiniowanych plików tekstowych.
mod_auth_anon Pozwala anonimowym użytkownikom na dostęp do danych podlegających weryfikacji dostępu.
mod_auth_db Uwierzytelnianie za pomocą plików DB (Berkeley).
mod_auth_dbm Uwierzytelnianie za pomocą plików DBM.
mod_autoindex Automatyczne tworzenie indeksów (wyświetlenie zawartości) dla katalogów, które nie mają standardowych plików index.*htm*
mod_cern_meta Emulacja plików CERN HTTPD, pozwala dodawać dodatkowe nagłówki do wszystkich plików.
mod_cgi Prawdopodobnie najpopularniejszy moduł. Pozwala wykonywać skrypty CGI po stronie serwera i zwracać wyniki klientowi.
mod_digest Uwierzytelnianie za pomocą algorytmu MD5.
mod_dir Podstawowe operacje na katalogach. Zwykle używany do uzupełniania adresu, np. http://serwer.pl/plik zostanie zastąpiony poprawnym wywołaniem http://serwer.pl/plik/.
mod_env Moduł odpowiedzialny za przekazywanie zmiennych środowiskowych do skryptów CGI/SSI.
mod_example Demonstracja możliwości interfejsu programowego, Apache API.
mod_expires Dodaje znacznik Expires (strona wygasa, traci ważność) do stron WWW przesyłanych klientowi, ważne dla często zmienianych serwisów, które powinny być zawsze aktualne.
mod_headers Pozwala na dowolną modyfikację nagłówków HTTP.
mod_imap Wsparcie dla map plików graficznych (.map), używane po stronie serwera WWW. Zastępuje program CGI imagemap.
mod_include Pozwala włączać zawartości plików lub wyniki działania skryptu do zwykłych plików HTML i zwracać ich zawartość klientowi.
mod_info Odpowiedzialny za informację o ustawieniach serwera Apache.
mod_isapi Pozwala używać rozszerzeń serwerowych ISAPI. Tylko dla Apache'a w wersji dla Windows.
mod_log_agent Zapisywanie w logach nazw i wersji przeglądarek internetowych klientów.
mod_log_config Konfigurowalne logowanie zdarzeń, pliki log zapisywane są w formacie Common Logfile Format.
mod_log_referer Logowanie odwołań do plików umieszczonych na serwerze.
mod_mime Określenie typu pliku na podstawie rozszerzenia.
mod_mime_magic Określenie typu pliku na podstawie kilku bajtów jego zawartości.
mod_mmap_static Pozwala określić pewne niezmienne pliki, które zostaną umieszczone w pamięci serwera Apache w celu szybszego dostępu.
mod_negotiation Odpowiedzialny za uzgadnianie najlepszej reprezentacji danych w przeglądarce klienta. Wprowadzony ze względu na zgodność z HTTP/1.1
mod_proxy Apache staje się serwerem proxy dla stron WWW, przyspiesza dostęp do często używanych danych, gdy serwer WWW (komputer) jest wykorzystywany do zapamiętywania danych.
mod_rewrite Moduł o ogromnych możliwościach. Pozwala modyfikować adresy URL �w locie" za pomocą wyrażeń regularnych.
mod_setenvif Pozwala modyfikować zmienne środowiskowe na podstawie wywołania (danych klienta).
mod_so Eksperymentalny. Ładowanie dodatkowych modułów podczas działania serwera.
mod_speling Moduł odpowiedzialny za poprawianie pomniejszych błędów w adresach URL.
mod_status Wyświetla bieżący stan serwera Apache.
mod_userdir Ustawienia dotyczące katalogów domowych użytkowników.
mod_unique_id Generuje unikalny identyfikator dla każdego żądania.
mod_usertrack Śledzenie zachowania użytkowników za pomocą Cookies (tzw. ciasteczka), szczególnie przydatne dla np. stałych klientów w sklepach internetowych lub do określania preferencji użytkownika.

Apache może też współpracować z serwerami aplikacyjnymi, takimi jak Tomcat, ZOPE czy Python Webware.
Apache Tomcat - jest serwerem, który umożliwia uruchamianie aplikacji internetowych w technologiach java servlets i JSP (Java Server Pages). Jest to jeden z bardziej popularnych kontenerów Web. Tomcat jest wykorzystywany w takich serwerach aplikacji J2EE jak JBoss lub Geronimo. Jest również bardzo popularnym kontenerem dla samodzielnych aplikacji (nie wymagających pełnego serwera aplikacji) pisanych w środowisku Springframework.
Apache Tomcat początkowo rozwijany był jako podprojekt projektu Apache Jakarta. W 2005 roku projekt uzyskał status samodzielnego projektu w ramach struktury projektów Apache.
Zope (Z Object Publishing Environment) to serwer aplikacji napisany w Pythonie (języku programowania), z zastosowaniem programowania obiektowego. Umożliwia tworzenie systemów zarządzania treścią, portali internetowych oraz intranetowych,( Intranet jest siecią komputerową ograniczająca się do komputerów np. w firmie lub organizacji. Sieć taka zwana jest potocznie LAN.) a także aplikacji webowych.
[edytuj]
Budowa
Najważniejsza część systemu to transakcyjna, hierarchiczna oraz obiektowa baza danych ZODB (Zope Object Database). Każda część stworzonego serwisu jest przechowywana w bazie. Zope zapewnia wysokie bezpieczeństwo dzięki dobrze określonym poziomom uprawnień.
Można zwiększyć jego funkcjonalność poprzez dodanie jednej z wtyczek (po ang. plug-in) zwanych w Zopie produktami. Dostępne są one pod adresem http://www.zope.org/Products/.
Zope posiada wbudowany serwer WWW, FTP, rozszerzenie protokołu HTTP 1.1 - WebDAV - oraz protokół XML pierwszej generacji opierający się na RPC - XML-RPC. Oczywiście może on także współpracować z innymi serwerami jak choćby np. z Apache.

Related Articles