NorthPole.pl - domowy serwer WWW

Domowy serwer WWW, czyli jak zainstalować Apache i PHP

Opisana procedura dotyczy instalacji serwera Apache i PHP w systemie Windows. Wynikiem prac będzie działający domowy serwer umożliwiający swobodne testowanie naszych skryptów PHP.  Do takiego celu wystarczy praktycznie bezobsługowa instalacja i drobne prace porządkowe.

Instalacja Apachea

Zaczynamy od pobrania najnowszego instalatora ze strony The Apache HTTP Server Project. Podczas pisania tego tutoriala jest to wersja 2.2.4. Wybieramy, więc Win32 Binary (MSI Installer): apache_2.2.4-win32-x86-no_ssl.msi I zapisujemy na dysku.

Po odpaleniu instalatora Ekran powitalny instalacji Apache akceptujemy umowę licencyjnąUmowa licencyjna Apache Read Me Apache

Kolejne okienko wypełniamy np. tak:

Dalej w sekcji Install Apache HTTP Server 2.2 programs and shortcuts for: wybieramy for All Users on Port 80, as a Service. Spowoduje to uruchamianie serwera automatycznie przy starcie Windowsów albo, jeśli wolimy ręczne uruchamianie usługi wybieramy drugą opcję. Informacje o serwerze

Następnie wybieramy typ instalacji: Typical Typ instalacji Apache i folder, do którego będziemy instalować pliki serwera. Proponuję stworzyć na wybranej partycji katalog serwer i tam zainstalować Apache'a np. F:\serwer\Apache2.2\ Folder instalacji Apache

I to koniec. Koniec instalacji Apache

Teraz w zasobniku systemowym powinniśmy mieć ikonkę Apache Monitora, który pozwala na uruchamianie i zatrzymywanie usługi Apache2. Apache Monitor

Możemy z tego miejsca zmienić również sposób uruchamiania serwera wybierając przycisk Services z automatycznego na ręczny. Konsola usług

Po wpisaniu w pasku adresu naszej ulubionej przeglądarki http://localhost jeśli wszystko poszło bezbłędnie powinniśmy zobaczyć informację: Okno przeglądarki

W razie problemów proszę przejść na koniec tutoriala

Konfiguracja Apachea

Od tej pory mamy działający serwer WWW. Powinniśmy jednak sprawdzić i ewentualnie skorygować parametry jego pracy Wszystko sprowadza się do edycji pliku httpd.conf który znajduje się w katalogu conf (F:\serwer\Apache2.2\conf\)

Proponuję zrobić tutaj kilka rzeczy. Po pierwsze zmienić adres katalogu domowego. Domyślnie Apache uruchamia pliki z katalogu htdocs/. Ale my stworzymy sobie ten katalog gdzie indziej. Proponuję wewnątrz uprzednio stworzonego katalogu serwer/. U mnie ścieżka wygląda tak F:\serwer\htdocs\. Musimy teraz poinformować Apache'a o tej decyzji. W pliku httpd.conf szukamy linii:

  1. # DocumentRoot: The directory out of which you will serve your
  2. # documents. By default, all requests are taken from this directory, but
  3. # symbolic links and aliases may be used to point to other locations.
  4. DocumentRoot "F:/serwer/Apache2.2/htdocs"

i zmieniamy na:

  1. # DocumentRoot "F:/serwer/Apache2.2/htdocs"
  2. DocumentRoot "F:/serwer/htdocs"

oraz w lini:

  1. # This should be changed to whatever you set DocumentRoot to.
  2. #<Directory "F:/serwer/Apache2.2/htdocs">

zmieniamy na:

  1. #<Directory "F:/serwer/Apache2.2/htdocs">
  2. <Directory "F:/serwer/htdocs">

Jak widać oryginalne wpisy zostały tylko zahaszowane tak, aby w każdej chwili można było cofnąć wprowadzone zmiany.

Kolejne modyfikacje pliku konfiguracyjnego httpd.conf będą miały na celu zablokowanie dostępu z zewnątrz. W tym celu zmieniamy wpis:

  1. # Listen: Allows you to bind Apache to specific IP addresses and/or
  2. # ports, instead of the default. See also the #<VirtualHost>
  3. # directive.
  4. # Change this to Listen on specific IP addresses as shown below to
  5. # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
  6. #Listen 12.34.56.78:80
  7. Listen 80

na:

  1. #Listen 80
  2. Listen 127.0.0.1:80

Dalej umożliwimy nadpisywanie w plikach .htaccess zmiennych serwera. Wpis:

  1. # AllowOverride controls what directives may be placed in .htaccess files.
  2. # It can be "All", "None", or any combination of the keywords:
  3. # Options FileInfo AuthConfig Limit
  4. AllowOverride None

zmieniamy na:

  1. #AllowOverride None
  2. AllowOverride All

Dodamy również domyślnie wyświetlane pliki w przypadku gdy zostanie podana tylko ścieżka do katalogu dopisując index.php do DirectoryIndex:

  1. # DirectoryIndex: sets the file that Apache will serve if a directory
  2. # is requested.
  3. <IfModule dir_module>
  4. DirectoryIndex index.html index.htm index.php
  5. </IfModule>

Kolejna poprawka to uruchamianie modułu mod_rewrite odpowiedzialnego za przepisywanie adresów, pozwoli to w przyszłości cieszyć się przyjaznymi adresami URL

Wystarczy odszukać linii LoadModule rewrite_module modules/mod_rewrite.so i odhaszować ją.

Po wszystkich modyfikacjach powinniśmy jeszcze zrestartować Apache'a przy pomocy Apache Monitor'a.

