Home > Artykuły, Webmastering > Własny serwer WWW, instalacja Apache i PHP

Własny serwer WWW, instalacja Apache i PHP

SerwerW życiu każdego webmastera, czy też developera, nadchodzi taki moment, w którym postanawia on uruchomić własny serwer WWW w celu pracy na lokalnej maszynie. Nikt nie lubi, po każdorazowym zapisaniu skryptu PHP, wrzucać go na docelowy serwer z obsługą PHP tylko po to, aby zobaczyć efekt działania. Dużo wygodniejszym rozwiązaniem, jest skorzystanie z lokalnie postawionego serwera wraz z obsługą PHP oraz bazą danych MySQL.

Istnieją wprawdzie gotowe paczki, zawierające w sobie wszystkie te komponenty, instalowane automatycznie bez zbędnych zabaw z konfiguracją, niemniej jednak, z reguły pakiety te posiadają nieaktualne już wersji programów składowych, czy też instalują nadmiar rzeczy nam zbędnych. Być może ręczna instalacja serwera, parsera oraz bazy danych jest bardziej skomplikowana, jednakże, mamy kontrolę nad tym co, gdzie i jak instalujemy.

Wpis ten, jest pierwszą częścią instrukcji, krok po kroku, jak postawić lokalny serwer WWW. Opis skierowany jest w kierunku maszyny roboczej, która jest używana do pisania strony WWW, bądź skryptu PHP a niżeli jako docelowy system serwerowy.

Apache

ApacheApache HTTP, jest to serwer WWW, czyli aplikacja sprawiająca, że po wpisaniu adresu IP naszego komputera, możliwe jest przeglądanie stron udostępnionych przez ów serwer.

Pierwszą czynnością, jakiej musimy dokonać, jest oczywiście pobranie samego programu. Przechodzimy zatem na stronę producenta i pobieramy najnowszą wersję na platformę Windows. W tym celu, z lewego menu wybieramy Download > from a mirror. Pobieramy paczkę oznaczoną jako Win32 Binary without crypto.

Instalacja

Po udanym pobraniu pliku, przechodzimy do instalacji, uruchamiany zapisany na dysku plik. Pierwszy ekran powitalny informuje nas o wersji pakietu, przechodzimy do następnego okna. Po zaakceptowaniu licencji dochodzimy do Server Information w którym musimy podać parametry naszego serwera. W zasadzie możemy pozostawić wartości domyślne, nie mają one większego znaczenie, zwłaszcza że docelowo sami będzie edytować plik konfiguracji serwera.

Apache - Server Information

W oknie Setup Type wybieramy Typical. Ścieżka instalacji może pozostać domyślna. Kończmy instalację klikając Install.

Apache - Installing

Po zakończonej instalacji, wpisując w pasku adresu przeglądarki adres localhost, naszym oczom powinien pokazać się napis It works! Jeśli takowego nie widzimy, możliwe że inna aplikacja nasłuchuje już na porcie 80, stąd serwer Apache nie może zostać uruchomiony. Jedną z takich aplikacji, jest komunikator Skype, nie wiadomo dlaczego, zajmuje on port 80, mimo iż jest to port zarezerwowany właśnie dla usług serwera WWW. W tej sytuacji wymagany będzie restart komputera. Stan serwera możemy sprawdzić, klikając na nową ikonę w zasobniku systemowym.

Konfiguracja

Po zakończeniu instalacji, musimy jeszcze dokonać kilku drobnych zmian w konfiguracji serwera. Między innymi przenieść folder z dokumentami html do innej lokacji, najlepiej takiej która nie znajduje się na partycji systemowej. Robimy to w celu odseparowania plików jakie serwer ma udostępniać od samego oprogramowania.

Przechodzimy do folderu w którym zainstalowaliśmy Apache, do podkatalogu conf, domyślnie będzie to C:\Program Files\Apache Software Foundation\Apache2.2\conf. Otwieramy do edycji plik httpd.conf.

Odszukujemy linię zaczynającą się od ServerAdmin i zmieniamy jej wartość na nasz adres e-mail:

