niedziela, 14 października 2012

Apache Web Serwer

Serwer stron www Apache jest najczęściej używanym serwerem webowym na świecie. Jest dostępny dla większości systemów operacyjnych. Opiszę tutaj instalację i konfigurację serwera Apacze w openSUSE.

Instalacja

Uruchom YaST --> Zarządzanie oprogramowaniem --> Widok --> Wzorce, zaznacz Serwer sieci Web i LAMP --> Akceptuj.

Start

Apache może być uruchamiany automatycznie w czasie startu systemu  i może być uruchamiany ręcznie.

1. Aby się upewnić, że Apacze jest automatycznie startowany w poziomach pracy 3 i 5, wydaj polecenie:

/sbin/chkconfig -a apache2

2. Alternatywnie można uruchomić Apache poprzez YaST --> System --> Usługi systemowe (poziomy pracy), poszukaj Apache2, zezwól usługę, Apache wystartuje natychmiast. Zapisz swoje ustawienia. System zostanie skonfigurowany do startowania Apache w poziomach pracy 3 i 5.

Sprawdzenie czy Apache jest uruchomiony

Jeżeli w czasie startu Apache nie uzyskałeś żadnych błędów, oznacza zwykle, że serwer jest uruchomiony. Aby to przetestować uruchom przeglądarkę internetową i otwórz http://localhost/, powinieneś zobaczyć stronę testową z napisem "It works!".

Konfiguracja Apache

Konfiguracja za pomocą YaST

Uruchom YaST i wybierz Usługi sieciowe i Serwer HTTP. Uruchomi się kreator konfiguracji. Na początku należy wybrać interfejsy i porty sieciowe i ich adresy ip. Domyślnym ustawieniem jest nasłuchiwanie na wszystkich interfejsach sieciowych (adresów ip) na porcie 80., zaznacz "Otwórz port w zaporze sieciowej".
Następnie mamy konfigurację modułów, możemy zaznaczyć jakie moduły mają być obsługiwane przez serwer Apache. Mamy do wyboru:

  • Włącz obsługę skryptów PHP5
  • Włącz obsługę skryptów Perl
  • Włącz obsługę skryptów Python
Host domyślny

Opcja ta przedstawia domyślnie ustawienia serwera. Apacze mże obsługiwać wiele wirtualnych hostów w jednej fizycznej maszynie. Pierwszy zadeklarowany wirtualny host w pliku konfiguracyjnym jest powszechnie  określony jako host domyślny. Każdy host wirtualny dziedziczy konfigurację z hosta domyślnego. Aby edytować ustawienia hosta (zwane również deryktewami)  należy wybrać daną pozycje i nastepnie kliknij przycisk Edytuj. Aby dodać nowe dyrektywy kliknij przycisk Dodaj. Mamy tutaj do wyboru:

  • Katalog główny dokumentów  -  ścieżka do katalogu w którym przechowywane serwowane przez host pliki, domyśną lokacją jest /srv/www/htdocs
  • Alias  -  za pomocą tej dyrektywy adresy mogą być przypisane do fizycznej lokalizacji systemu plików, domyślną wartością jest /icons/ "/usr/share/apache2/icons/"
  • Directory  -  za pomocą tych dyrektyw możesz skonfigurować opcje konfiguracyjne, które dotyczyć będą danego katalogu. Domyślne ustawienia są wystarczające i nie ma potrzeby ich zmieniać
  • ScriptAlias  -  podobnie do Alias dyrektywa ta mapuje URL do fizycznej lokalizacji systemu plików. Różnica jest taka, że SriptAlias wyznacza katalog do skryptów CGI, co oznacza, że skrypty CGI powinny być wykonywane w tym miejscu
  • Include  -  za pomocą tej dyrektywy mogą być określone dodatkowe pliki konfiguracyjne. Dwie dyrektywy Include są już skonfigurowane. Pierwsza /etc/apache2/conf.d/ jest katalogiem zawierającym pliki konfiguracyjne dla zewnętrznych modułów. Z tą dyrektywą są włączone wszystkie pliki konfiguracyjne z rozszerzeniem .conf,. Druga /etc/apache2/conf.d/apache2-manual.conf są zawarte własne pliki konfiguracyjne.
  • Nazwa serwera  -  wprowadź nazwę serwera w postaci FQDN. Nie można wprowadzić dowolnej nazwy, nazwa musi być zarejestrowana.
  • Adres e-mail administratora serwera  -  adres administratora serwera, który pojawia się np. na stronach błędów jakie tworzy Apache.
Po konfiguracji Hosta domyślnego naciśnij przycisk Dalej

Hosty wirtualne

