W trosce o środowisko


O środowisko należy dbać. Nie zamierzam tu jednak prowadzić żadnej ekokampanii, a raczej spisać jak zainstalować sobie wygodne środowisko developerskie dla PHP. Notka ma służyć głównie mi samemu w przyszłości, gdy będę potrzebował coś przeinstalować – do tej pory zawsze kończyło się to rozpaczliwym przekopywaniem się przez Google (skąd trafiałem głównie na pytanie + odpowiedź „sprawdź w Google”). Gdy wreszcie udało mi się zgromadzić wszystko w jednym miejscu – postanowiłem zarchiwizować to na blogu. Jeśli zaś komuś jeszcze się przyda – tym lepiej.

Zabierałem się za nowy projekt, gdy okazało się, że zainstalowane serwery i narzędzia niedomagają. Stwierdziłem, że to świetna okazja do reinstalacji, a jak się przy okazji okazało – upgrade’u. Środowisko instaluję na Windows 7, będzie składało się z pakietu serwerów, doinstalowanego debuggera Xdebug 2.2.2, narzędzia PHPUnit w najświeższej wersji (co w tej chwili oznacza 3.8) a także IDE NetBeans obecnie w wersji 7.3. Do pracy.

Serwery.

Odpalamy konsolę, ściągamy potrzebne paczki i ich zależności, konfigurujemy, możemy sobie jeszcze przekompilować – kto nam zabroni. Wróć, jesteśmy przecież na Windowsie.

Ściągamy XAMPPa, odpalamy instalator i po 5 minutach mamy postawionego Apache’a, MySQL, działający interpreter PHP – wszystko to sterowane z jednego miejsca – XAMPP Control Panel. Jeśli byśmy chcieli możemy mieć tam także Tomcata, FTP, serwer pocztowy i obsługę Perla.

Nie jestem z tych, którzy wojują o wyższość Windowsa nad świętami Wielkiej Nocy – czy jakoś tak. Nie postawiłbym XAMPPa na produkcyjnej linii ognia, ale nie zamierzam poświęcać tygodnia (szybciej bym się nie wyrobił) na konfigurację lokalnego serwera developerskiego.

Po instalacji odpalamy XAMPP Control Panel.

XAMPP Control Panel
XAMPP Control Panel
  • otwieramy Config (ten po prawej na górze) -> Edytor: wybieramy pasujący nam edytor, którym będziemy otwierać różnej maści pliki konfiguracyjne.
  • w przeglądarce localhost -> Polski -> Bezpieczeństwo (w lewej kolumnie): tutaj mamy listę „tematów” oraz ich stan – oczywiście wszystko dotyczy zabezpieczeń. Mamy też link, pod którym możemy ustawić hasło do MySQL oraz zabezpieczyć katalog serwera .htaccesem. O ile pierwsze zrobiłem, to drugie zostawiam – nie chcę za każdym razem dostawać prośby o hasło (nawet zapamiętane w przeglądarce), a serwer zaraz odetnę od ruchu z zewnątrz:
  • w Control Panel wybieramy Config w linijce Apache’a, z listy httpd.conf i linijkę
    Listen 80

    zmieniamy na

    Listen 127.0.0.1:80

    . Teraz serwer nie będzie odpowiadał na requesty spoza naszego hosta.

XDebug

Nie będziemy się tu wdawać w dyskusję o potrzebie posiadania debuggera oraz tego jak działa. Po prostu będzie. Prawdę powiedziawszy jest już dołączony do XAMPPa, lecz wyłączony w domyślnej konfiguracji. Jednak ja wybrałem najświeższą paczkę ze strony Xdebug. Gdybyśmy nie byli pewni co czai się w naszym komputerze, zawsze możemy skorzystać z podpowiedzi na podstawie phpinfo(). Uwaga: informacji zawartych w phpinfo() nie należy zbytnio rozgłaszać. Twórcy Xdebug deklarują, że te dane nie są przechowywane, ale gdyby ktoś dokonał podmiany strony – nie musi być miło. Jeśli jednak mamy lokalny serwer (z lokalnymi danymi, a nie np. hasłami użytkowników i to jeszcze plain textem) zabezpieczony przed dostępem z zewnątrz – sądzę, że większego zagrożenia nie ma. Dajcie mi znać jeśli się mylę.

  1. ściągamy dll najświeższej (lub innej wybranej) wersji
  2. Wrzucamy do folderu xampp/php/ext
  3. W XAMPP Control Panel wybieramy Config w linijce Apache’a, z listy php.ini, przewijamy na sam dół
    1. odkomentowujemy wszystkie linijki w sekcji Xdebug
    2. zmieniamy ścieżkę pliku tak, aby wskazywała na pobraną wersję dll
    3. uwaga na domyślnie włączony profiler:
      xdebug.profiler_enable = 1

      Jeśli zamierzamy wykonywać polecenia PEAR, w katalogu logów znajdzie się dużo obszernych wpisów. Na czas, gdy nie zamierzamy profile’ować aplikacji, możemy profiler wyłączyć

    4. włączamy debugger
      xdebug.remote_enable = 1
    5. ustawiamy
      xdebug.remote_port = 9000

      To jest zdaje się wartość domyślna, ale wolę mieć to ustawione wprost