ServerAdmin twoj@adres.email

Nieco niżej odnajdujemy parametr #ServerName i zmieniamy go w następujący sposób:

ServerName :80

Znaczek # na początku linii, oznacza komentarz, usuwamy go załączając w ten sposób daną komendę. Najważniejsze dla nas ustawienie to DocumentRoot, wskazujące folder przechowywania plików udostępnianych przez serwer. Wybieramy dogodną dla siebie lokalizację na dysku i zmieniamy wartość parametru.

DocumentRoot "G:\Server\www"

Podobnie musimy postąpić z linią:

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">

…zmieniając ją na:

<Directory "G:\Server\www">

Zapisujemy plik konfiguracji a następnie restartujemy serwer w celu jej uaktywnienia.

Apache - Service Monitor

Po odświeżeniu adresu localhost w przeglądarce, powinniśmy otrzymać zawartość folderu, z uwagi na fakt iż nie unieśliśmy żadnego pliku w zmienionej ścieżce dokumentów serwera. Naprawiamy szybko ten błąd tworząc przykładowy plik html i zapisując go pod nazwą index.html.

<html>
  <head>
  </head>
  <body>
    <h1>Hello world!</h1>
  </body>
</html>
Podsumowanie

Cały proces może wyglądać dość skomplikowanie, jednakże sprowadza się on do instalacji oprogramowania serwera, kilku drobnych zmian w pliku konfiguracyjnym oraz zrestartowania usługi.

Jeśli posiadamy publiczny adres IP, wpisując go w przeglądarce innej maszyny niż nasza, powinniśmy ujrzeć dokładnie tą samą stronę co lokalnie.

PHP

PHPPHP jest parserem języka PHP :), umożliwiając nam uruchamianie jego skryptów. Główne zastosowanie, znajduje on właśnie w dynamicznym generowaniu treści stron internetowych.

Podobnie jak w przypadku serwera WWW, musimy najpierw pobrać odpowiednie oprogramowanie. Przechodzimy zatem na stronę php.net i z prawej kolumny pobierany najnowszą wersję stabilną (stable). W moim wypadku było to PHP 5.3.1. W sekcji Windows Binaries zostaniemy przeniesieni na kolejną stronę, gdzie znajdują się pliki wykonywalne dla platformy Windows. Pobieramy wersję VC6 x86 Thread Safe w postaci archiwum ZIP. Jest to na tyle istotne, gdyż inna, z czterech dostępnych, nie będzie poprawnie współpracować z serwerem Apache.

Instalacja

Instalacja sprowadza się do wypakowania zawartości archiwum. Jako iż wersja ta nie wymaga instalacji, najlepiej będzie jeśli umieścimy ją w stworzonym wcześniej folderze Server w podkatalogu php.

Konfiguracja

Przejdźmy zatem do konfiguracji. W głównym folderze PHP robimy kopię pliku php.ini-development i zmieniamy nazwę na php.ini. Otwieramy nowy plik do edycji. Aby nie zaciemniać obrazu, znajdujemy poniższe parametry i zmieniamy je tak jak poniżej:

doc_root = "G:\Server\www"
extension_dir = "G:\Server\php\ext"
date.timezone = "Europe/Warsaw"

Jeśli któryś z parametrów jest poprzedzony znakiem komentarza ; (średnikiem), należy go usunąć. Odpowiednie ścieżki modyfikujemy w zależności od tego gdzie umieściliśmy nasz folder z dokumentami html, oraz sam parser PHP. Jeżeli będziemy używać w PHP funkcji do wysyłania poczty elektronicznej, dobrze jest też ustawić parametry serwera SMTP:

SMTP = twoj.serwer.smtp
sendmail_from = twoj@adres.email

Oczywiście należy tutaj podać swój serwer SMTP oraz domyślny adres e-mail, jaki ma widnieć w polu „od”, wysłanych za pośrednictwem PHP listów.