Instalacja PHP

Tutaj również pobieramy najświeższy instalator ze strony http://www.php.net/downloads.php, dla mnie jest to PHP 5.2.3 installer.

Po pobraniu instalera odpalamy go Ekran powitalny instalacji PHP Akceptujemy umowę licencyjną Umowa licencyjna PHP i wybieramy ścieżkę instalacji. Proponuję zainstalować PHP również w katalogu serwer/ (u mnie F:\serwer\php\) Ścieżka instalacji PHP

Dalej wybieramy serwer WWW dla nas będzie to Apache 2.2.x Module Wybór serwera WWW dla PHP i miejsce naszego pliku konfiguracyjnego Apache'a httpd.conf, będzie to: serwer\Apache2.2\conf\ Ścieżka do httpd.conf

Następnie możemy wybrać składniki instalacji – proponuję dodać Extensions oraz z Extras bibliotekę PEAR Wybieranie składników instalacji PHP

Dalej akceptujemy Akceptacja instalacji PHP

Teraz mamy już zainstalowane PHP.

Konfiguracja PHP

Rozpocznijmy od skontrolowania pliku konfiguracyjnego Apache'a (httpd.conf) w którym po instalacji PHP na końcu powinien znaleźć się wpis:

  1. #PHP5
  2. AddType application/x-httpd-php .php
  3. PHPIniDir "F:\\serwer\\php\\"
  4. LoadModule php5_module "F:\\serwer\\php\\php5apache2_2.dll"

Jeśli podobny wpis pojawił się w Waszym httpd.conf przechodzimy do modyfikacji pliku konfiguracyjnego PHP a jest nim php.ini. Znajdziemy go w katalogu instalacyjnym PHP (serwer/php/). Zmieńmy tutaj ścieżkę do naszych skryptów i stron tak jak to zrobiliśmy przy konfiguracji Apachea (serwer/ htdocs/) dopisując do:

  1. doc_root =

nową ścieżkę

  1. doc_root = F:/serwer/ htdocs

Powinniśmy jeszcze ustawić ścieżkę do rozszerzeń wpisując do linii

  1. extension_dir = "./"

namiary na katalog ext/ który znajduje się w katalogu instalacyjnym PHP (serwer/php/ext/), u mnie po zmianie wygląda ona tak:

  1. extension_dir = " F:/serwer/php/ext"

Teraz możemy już dodawać różne rozszerzenia z sekcji Dynamic Extensions poprzez usunięcie średnika (;) poprzedzającego interesującą nas linię.

Proponuję, więc dodać obsługę bazy danych sqlite poprzez odblokowanie dwóch linijek:

  1. extension=php_pdo.dll
  2. extension=php_sqlite.dll

Może przydać się biblioteka gd2.dll do manipulacji obrazkami poprzez PHP

  1. extension=php_gd2.dll

Ponieważ nasz serwer ma służyć do testowania skryptów powinniśmy włączyć raportowanie błędów zmieniając:

  1. display_errors = Off

na

  1. display_errors = On

oraz ustawić restrykcyjny poziom raportowania poprzez wpisanie wartości 4095 do linii error_reporting :, co powinno wyglądać tak:

  1. error_reporting = 4095

Na koniec warto sprawdzić ustawienia safe mod i register globals:

  1. safe_mode = Off
  2. register_globals = Off

W PHP 5 są one domyślnie wyłączone i tak powinny pozostać.

Możemy jeszcze ustawić domyślne kodowanie znaków zmieniając i odhaszowując

  1. ;default_charset = "iso-8859-1"

na takie, w którym zazwyczaj zapisujemy pliki ze skryptami (iso-8859-2 lub utf-8).

Pozostaje nam teraz ponowne uruchomienie Apache'a i przetestowanie PHP. W tym celu do katalogu serwer/htdocs/ wrzucamy plik np. test.php który zawiera taki wpis:

  1. <?PHP
  2. phpinfo();
  3. ?>

i odpalenie go w przeglądarce wpisując http://localhost/test.php

Jeśli wszystko działa to wyświetli nam się strona informacyjna PHP info

Problemy

Jeśli edytowaliśmy pliki konfiguracyjne to najlepiej przywrócić oryginalne edytować je stopniowo – po każdej modyfikacji restartować Apache'a i kontrolować zachowanie serwera.

Częsty problem wywołują również aplikacje wykorzystujące port 80, powodujące wyświetlenie takiego komunikatu podczas instalacji:

(OS 10048)Tylko jedno użycie każdego adresu gniazda (protokół│/adres sieciowy/port) jest normalnie dozwolone. : make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down

Unable to open logs

Do takich programów należy Skype. Aby pozbyć się tego problemu w menu Skype Narzędzia → Opcje w zakładce Zaawansowane → Połączenie - odznaczamy opcjię: Użyj portów 80 oraz 443 jako alternatywnych dla przychodzących połączeń.

Jeśli problem nadal występuje szukamy innych programów siedzących na porcie 80. Z wiersza polecenia wywołujemy: netstat -p tcp -ano szukamy linii z portem 80 (127.0.0.1:80) i stanem NASŁUCHIWANIE i sprawdzamy PID procesu.

Aby go namierzyć otwieramy menadżera zadań i sprawdzamy, co jest sprawcą zamieszania (jeśli nie ma w nim kolumny PID to trzeba to ustawić w widok → Wybierz kolumny). Dalej to już kwestia zmiany konfiguracji takiego programu bądź wyłączenie go.

Koniec

Życzę miłej zabawy z PHP!!!