Spis treści
1. Wprowadzenie.
2. Składniki.
3. Obsługiwane platformy.
4. Strona WWW użytkownika, strona Testowa i phpMyAdmin.
5. Sposób uruchomienia Apache i MySQL.
6. Współpraca PHP4 i MySQL 4.1.
7. Typ instalacji PHP.
8. Aktywacja domeny lokalnej.
9. Certyfikat bezpieczeństwa OpenSSL.
10. Ustawienia eksperta - deinstalacja oraz instalacja usług Apache2 i MySQL.
11. Znane problemy.
1. Wprowadzenie.
DiaboliServ jest pakietem oprogramowania służącego do publikacji stron
internetowych w celach testowych. DiaboliServ automatycznie konfiguruje oprogramowanie jakim
jest serwer WWW Apache, parser PHP, baza danych MySQL, Zend Optimizer, OpenSSL i phpMyAdmin.
Po instalacji pakietu DiaboliServ, Apache, PHP, MySQL, Zend Optimizer i OpenSSL
są natychmiast poprawnie skonfigurowane, co można sprawdzić przez
wywołanie w przeglądarce WWW adresu "https://127.0.0.1/test".
Aby usługi Apache2 i MySQL zostały uruchomione, w systemach Windows 98/Me
konieczny będzie restart. Zmiana ustawień w plikach httpd.conf, ssl.conf,
php.ini oraz my.ini również będzie wymagać restartu tych systemów.
Nie jest to konieczne, jednak zalecane jest wyłączyć oprogramowanie
antywirusowe na czas zapisywania zmian w konfiguracji. Niektóre programy
antywirusowe mogą bowiem znacznie spowolnić działanie konfiguratora.
Pakiet DiaboliServ 1.6 jest otwarty na dowolne modyfikacje plików
konfiguracyjnych Apache, PHP, MySQL i OpenSSL. Należy jedynie przestrzegać
zasady, aby najpierw ustawić to co jest możliwe za pomocą konfiguratora pakietu,
a dopiero potem manualnie edytować pliki konfiguracyjne. Jest to bardzo ważne,
gdyż konfigurator zapisując zmiany w konfiguracji nadpisuje pliki
"httpd.conf", "php.ini", "my.ini", "ssl.conf"
oraz pliki certyfikatów OpenSSL.
Filozofią pakietu DiaboliServ jest maksymalne uproszczenie instalacji
Apache, PHP, MySQL, Zend Optimizera, OpenSSL i phpMyAdmin'a bez większego zagłębiania
się w szczegóły konfiguracji wymienionego oprogramowania. Procedura instalacji w
normalnym trybie zajmuje do 5 kliknięć.
Sprawą priorytetową jest również łatwa do granic możliwości zmiana
najważniejszych ustawień powyższych programów.
2. Składniki.
- Apache 2.0.52,
- PHP 4.3.11,
- MySQL 4.1.12a, - Zend Optimizer 2.5.7,
- OpenSSL 0.9.7e,
- phpMyAdmin 2.6.4.
3. Obsługiwane platformy.
- Windows 98,
- Windows Me,
- Windows 2000,
- Windows XP,
- Windows 2003.
4. Strona WWW użytkownika, strona Testowa i phpMyAdmin.
Domyślnie, strona użytkownika umieszczona jest w podkatalogu "www",
będącym w katalogu instalacyjnym DiaboliServ. Bardzo szybko można
zmienić to ustawienie w konfiguratorze DiaboliServ, wskazując
odpowiedni folder ze żródłem.
Strona użytkownika dostępna jest pod adresem "http://127.0.0.1".
Strona testowa znajduje się w podkatalogu "test",
będącym w katalogu instalacyjnym DiaboliServ. Strona ta jest skonfigurowana
dla serwera Apache
jako alias i dlatego zawsze dostępna jest pod adresem "http://127.0.0.1/test".
Pliki klienta phpMyAdmin znajdują się w podkatalogu "phpmyadmin",
będącym w katalogu
instalacyjnym DiaboliServ. Aplikacja ta jest skonfigurowana dla serwera Apache
jako alias i dlatego zawsze dostępna jest pod adresem "http://127.0.0.1/phpmyadmin".
5. Sposób uruchomienia Apache i MySQL.
Serwery Apache i MySQL uruchamiane są jako usługi.
Oznacza to że system automatycznie uruchamia je podczas startu,
zanim zaloguje się użytkownik i serwery te pracują w tle.
W systemach Windows 2000/XP/2003 istnieje możliwość szybkiego
zatrzymywania i uruchamiania tychże usług poprzez wydanie komend:
NET STOP APACHE2
NET START APACHE2
NET STOP MYSQL
NET START MYSQL
Jeszcze szybciej dokonamy tego z konfiguratora DiaboliServ,
klikając po prostu na odpowiednie opcje w programie. (URUCHOM, ZRESTARTUJ,
ZATRZYMAJ)
W systemach Windows 98/Me również istnieje możliwość szybkiego
zatrzymywania i uruchamiania tychże usług, ale w praktyce można
administrować w ten sposób jedynie usługą MySQL.
W tym celu w wierszu polecenia zmieniamy katalog bieżący na
katalog, w którym znajdują się pliki "mysqld.exe" i "mysqladmin.exe"
- zwykle jest to "C:\Program Files\DiaboliServ_1_6\MySQL\bin",
czyli wydajemy takie komendy:
C:
CD C:\Program Files\DiaboliServ_1_6\MySQL\bin
Dopiero potem możemy używać takich komend:
mysqladmin -u root shutdown
mysqld --old-passwords
--> Więcej o parametrze "--old-passwords" w punkcie 6.
O wiele szybciej dokonamy tego z konfiguratora DiaboliServ,
klikając po prostu na odpowiednie opcje w programie. (URUCHOM, ZRESTARTUJ,
ZATRZYMAJ)
Niestety usługę Apache2 w przypadku Windows 98/Me możemy jedynie
uruchamiać ponownie poprzez restart systemu Windows.
Całkowicie zatrzymać tę usługę można tylko odinstalowując ją z systemu.
--> Więcej o deinstalacji usług w punkcie 10.W Windows 2000/XP/2003 nie musimy odinstalowywać usług tylko po to żeby
system nie uruchamiał ich automatycznie. W tych systemach możemy ustalić typ
uruchomienia usługi. Domyślnie typ uruchomienia usług Apache2 i MySQL jest
automatyczny. Nic nie stoi na przeszkodzie żeby zmienić ten typ na ręczny.
Dzięki temu usługi nie będą automatycznie uruchamiane, ale będziemy mieli
możliwość uruchomienia tychże usług poprzez polecenie "NET START ...". Typ
uruchomienia usług Apache2 i MySQL w Windows 2000/XP/2003 można zmieniać za pomocą przystawki
"Usługi" lub za pomocą konfiguratora DiaboliServ, co jest oczywiście bardziej
zalecanym rozwiązaniem. (Uruchamiaj automatycznie)
6. Współpraca PHP4 i MySQL 4.1.
Parser PHP4 nie jest w stanie połączyć się z bazą MySQL 4.1, gdy ta druga zainstalowana jest z domyślnymi opcjami i konto użytkownika bazy danych jest zabezpieczone hasłem.
Konta użytkowników serwera bazy danych MySQL są zapisywane w bazie o nazwie "mysql", w tabeli "user".
W MySQL od wersji 4.1 zaimplementowano obsługę 41-bajtowych hashy. PHP4 obsługuje jedynie 16-bajtowe hashe.
Struktura 16-bajtowych hashy wygląda następująco: 6f8c114b58f2ce9e,
podczas gdy struktura 41-bajtowych wygląda tak: *43c8aa34cdc98eddd3de1fe9a9c2c2a9f92bb2098d75.
41-bajtowe hashe są dłuższe i zawsze zaczynają się znakiem "*", co nie miało miejsca w ich 16-bajtowej odmianie.
Można jednak spowodować aby baza MySQL 4.1 używała 16-bajtowych hashy, dzięki czemu parser PHP4 obsłużyłby autoryzowane połączenie z tą bazą danych.
W tym celu należy uruchamiać serwer bazy danych z parametrem "--old-passwords".
Aplikacje pakietu DiaboliServ domyślnie instalują i uruchamiają usługę bazy MySQL 4.1 z
parametrem "--old-passwords".
--> Więcej o uruchamianiu usługi MySQL w punkcie 5.
--> Więcej o instalowaniu usługi MySQL w punkcie 10.
7. Typ instalacji PHP.
Możiwe są 2 tryby instalacji parsera PHP:
- Moduł serwera Apache,
- skrypt CGI.
Aby PHP był uruchomiony jako moduł serwera Apache, w pliku "httpd.conf",
w sekcji "Global Environment" obok deklaracji innych jego modułów
powinna znaleźć się linia deklarująca moduł PHP:
LoadModule php4_module ../php/sapi/php4apache2.dll
W ten sposób deklarowany jest moduł PHP4 dla Apache2 domyślnie w DiaboliServ
1.6.
Aby PHP był uruchamiany jako skrypt CGI, w pliku "httpd.conf" w sekcji "Main server configuration" powinny znaleźć się 2 linie definiujące
położenie plików parsera:
ScriptAlias /php/ "C:/Program Files/DiaboliServ_1_6/php/" Action application/x-httpd-php "/php/php.exe"
W pierwszej linii deklarujemy lokalizację głównego katalogu PHP, a w drugiej wskazujemy lokalizację pliku parsera PHP (php.exe) względem zdefiniowanego wcześniej katalogu.
Zarówno w przypadku instalacji PHP jako modułu serwera Apache jak i w instalacji PHP
jako serwer CGi konieczne jest zdefiniowanie typów plików, które interpreter PHP będzie
w razie potrzeby parsował. Taką definicję należy umieścić w sekcji
"Main server configuration", a powinna ona wyglądać tak jak poniżej
lub przynajmniej podobnie:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .html
8. Aktywacja domeny lokalnej.
Na komputerze lokalnym istnieje możliwość zamapowania dowolnego adresu
strony WWW do testowego adresu IP (127.0.0.1). W ten sposób można wywołać
stronę WWW użytkownika poprzez adres typu "domena.pl".
Aby zamapować adres typu "domena.pl" do testowego adresu IP,
należy dodać taki wpis:
"127.0.0.1 domena.pl"
w Windows 2000/XP/2003 do pliku "hosts" - zwykle
"C:\WINDOWS\system32\drivers\etc\hosts",
w Windows 98/Me do pliku "hosts.sam" - zwykle "C:\WINDOWS\hosts.sam".
Dodatkowo zamapowując w konfiguratorze do adresu IP domenę typu "www.domena.pl", zapapowywana
jest do tego samego adresu IP domena "domena.pl".
Mapowania domen dokonamy
klikając po prostu na odpowiednie opcje w konfiguratorze. (AKTYWUJ, ZAPISZ
USTAWIENIA)
9. Certyfikat bezpieczeństwa OpenSSL.
Podczas automatycznej konfiguracji pakietu DiaboliServ 1.6, generowane są 4
domyślne
certyfikaty zabezpieczeń wymagane do poprawnej pracy serwera Apache w trybie SSL.
Jako informacje o certyfikatach zostały podane takie dane:
Organizacja: Sigillum Diaboli,
Oddział organizacji: DiaboliServ,
Kod kraju: PL,
Region: Mazury,
Lokalizacja: Nidzica.
Generowanie 4 certyfikatów bezpieczeństwa wynika stąd, że do strony WWW
użytkownika
można odwołać się na 4 sposoby:
- "127.0.0.1" (testowy adres IP),
- "localhost" (nazwa DNS domyślnie zamapowana do testowego IP),
- hostname (Nazwa hosta),
- domena lokalna (opcjonalna nazwa DNS zamapowana do testowego IP).
Wywołując stronę WWW o adresie np. "localhost" odwołujemy się tak
naprawdę do adresu IP
"127.0.0.1" i w efekcie przeglądarka wyświetla nam stronę użytkownika.
Problemem jednak
są wywołania strony w trybie SSL. W tym wypadku nazwa domenowa strony WWW
powinna się
zgadzać z nazwą strony na certyfikacie bezpieczeństwa, używanym w protokole
HTTPS.
To właśnie na podstawie tego certyfikatu przeglądarka potrafi odszyfrować stronę
WWW
zaszyfrowaną przez SSL. W wypadku DiaboliServ, można śmiało ignorować
niezgodności nazw
na certyfikatach z nazwami strony WWW, gdyż przy konfiguracji oferowanej przez
DiaboliServ
jak i przez większość innego oprogramowania, odwołanie "localhost"
oznacza wywołanie adresu
"127.0.0.1".
Często zachodzi jednak potrzeba aby nazwa na certyfikacie bezpieczeństwa była
zgodna z nazwą
wywoływanej strony WWW i dlatego DiaboliServ generuje 4 takie certyfikaty,
dostosowane do
różnych nazw domenowych opisanych powyżej. I tak stronę WWW użytkownika w trybie
SSL można
wywoływać na 4 sposoby:
- "https://127.0.0.1:443"
- "https://localhost:501" (zakładając że nazwa "localhost" jest
zamapowana do testowego IP)
- "https://nazwahosta:502" (fraza "nazwahosta" odpowiada rzeczywistej
nazwie komputera)
- "https://domenalokalna:503" (fraza "domenalokalna" odpowiada
przypisanej domenie lokalnej)
Odwoływanie się do strony WWW użytkownika w taki sposób możliwe jest dzięki
odpowiedniej
konfiguracji plików "hosts" i "hosts.sam".
--> Więcej o tym w punkcie 8.
Dodatkowo, aby serwer Apache obsłużył tego rodzaju zapytania, konieczna jest
konfiguracja
hostów wirtualnych, do których są przypisane odpowiednie nazwy domenowe wraz z
odpowiednimi
certyfikatami bezpieczeństwa. Jak widać powyżej, do każdego hosta wirtualnego
odwołujemy się
na innym porcie. Jest to wymagane przez OpenSSL. Każda instancja SSL musi
nasłuchiwać na
oddzielnym porcie. W przypadku DiaboliServ, SSL wykorzystuje porty 443, 501,
502 i 503.
W poniższych przykładach wykorzystywana jest nazwa "localhost", domyślnie
figurująca w pliku
"hosts" lub "hosts.sam" jako odwołanie do adresu "127.0.0.1".
Nazwa ta w odniesieniu się do
niej z poziomu przeglądarki WWW ma takie same własności jak inne nazwy DNS
przypisane w tych
plikach i takie same własności jak nazwa komputera figurująca w zmiennej
środowiskowej
"HOSTNAME" czy też "COMPUTERNAME".
Port 443 jest standardowym portem dla SSL przypisanym do nazwy "127.0.0.1"
i dlatego
wyjątkowo wywołując stronę WWW "https://127.0.0.1" serwer Apache
automatycznie odpowiada na
porcie 443. Odwołując się w trybie SSL do każdej innej nazwy, należy
podać port na którym
nasłuchuje właściwa dla tej nazwy instancja SSL, wysyłająca certyfikat
bezpieczeństwa
z nazwą witryny odpowiadającą wywoływanej nazwie domenowej.
- Wywołując stronę "https://localhost", odwołamy się do hosta wirtualnego
pracującego na
porcie 443, który wysyła certyfikat z nazwą witryny "127.0.0.1" i
przeglądarka WWW
wyświetli ostrzeżenie o niezgodności nazwy strony z nazwą witryny na
certyfikacie.
- Wywołując stronę "https://localhost:501" odwołamy się do właściwego
hosta wirtualnego
pracującego na porcie 501, który wysyła certyfikat z nazwą witryny "localhost".
Nazwa
strony będzie w tym przypadku zgodna z nazwą witryny na certyfikacie
bezpieczeństwa.
Częste odwoływanie się do konkretnych portów może być uciążliwe i mylące.
Dlatego aktywując ustawienie "przekierowania na niestandardowe porty SSL (501, 502, 503)"
definiujemy
dodatkowe 3 hosty wirtualne nasłuchujące na porcie 443, których zadaniem
jest przekierowanie
wywołania typu "https://localhost" na "https://localhost:501".
Takie rozwiązanie ma jednak pewne wady:
- Pojawia się dodatkowy monit ostrzegający o niezgodności nazwy strony z nazwą
witryny na
certyfikacie i dopiero po akceptacji połączenia nastąpi przekierowanie na
właściwy port.
Dzieje się tak, gdyż dodatkowy host wirtualny nasłuchuje na porcie 443
zarezerwowanym dla
instancji SSL z certyfikatem przypisanym dla witryny o nazwie "127.0.0.1",
a wywołujemy go
przez "https://localhost".
- Niektóre skrypty PHP i JavaScript mogą zwrócić błąd, gdyż w pewnych warunkach
według nich
teoretycznie zmienia się lokalizacja strony która je wywołuje.
- Niektóre przeglądarki WWW (np. IE5) niepoprawnie obsługują to ustawienie nie
pobierając właściwych certyfikatów bezpieczeństwa podczas
operacji przekierowania. Z tych powodów, domyślnie ustawienie "przekierowania na
niestandardowe porty SSL (...)" jest
nieaktywne, ale w pewnych warunkach warto je wypróbować.
Korzystając z konfiguratora DiaboliServ 1.6 można w sposób automatyczny
wygenerować własne
certyfikaty bezpieczeństwa podając swoje własne dane w polach: Organizacja, Kod
kraju,
Region, Lokalizacja, E-mail oraz Hasło. Adres strony WWW dla poszczególnych
certyfikatów
będzie ustawiany automatycznie. Nazwa oddziału organizacji na certyfikacie
będzie opisana
jako "DiaboliServ".
10. Ustawienia eksperta - deinstalacja oraz instalacja usług Apache2 i MySQL.
Aby usługi Apache2 i MySQL nie były automatycznie uruchamiane przez
system Windows, należy je między innymi odinstalować. Można to zrobić w wierszu polecenia.
Wyjątkiem jest usługa MySQL w systemie Windows 98/Me, którą instalujemy i
odinstalowujemy poprzez utworzenie lub usunięcie odpowiedniej wartości
w rejestrze systemu Windows 98/Me.
Zanim jednak odinstalujemy usługi, należy je najpierw zatrzymać jeśli jest to
możliwe.
--> Więcej o zatrzymywaniu usług w punkcie 5.
Aby odinstalować usługę Apache2, należy zmienić katalog bieżący na katalog,
w którym znajduje się plik "Apache.exe" - zwykle jest to katalog
"C:\Program files\DiaboliServ_1_6\Apache2\bin", więc wydajemy komendy:
C:
CD C:\Program files\DiaboliServ_1_6\Apache2\bin
Następnie możemy odinstalować usługę Apache2 wydając komendę:
apache -k uninstall -n Apache2
Będąc w tym samym katalogu możemy ją na powrót zainstalować wydając komendę:
apache -k install -n Apache2
Aby odinstalować usługę MySQL w systemach Windows 2000/XP/2003,
należy zmienić katalog bieżący na katalog, w którym znajdują się pliki
"mysqld.exe" i "mysqladmin.exe" - zwykle jest to katalog
"C:\Program files\DiaboliServ_1_6\MySQL\bin", więc wydajemy komendy:
C:
CD C:\Program files\DiaboliServ_1_6\MySQL\bin
Następnie możemy odinstalować usługę MySQL wydając komendę:
mysqld --remove
Będąc w tym samym katalogu możemy ją na powrót zainstalować wydając komendę:
mysqld --install MySQL --old-passwords
Aby odinstalować usługę MySQL w systemach Windows 98/Me,
należy w rejestrze Windows przejść do klucza
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices"
i usunąć z niego wartość o nazwie "MySQL". W ten sposób system Windows
po restarcie nie uruchomi automatycznie usługi MySQL.
Aby zainstalować usługę MySQL w systemach Windows 98/Me,
należy w rejestrze Windows przejść do klucza
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices"
i utworzyć w nim wartość o nazwie "MySQL".
Do wartości tej należy przypisać ścieżkę dostępu do pliku "mysqld.exe"
z parametrem "--old-passwords", zwykle: "C:\Program files\DiaboliServ_1_6\MySQL\bin\mysqld.exe
--old-passwords"
W ten sposób system Windows po restarcie automatycznie uruchomi usługę MySQL.
--> Więcej o parametrze "--old-passwords"
w punkcie 6.
Jeszcze szybciej dokonamy tych zmian z konfiguratora DiaboliServ.
Trzeba jednak wcześniej dodać do rejestru informację z pliku
"expert.reg". Wtedy w programie zostaną odblokowane odpowiednie opcje.
(INSTALUJ, ODINSTALUJ)
11. Znane problemy.
a. Usługa Apache blokuje zamykanie systemów Windows 98/Me.
--------------------------------------------------------------------------
Rozwiązanie:
=========
Zamiast tradycyjnej procedury zamykającej, należy posłużyć się programem
Diaboli SysClose, pozwalającym na zamknięcie systemu w trybie FORCE.
Alternatywne rozwiązanie:
=================
Podczas zamykania systemu należy wcisnąć klawisze Alt+Ctrl+Del,
w wyświetlonym okienku zakończyć proces Apache.
System zostanie poprawnie zamknięty.
b. W systemach Windows 98/Me, w Menu Start pojawiła się druga opcja
zamykania systemu. Jak wyłączyć domyślną opcję zamykania systemu?
-----------------------------------------------------------------------------------
Rozwiązanie:
=========
Z pliku "DisableSysClose.reg" należy dodać informację do rejestru
Windows, a następnie zrestartować system. Domyślna opcja zamykania
systemu nie będzie już dostępna. Pojawi się jednak inny problem.
W ten sposób zostanie zablokowane okienko Ctrl+Alt+Del i dlatego
nie jest to zalecane rozwiązanie.
c. Błąd uruchomienia serwera Apache (OS 10048):
------------------------------------------------------------------------------------------
(OS 10048)Tylko jedno użycie każdego adresu gniazda (protokół/adres sieciowy)
jest normalnie dozwolone. : make_sock: could not bind to address 0.0.0.
no listening sockets available, shutting down
Unable to open logs
Note the errors or messages above, and press the key to exit. 7....
Taki błąd oznacza że jakiś inny proces używa już standardowych portów serwera Apache.
Rozwiązanie:
=========
W wierszu polecienia:
netstat -p tcp -anob
W wyniku otrzymujemy wykaz procesów które aktualnie działają na portach i używają protokołu TCP.
Szukamy procesów które używają portów: 80, 443 oraz 501, 502, 503. Gdy wszystko jest w porządku, proces Apache powinien być widoczny w takim wykazie w następujący sposób:
C:\Documents and Settings\Diaboli>netstat -p tcp -anob
Aktywne połączenia
Protokół Adres lokalny Obcy adres Stan PID
TCP 0.0.0.0:80 0.0.0.0:0 NASłUCHIWANIE 3144
[Apache.exe]
TCP 0.0.0.0:443 0.0.0.0:0 NASłUCHIWANIE 3144
[Apache.exe]
TCP 0.0.0.0:501 0.0.0.0:0 NASŁUCHIWANIE 3144
[Apache.exe]
TCP 0.0.0.0:502 0.0.0.0:0 NASłUCHIWANIE 3144
[Apache.exe]
TCP 0.0.0.0:503 0.0.0.0:0 NASłUCHIWANIE 3144
W przypadku błędu, 1 lub więcej z powyższych portów jest zajmowany przez inny proces.
Na poniższym przykładzie widać że proces popularnego komunikatora Skype korzysta ze standardowych portów serwera http (80 i 443):
C:\Documents and Settings\Diaboli>netstat -p tcp -anob
Aktywne połączenia
Protokół Adres lokalny Obcy adres Stan PID
TCP 0.0.0.0:80 0.0.0.0:0 NASŁUCHIWANIE 2096
[Skype.exe]
TCP 0.0.0.0:443 0.0.0.0:0 NASŁUCHIWANIE 2096
[Skype.exe]
W takim wypadu nie pozostaje nic innego jak tylko zabić proces używający potrzebne nam porty przynajmniej na czas działania naszego serwera http jakim jest w naszym wypadku Apache.
W większości wypadków takie problemy stwarza właśnie komunikator Skype, który domyślnie używa portów 80 i 443 jako alternatywnych portów dla połączeń przychodzących. Na szczęście w opcjach tego programu można tą funkcję wyłączyć, tak jak jest to pokazane na poniższej ilustracji.

d. Oprogramowanie negatywnie wpływające na pracę pakietu DiaboliServ 1.6:
----------------------------------------------------------
- Internetowe Usługi Informacyjne (IIS)
- Personal Web Server (PWS)
- Zone Alarm 5
- Skype
|