Nas sam koniec przechodzimy do sekcji Dynamic Extensions. Poniżej niej, znajdziemy listę wszystkich dostępnych rozszerzeń w PHP. Domyślnie wszystkie nie są ładowane (znak komentarza przed każdą z linijek). Aby w przyszłości uniknąć niepotrzebnego stresu, z marszu możemy załączyć kilka z nich:

  • php_curl.dll
  • php_gettext.dll
  • php_mbstring.dll
  • php_mysql.dll
  • php_mysqli.dll
  • php_sockets.dll
  • php_sqlite3.dll

W razie potrzeby, nic nie stoi na przeszkodzie, aby później włączyć/wyłączyć któreś z rozszerzeń. Usuwamy znak komentarza z w/w dodatków aby uczynić je aktywnymi.

Zasadniczo jeśli chodzi o PHP to już cała konfiguracja. Ostatnie co musimy zrobić to nakazać serwerowi WWW parsowanie plików z rozszerzeniem php, a nie ich wyświetlanie jako zwykły tekst. W tym celu otwieramy ponownie plik httpd.conf w folderze Apache.

W pierwszej kolejności odnajdujemy fragment:

<IfModule dir_module>
  DirectoryIndex index.html
</IfModule>

…i zmieniamy na:

<IfModule dir_module>
  DirectoryIndex index.php index.html
</IfModule>

Zmiana ta, nakazuje serwerowi wyszukiwanie domyślnego pliku folderu nie tylko wśród plików html, ale także i php.

Przechodzimy na sam koniec pliku i doklejamy taki oto fragment:

LoadModule php5_module "G:\Server\php\php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "G:\Server\php"

Jak zwykle pamiętamy o odpowiednich ścieżkach. Ostatecznie, te trzy linijki odpowiedzialne są za przekazanie plików PHP do parsera i zwrócenie wyniku z powrotem do serwera, aby w rezultacie móc obserwować wygenerowaną stronę.

Jazda próbna

Czas na przetestowanie czy parser PHP działa poprawnie. Po zapisaniu zmian w pliku konfiguracji PHP oraz Apache, przeprowadzamy restart serwera. Kolejno tworzymy następujący plik index.php i zapisujemy go w głównym folderze serwera (gdzie wcześniej umieściliśmy plik index.html).

<?php
  phpinfo();
?>

Po odwołaniu się do naszej strony w przeglądarce internetowej, naszym oczom powinien ukazać się wynik działania powyższego skryptu – informacje o parserze PHP.

PHP Info

W razie problemów

Jeśli z jakiegoś powodu, nie uda się ponowny start serwera po dołączeniu do niego obsługi skryptów PHP, możliwe że musimy dodatkowo zmodyfikować ścieżkę przeszukiwania systemu Windows, dodając do niej folder z samym PHP jak i jego rozszerzeniami. W tym celu, przechodzimy do właściwości systemu, zakładka zaawansowane, zmienne środowiskowe. W grupie Zmienne systemowe odnajdujemy tą o nazwie Path i ją edytujemy. Na końcu, po znaku średnika, dopisujemy:

G:\Server\php;G:\Server\php\ext

…pamiętając przy tym, by nie naruszyć znajdujących się tam już danych.

Edytowanie zmiennej systemowej Path

Po zatwierdzeniu, ponawiamy próbę uruchomienia serwera WWW.

Posumowanie

I tym sposobem, postawiliśmy nasz serwer WWW wraz z PHP. Jeśli dopiero zaczynasz przygodę z tym językiem, pewne zmiany w pliku konfiguracyjnym mogą Ci się wydać niezrozumiałe, dlatego ograniczyłem je do niezbędnego minimum. Wraz z wzrostem wtajemniczenia, zaczniesz dokonywać własnych modyfikacji, tak aby pracować możliwe jak najwydajniej.

Na koniec załączam oba pliki konfiguracyjne, jeśli zaprezentowana treść okazała by się niewystarczająca.