W tym etapie kreator wyświetla listę hostów wirualnych. Aby dodać hosta kliknij przycisk Dodaj, zostaniesz poproszony o wprowadzenie:
  • Nazwa serwera
  • Zawartość głównego katalogu serwera
  • Adres e-mail administratora
  • Rozwiązywanie zapytań serwera  -  mamy do wyboru: Określ serwer żądań za pomocą nagłówków HTTP (nazwa), albo Określ serwer żądań za pomocą adresu IP serwera
Kliknięcie Dalej, przejdziemy do drugiej części konfiguracji wirtualnego hosta, możemy określić czy należy włączyć skrypty CGI, oraz gdzie użyć tych skryptów. Możliwe jest również czy zastosować SSL, jeśli tak należy określić ścieżkę do certyfikatu. 

Podsumowanie


To jest ostatni krok kreatora. Można określić jak serwer Apacze ma być uruchamiany, automatycznie w czasie startu czy ręcznie. Zobacz podsumowanie konfiguracji. Aby zakończyć prace kreatora kliknij Zakończ.

Startowanie i zatrzymywanie serwera Apache

Do manipulacji, startowania i zatrzymywania serwera Apache służy polecenie sudo /usr/sbin/rcapache2 z następującymi opcjami:

  • status  -  słuzy do sprawdzenia czy Apache jest uruchomiony
  • start  -  startuje serwer Apacze
  • stop  -  zatrzymuje serwer Apache
  • stratssl  -  startuje Apache ze wsparciem SSL
  • restart  -  zatrzymuje i uruchamia serwer
  • try-restart  -  zatrzymuje i uruchamia Apache, tylko jeżeli jest uruchomiony
  • reload albo graceful  -  zatrzymuje serwer Apache doradzając procesom potomnym Apache zakończyć swoje zadania przed zatrzymaniem. Jeżeli każdy proces zginie jest zastępowany przez nowo wystartowany, powodując całkowity restart Apache. Opcja ta jest użyteczna gdy aktualizujemy Apache do nowszej wersji, albo gdy zmieniamy opcje konfiguracyjne serwera, zapewnia to minimalny przestój serwera.
  • stop-graceful  -  zatrzymuje Web serwer na predefiniowany czas określony w GracefulShutdownTimeout, w celu zapewnienia, że istniejące zapytania mogą być zakończone. Czas ten musi być określony, w przeciwnym wypadku Web serwer będzie się cały czas restartował.
  • configtest albo extreme-configtest  -  sprawdza poprawność plików konfiguracyjnych bez zatrzymywania serwera Apache. Extreme-configtest startuje web serwer jako użytkownik nobody i ładuje konfigurację i można wykryć więcej błędów
  • probe  -  sprawdza czy konfiguracja się zmieniła i sugeruje wymagane argument do polecenia rcapache2
  • server-status i full-server-status  -  zrzuca krótki albo pełny status serwera. Wymaga zainstalowania lunx albo w3m.. Wymaga również załadowania modułu module mod_status i status musi być dodany do APACHE_SERVER_FLAGS w pliku /etc/sysconfig/apache2
Instalacja, aktywacja i konfiguracja modułów

