[IT][Programowanie] xdebug + LEMP stack (nginx) + phpstorm, szybka konfiguracja
Cześć wam,Spędziłem dziś kilka godzin walcząc z poprawną konfiguracją remote xdebuga z serwerem, który stoi na LEMP stacku. Zasadniczo pewnie można znaleźć kilka poradników jak to postawić, jednak zdecydowałem się umieścić moją ekstremalnie szybką konfigurację w formie postu na blogu - dla przyszłych pokoleń.
== Słowem wstępu ==
Na komputerze developersim musimy mieć zainstalowane środowisko wykonywalne PHP. Najszybsza instalacja:- Windows: easyPHP
- Linux (*debian): sudo apt-get install php5
== Instalacja i konfiguracja xdebuga na *debianowych serwerach(eg. ubuntu) ==
- Logujemy sie na konto root'a:
sudo su - Updatujemy info o repo, instlaujemy php-pear'a z php-devem:
apt-get update && apt-get install php5-dev php-pear - Wywołujemy komendę, wynik komendy kopiujemy:
find / -name 'xdebug.so' 2> /dev/null - Uruchamiamy edytor tekstowy, edytujemy konfigurację PHP'a:
vim /etc/php5/fpm/php.ini - Na końcu pliku dopisujemy
[XDEBUG]
zend_extension="WYNIK_KOMENDY_PKT_3"
xdebug.default_enable = 1
xdebug.idekey = "www-data"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_port =9000
xdebug.remote_handler=dbgp
xdebug.remote_connect_back=true - Restartujemy nginx'a i serwer php5-fpm:
service nginx restart && service php5-fpm restart
== Konfiguracja PHPSTORM'a ==
Ta część konfiguracji najmniej daje się opisać słowami. Niestety, często działanie xdebuga zależne jest od architektury frameworku/rozwiązania w którym pracujemy. Osobiście konfigurowałem xdebuga na rzecz Yii/Symfony2/Laravela i konfiguracja zawsze odbywała się podobnie, jak nie tak samo.
Idea połaczenia z xdebugiem jest prosta. Przy łączeniu się z serwerem developerskim, na którym chcemy debugować ustawiamy cookie informujące server iż chcemy nawiązać połączenie z xdebugiem. Proces ten jest semi-automatyczny.
- Generujemy zakladki (ustawiające w/w cookie), zapisujemy je w przeglądarce. Służą one do włączania/wyłączania debugowania przy użyciu xdebuga. Pryed generacją zmieniamy klucz IDE na "www-data". Zakładki generujemy pod linkiem:
https://www.jetbrains.com/phpstorm/marklets/
- Wchodzimy/klikamy na zapisaną zakładkę "xdebug start"
== Przechodzimy do phpstorma ==
- settings->PHP: Upewniamy się, że mamy wybrany interpreter PHP. Jeżeli nie - ustawiamy. Możliwe, że będziemy musieli maualnie podać ścieżkę do pliku wykonywalnego PHPa. Zależy to od konfiguracji zmiennych środowiskowych waszego komputera.
- settings->Project->Directories: Mapujemy odpowiednio katalogi naszego projektu
- settings->Build, Execution, Deployment->Deployment: wchodzimy do ustawień naszego serwera, w zakładce "Mappings" ustawiamy mapowanie folderów naszej stacji roboczej do folderów na serwerze, eg:
- Local path: C:\Users\rand\PhpstormProjects\MojProjekt\src
- Deployment path: /var/www/html/tzubertowski/MojProjekt/src
- settings->Languages & Frameworks->PHP->Servers: dodajemy/ustawiamy informacje o naszym serwerze. Host to IP serwera, port to port na którym puszczamy HTTP (zazwyczaj 80), debugger to rzecz jasna xdebug. Zaznaczamy "Use path mappings" i - podobnie jak w poprzednim punkcie - mapujemy foldery naszego projektu na foldery znajdujące się na serwerze.
- Wychodzimy z ustawień, wracamy do projektu, wybieramy akcję/cześć kodu, który chcemy debugować. Stawiamy breakpoint (klikając myszką obok linii kodu na której ma się zatrzymać wykonywanie).
- Włączamy nasłuchiwanie na połączenia xdebuga:
- Przechodzimy w przeglądarce pod adres, który wykonuje kod jaki debugujemy. PHPSTORM powinien powiadomić o nadchodzącym połączeniu. Nie pozostaje nam nic innego jak akceptacja woli naszego Pana i cieszenie się środowiskiem z możliwością debugowania ;)
Subskrybuj:
Komentarze do posta
(
Atom
)
Brak komentarzy :
Prześlij komentarz