Do pełni szczęścia, brakuje nam już tylko serwera bazodanowego MySQL oraz narzędzia, które znacznie ułatwia pracę na bazach danych – phpMyAdmin. Tymi zagadnieniami zajmiemy się w kolejnej części.

  1. 26 sierpnia 2010 at 02:09 | #1

    Mam dokładnie te objawy co opisał kolega Darian18, tzn. serwer apache mi się nie uruchamia i wyskakuje ten komunikat. Dodam, że system to windows 7 64 – może tu coś nie gra?
    Ktoś już to rozwiązał?
    Proszę o pomoc.

  2. 26 sierpnia 2010 at 17:34 | #2

    Zakładam że masz 64-bitową wersję apache… ?

  3. 27 sierpnia 2010 at 13:21 | #3

    Cholera, nie!
    Zainstalowałem apache zgodnie z opisem w tym poradniku, nie pomyślałem że wersja powinna być 64bit :(
    Zainstalowało mi się apache w:
    C:\Program Files (x86)\Apache Software Foundation\Apache2.2
    i sam apache działał dopóki nie zainstalowałem (ściślej rozpakowałem) php do wskazanego przez Ciebie katalogu i nie powpisywałem 3 ostatnich linijek kodu (tych o których pisze Darian 18).
    Jak te 3 linie kodu są – apache service nie chce się uruchomić, jak je skasuję service się uruchamia.
    To może być sprawą wersji apache 32bit vs 64bit?

  4. 27 sierpnia 2010 at 13:45 | #4

    Kurcze, szukałem na stronie apache wersji na 64bit system, ale nie widzę nic takiego, wszędzie jest Win32.
    To jest w ogóle osobna wersja serwera apache na 64bity?

    Za to php znalazłem w wersji chyba na 64bit.
    Może to powinienem zainstalować?
    Bo mam wersję php: php-5.3.3-Win32-VC6-x86.zip
    Może do tego systemu powinienem wybrać inną?
    Jeśli tak to którą? Jest tego ileś wersji i nie wiem która jest pod mój system :/

  5. 27 sierpnia 2010 at 14:01 | #5

    Oj sorry, apache faktycznie ma tylko 32bitową wersję, także PHP też dobrze abyś miał 32bit – głowy nie dam ale raczej aplikacja 32bit nie jest w stanie korzytsać z 64bitowej biblioteki.

    Może tak, którą wersję apache ściągnąłeś i którą PHP (dokładnie numer), bo od czasu tego artykułu wyszło parę nowych (np: alpha apache 2.3.x.).

    Poszukałem nieco w necie nt. tego problemu i znalazłem kilka wątków, niestety żaden bez odpowiedzi :\

    PS. Wykluczam sytuację o której pisałem z włączonym skypem ;) który zajmuje sobie port 80 :| mam nadzieję że to nie w tym tkwi problem w Twoim przypadku.

  6. 27 sierpnia 2010 at 14:24 | #6

    wersja apache: httpd-2.2.16-win32-x86-no_ssl.msi
    wersja PHP: php-5.3.3-Win32-VC6-x86.zip

    Skype nie instalowałem jeszcze, więc problem faktycznie wykluczony ;)

  7. 27 sierpnia 2010 at 14:27 | #7

    @FotoGraf
    znaczy obie wersje aktualnie zalecane przez wydawców …
    obie też w/g mnie są na 32bit windows, ale powinny chodzić bez problemu na moim W764,
    jeśli dobrze rozumiem

  8. 27 sierpnia 2010 at 15:33 | #8

    Tak, jest dokładnie tak jak mówisz, ale prawdę mówiąc nie wiem co jest przyczyną problemu. A jak uruchamiasz serwer? po przez skrót „start”? Spróbuj wejść w usługi systemu Windows i tam uruchomić usługę serwera Apache. Ja osobiście też mam W7 ale 32bit, aczkolwiek wiem że swego czasu na 64 też pracowałem i wszystko ładnie chodziło.

  9. 27 sierpnia 2010 at 16:24 | #9

    Hmmm, oczywiście próbowałem uruchomić usługę zarówno z monitora apache serwera jak i bezpośrednio w windowsie w aplecie usługi i to samo nie może uruchomić usługi :(

    Myślałem, że może coś skopałem, więc ściągnąłem jeszcze raz właściwy php.zip i od nowa powpisywałem zmiany w obu wskazanych przez Ciebie plikach.
    Efekt bez zmian, nie wiem co jest grane.
    Jedyna różnica jaką znalazłem pomiędzy naszymi plikami (poza oczywiście ścieżką właściwą do konkretnych plików) to że w Twoim pliku httpd.conf od linii 60 jest „LoadModule …”
    i tych load module jest do linii 126 a u mnie zaczyna się tak samo ale jest do linii 127.
    Wniosek, że jest załadowany jakiś 1 moduł więcej.
    Nie znam się na tym, czy to może być przyczyną?
    Myślę przekleić te moduły z Twojego przykładu do mojego i zobaczyć rezultat.
    Ale to może być przecież wynik innych wersji apache – u mnie 2.2.16 u Ciebie chyba 2.2.14
    Spróbuję jak to nie pomoże to chyba wymiękam,
    najgorzej że muszę testować strony pisane pod wordpress i nie bardzo mi się widzi w kółko to wgrywać na serwer, żeby sprawdzić każdą drobną zmianę :(

  10. 27 sierpnia 2010 at 17:19 | #10

    Ja u siebie mam właśnie 2.2.14 i 5.3.2 dla php. Ale nie sądzę aby w obecnych wersjach gdzie zmienia się ost. numer wersji dokonali nie wiadomo jakich zmian żeby miały coś takiego wywołać.

  11. nie moge zapisac pliku
    23 lipca 2012 at 20:19 | #11

    spoko poradnik; wielkie dzieki!
    Tylko szkoda ,ze mi sie cos ten pliczek httpd nie chce zapisac D:,
    Ale bez tegp chyba przezyje? :P

  12. 9 września 2012 at 21:53 | #12

    @nie moge zapisac pliku
    musisz pogrzebac w uprawnieniach uzytkownika

  13. 2 marca 2014 at 13:21 | #13

    udało sie komus to uruchomić na win 64bit

  14. 2 marca 2014 at 13:31 | #14

    Wszystko działa do momentu dodania trzech ostatnich zwrotek
    LoadModule php5_module „d:\server\php\php5apache2_4.dll”
    AddType application/x-httpd-php .php
    PHPIniDir „d:\server\php”

    udało sie to komus

  15. 29 maja 2014 at 11:47 | #15

    Moim zdaniem Windows 7 nie jest dopracowany bo jak ktoś ma ten system i chce sobie zainstalować wirtualny serwer za pierwszym razem dobrze i to nie działa bo jest jakiś błąd to przecież bez sensu. Na Windows XP działa wszystko ok nie ma problemu. Powinno to być prościej rozwiązane np. mieli byśmy jeden plik MYSQL.exe i PHP.exe w folderze SERWER. Pliki odczytywane w folderze np. ROOT po wpisaniu localhost pojawiał by się serwer na którym są pliki bez względu jaki mamy system i ilu Bitowy. A tym czasem jak jest same problemy z tym wszystkim raz działa a raz nie. Mam Windows 7 Xampp działał jeden dzień później pojawił się błąd i nic nie da się zrobić z kolei program Usbwebserver działał około miesiąca później przestał bo chyba miał taki kaprys. Jest jedno rozwiązanie gdzie to wszystko będzie działać wystarczy mieć wykupioną prywatną domenę oraz serwer i robimy wszystkie zmiany za pomocą Notepad++ i FileZillaPortable. Aż się dziwie że u nich wszystko działa i nie ma problemu że PHP nie działa i ma jakiś błąd. Wiadomo że są postawione na Linux a nie Windows. Każdy kto nie chce mieć problemów z PHP i MYSQL powinien sprawić sobie komputer z linuxem i zrobić własny prywatny serwer dedykowany w domu bo tak przecież można połączyć kompa do tego z Windows 7 kabelkiem RJ i mamy serwer dedykowany w swoim domu.

    Pozdrawiam

  16. tokarro666
    12 listopada 2014 at 13:36 | #16

    @bandi
    Ja mam ten sam problem. Dopóki nie dodam tych nieszczęsnych trzech linijek, to wszystko działa…

Strony komentarza


dziewięć − 5 =