Oprogramowanie Apache jest zbudowane w sposób modułowy. Wszystkie funkcje z wyjątkiem podstawowych są obsługiwane przez moduły.
Moduły Apache możemy podzielić na cztery kategorie:

  • Moduły podstawowe  -  są kompilowane do Apache domyślnie (mod_so, http_core
  • Moduły rozszerzeń  -  moduły te są zawarte w pakiecie Apache, ale nie są wkompilowane w serwer statycznie. W openSUSE moduły te są dostępne jako dzielone obiekty, które mogą być załadowane w czasie startu serwera.
  • Moduły zewnętrzne  -  nei są zawarte w oficjalnej dystrybucji Apache, ale openSUSE dostarcza kilka z nich
  • Moduły Multiprocessing (MPM)  -  MPM jest odpowiedzialne za przyjmowanie i rozpatrywanie zgłoszeń do Serwera Web,, reprezentuje rdzeń oprogramowania Web serwera
Instalacja modułów

Jeżeli wykonałeś domyślną instalację, następujące moduły są już zainstalowane: wszystkie moduły podstawowe i moduły rozszerzeń, MPM i zewnętrzne moduły mod_php5 i mod_python. Dodatkowe mod↓ły możesz zainstalować za pomocą YaST.

Aktywacja i dezaktywacja modułów

Włącznie lub wyłącznie poszczególnych modułów możesz wykonać za pomocą YaST lub ręcznie. UruchomYaST --> Usługi sieciowe --> Serwer HTTP, wejdź w zakładkę moduły serwera i zatrzymaj albo uruchom dany modoł.
Ręczne uruchamianie i zatrzymywanie modułów, użyj odpowiednio polecenia: a2enmod mod_foo i a2dismod   mod_foo

Moduły bazowe i rozszerzeń

Oto opis najważniejszych modułów:
  • mod_actions  -  dostarcza metody do wykonywania skryptu, gdy pewien typ Mime jest żądany np. plik ze specyficznym rozszerzeniem jak .rpm, albo plik .pdf. Moduł ten domyślnie jest właczony
  • mod_alias  -  zapewnia Alias i Redirect, które można mapować do konkretnego katalogu lub przekierować żądany adres URL do innej lokalizacji. Moduł ten domyślnie jest włączony
  • mod_auth *  -  moduły uwierzytelniania zapewniają różne metody uwierzytelniania
  • mod_autoindex  -  Autoindex generuje przeglądanie katalogu, wtedy gdy nie jest obecny index.html
  • mod_cgi  -  moduł ten jest potrzebny do wykonywania skryptów CGI, domyslnie jest włączony
  • mod_deflate  -  używając tego modułu Apache może być skonfigurowany do kompresji określonych typów plików przed ich dostarczeniem
  • mod_dir  -  moduł ten dostarcza dyrektywą DirectoryIndex , za pomocą której możesz skonfigurowąć które pliki są dostarczane kiedu otwierany jest katalog (domyślnie index.html). Moduł ten domyślnie jest włączony
  • mod_env  -  kontroluje środowisko które jest przekazywane do skryptów CGI lub stron SSI. Moduł ten domysnie jest włączony
  • mod_expires  -  za pomocą tego modułu można kontrolować jak często są odświeżane dokumenty w proxy i przeglądarce. Moduł ten domyślnie jest włączony
  • mod_include  -  moduł ten pozwala używać Server Side Includes (SSI), który zapewnia podstawowe funkcje do generowania stron HTML. Moduł ten domyślnie jest włączony
  • mod_info  -  dostarcza przegląd konfiguracji serwera pod adresem http://localhost/server-info
  • mod_log_config  -  za pomocą tego modułu można określić wygląd plików log. Moduł ten domyślnie jest włączony
  • mod_mime  -  moduł ten sprawia, że plik jest dostarczany z odpowiednim nagłówkiem MIME w oparcin na rozszerzenie pliku np. text/html do dokumentów HTML. Moduł ten domyślnie jest włączony
  • mod_negotiation  - konieczne do negocjacji zawartości. Moduł ten domyślnie jest włączony
  • mod_rewite  -  zapewnia funkcjonalność mod_alias ale oferuje więcej funkcji i elastyczność, można przekierować URL w oparciu o wiele reguł
  • mod_setenvif  -  ustawia zmienne środowiskowe w oparciu o zgłoszenie klienta
  • mod_spelling  -  próbuje automatycznie korygować błędy typograficzne w adresach URL
  • mod_ssl  -  umożliwia połączenia szyfrowane między serwerem Apache a klientami
  • mod_status  -  dostarcza informacji na temat aktywności i wydajności serwera pod adresme http://localhost/server-status. Domyślnie tylko localhost ma dostęp do tego adresu
  • mod_suexec  -  umożliwaia wykonywanie skryptów CGI przez innego użytkownika. Moduł ten domyślnie jest włączony
  • mod_userdir  -  zezwala na uzywanie katalogów użytkownika w ~user/. Dyrektywa UserDir musi być określona w konfiguracji. Moduł ten domyślnie jest włączony
Moduły zewnętrzne
  • mod-apparmod  -  dodaje wsparcie do AppArrmor dla indywidualnych skryptów CGI obsługiwanych przez moduły take jak mod_php5 czy mod_perl
  • mod_mono  -  korzystanie z tego modułu umożliwia uruchamianie na serwerze stron ASP.NET
  • mod_perl  -  umożliwia wykonywanie skryptów Perl przez wewnętrzny interpreter
  • mod_php5  -  umożliwia wykonywanie skryptów PHP
  • mod_python  -  umożliwia osadzanie Pythona w serwerze Apache, co umożliwia większą wydajność wykonywania aplikacji webowych
Skrypty CGI

Apache's Common Gateway Interface (CGI), umożliwia tworzyć dynamiczny kontekst za pomocą programów albo skryptów powszechnie nazywanymi skryptami CGI. Skrypty CGI mogą być napisane przez w dowolnym języku programowania. Powszechnie używanymi językami programowania skryptów są Perl i PHP.
Aby skrypty mogły być wykonywane musi być włączony mod_cgi i potrzebny też będzie mod_alias. Oba moduły są domyślnie włączone.

Rozwiązywanie problemów CGI

  • czy przeładowałeś serwer po zmianie konfiguracji za pomocą rcapache2 probe
  • jeżeli skonfigurowałeś własny katalog CGI to czy jest właściwie skonfigurowany? Wypróbuj uruchomić skrypt w domyślnej lokalizacji /srv/www/cgi-bin/ i wywołaj go za pomocą http://localhost//cgi-bin/test.cgi
  • czy uprawnienia są właściwe, wejdż do katalogu CGI i wykonaj polecenie ls -l test.cgi powinno wyglądać tak : -rwxr-x r-x   1   root   root
  • upewnij się, że skrypt nie zawiera błędów programowania.

Konfiguracja Apache z SSL

Ilekroć zachodzi potrzeba przekazywania poufnych informacji między serwerem a klientem takich jak informacje o karcie kredytowej, pożądane jest posiadanie bezpiecznego, szyfrowanego połączenia z uwierzytelnianiem. Takich funkcji dostarcza użycie protokołu Secure Socket Layer (SSL). i Transport Layer Security (TLS).
Działa to na zasadzie, że serwer wysyła certyfikat, który przechowuje informacje potwierdzające tożsamość serwera, przed następnym żądaniem w odpowiedzi. Z kolei to gwarantuje, że serwer jest własciwy i gotowy do komunikacji. Dodatkowo certyfikat gwarantuje szyfrowane połączenie między klientem i serwerem, które przesyła informacje bez ryzyka narażenia przechwycenia treści.
mod_ssl nie implementuje sam protokołu SSL/TLS. W openSUSE używana jest do tego celu biblioteka.

Tworzenie certyfikatu SSL

Aby korzystać z SSL/TLS należy utworzyć certyfikat SSL na serwerze sieci Web. Certyfikat jest potrzebny do autoryzacji między klientem a serwerem. Są trzy rodzje certyfikatów jakie można utworzyć certyfikat "dummy", który jest przeznaczony tylko do testowania, certyfikat z podpisem własnym dla określonego kręgu użytkowników, oraz certyfikat podpisany przez niezależny organ publiczny (CA).
Tworzenie certyfikatu odbywa się w dwóch krokach, po pierwsze klucz prywatny urzędu certyfikacji jest generowany, wówczas certyfikat serwera jest podpisany z tego klucza.

Tworzenie certyfikatu "Dummy"

Generowanie tego certyfikatu jest proste, wystarczy uruchomić /usr/bin/gensslcert. Wygenerowane zostaną pliki:

  • /etc/apache2/ssl.crt/ca.crt
  • /etc/apache2/ssl.crt/server.crt
  • /etc/apache2/ssl.crt/server.key
  • /etc/apache2/ssl.crt/server.csr
  • /root/mkcert.cfg
Kopia ca.crt również jest umieszczona w /srv/www/htdocs/CA.crt

Tworzenie certyfikatu z podpisem własnym

Jeżeli używasz bezpiecznego serwera Web w Intranecie lub dla określonego kręgu użytkowników, może być wystarczające stworzenie certyfikatu z własnym podpisem.
Tworzenie certyfikatu z własnym podpisem jest interaktywnym dziewięcio krokowym etapem. Przejdź do katalogu /usr.share/doc/packages/apache2 i wykonaj następujące polecenie: ./mkcert.sh make --no-print-directory /usr/bin/openssl /usr/sbin/custom. Nie próbuj wykonywać tego polecenia poza wskazanym katalogiem.

Uzyskiwanie certyfikatu z podpisem urzędowym

Istnieje wiele urzędów certyfikacji podpisywania certyfikatów. Certyfikatowi temu można zaufać, ponieważ został wygenerowany przez niezależną instytucję. Publiczne serwery WWW posiadają zazwyczaj te certyfikaty. Najbardziej znanymi urzędami certyfikacji są Thawte i Verisign. Certyfikaty te są wkompilowane we wszystkie przeglądarki , więc są automatycznie akceptowane przez przeglądarke.
Aby uzyskać certyfikat z podpisem urzędowym należy uruchomić skrypt /usr/share/ssl/misc/CA.sh-newreq. Należy odpowiedzieć na postawione pytania.

Konfiguracja serwera Apache z SSL

Apache nasłuchuje na porcie 80, a SSL/TLS na porcie 443. Nie zapomnij otworzyć portu 443 na zaporze sieciowej.

Na podstawie dokumentacji openSUSE

Brak komentarzy:

Prześlij komentarz