Restartujemy Apache’a.

PHPUnit

Tu się zaczyna drogą przez mękę – a w zasadzie zaczynała się do momentu stworzenia tej instrukcji. Teraz wszystko pójdzie jak z płatka. Chyba.

pear channel-discover pear.phpunit.de
pear clear-cache
pear install phpunit/PHPUnit
pear install phpunit/PHPUnit_SkeletonGenerator

Skompletowanie tej instrukcji zajęło mi godzinę przeklepywania różnych komend PEAR i szukania podpowiedzi. Trafiłem wreszcie na tę właściwą – z nieznanych względów na świeżutkiej instalacji XAMPPa musimy we właściwym miejscu wykonać

pear clear-cache

aby cokolwiek dalej móc zdziałać.

IDE

Elegancko, serwery stoją, ale póki co możemy pisać kod w notatniku lub Notepadzie++. O ile tego drugiego używam często – choćby do pisania tego tekstu – to jednak projekty wolę mieć zgromadzone w IDE. Słówko na temat NetBeansa: ma swoje wady. Przenajrozmaitsze, rozwiązywane z wersji na wersję (w zamian za nowe), ale tak jest z każdym oprogramowaniem. Sedno problemu z NetBeansem jest następujące: jest uniwersalny. Ściągnięcie pełnego pakietu pozwoli nam na tworzenie aplikacji w przeróżnych technologiach około-Javowych, PHP a nawet C++ czy Groovy (przyznaję, jestem tu zielony, w życiu tego nie dotykałem). Czemu to problem? Trudno mi odpowiedzieć wprost, więc spróbuję kontrargumentem – bo PHPStorm jest świetny. Narzędzie stworzone przez JetBrains powstało po to, żeby wspierać – zaskoczenie – PHP. Szybkość działania, dopasowanie do języka, właściwe podpowiedzi czy choćby świetna obsługa refaktoryzacji.

Hola hola, to dlaczego instalujesz NetBeansa, a nie PHPStorma?

zapyta ktoś i dorzuci:

Najlepiej w ogóle się z nim ożeń!

Powodem, dla którego nie wybieram PHPStorma, jest jego cena – ostatnio 89€. Nie jest odstraszająca, jeśli używa się go do pracy, ale w domu, przy małych projektach które dłubię sobie od czasu do czasu, nie widzę dla niego póki co uzasadnienia. Dlatego zostaję przy NetBeansie przynajmniej do czasu najbliższej promocji JetBrains (słyszałem, że przed zeszłorocznym końcem świata mieli wyprzedaż -75%, z kolei niedawno na dzień ziemi było to -50% i jeszcze sadzili jakieś drzewka. To jest dopiero troska o środowisko)
Ściągnąłem więc najnowszego NetBeansa 7.3 w wersji dla PHP. Instalacja to oczywiście banał. Po instalacji dobrze jest jeszcze ustawić nasz ulubiony (lub wymagany, jeśli pracujemy w zespole) sposób formatowania: Tools->Options->Editor->Formatting.

Editor Formatting
Editor Formatting

Również w oknie opcji ustawiamy opcje debuggera i testów jednostkowych. W zakładce Tools->Options->PHP->Debugging prawdopodobnie mamy domyślnie wypełniony port i identyfikator sesji.

PHP Debugging
PHP Debugging

Z kolei na zakładce Tools->Options->PHP->Unit Testing możemy ręcznie wskazać lub pozwolić NetBeansowi wyszukać skrypty PHPUnita i SkeletonGeneratora. Polecam użyć wyszukiwania, jeśli na liście mamy dostępnych kilka opcji – w przypadku Windows wybieramy plik BAT.

PHP Unit Testing
PHP Unit Testing

Ustawienia możemy sobie wyeksportować – dla siebie na przyszłość, lub dla zespołu, z którym współpracujemy.

Szczęśliwe zakończenie

Wygląda na to, że mamy już gotowe środowisko lokalne. Oczywiście bardzo podstawowe. Nie wspomniałem jeszcze o palecie przeglądarek, która nam się przyda oraz o dodatkach do Firefoxa – akurat tej przeglądarki głównie używam. Spisałem kiedyś przydatne wtyczki dla Firebuga, ale chyba pora odświeżyć tę listę – już niedługo. Inną ważną rzeczą jest backup lub – zależnie od potrzeb – system kontroli wersji. Tu jednak sporo zależy od podejścia, skali projektów i zespołów. Różne IDE oferują wsparcie dla wielu takich systemów, możemy też wybrać zewnętrznego klienta.

Pora zabrać się za kodowanie 😉


2 odpowiedzi na “W trosce o środowisko”

  1. „Listen 127.0.0.1:80” 😉

    SKOS Cię takich dobrych nawyków nauczył! 😛