phpStrom 에서 DBGP Proxy를 이용하여 Xdebug 사용하기

본 문서는 1대의 개발서버를 이용하여 다수의 개발자가 xDebug를 사용가능하게 하기 위한 DBGP Proxy 세팅 문서입니다.
개발 서버와 개발자의 컴퓨터가 동일한 서브넷 안에 있을 경우 DBGP Proxy를 이용하지 않고도 사용할 수 있는 방법이 있습니다.
본문서는 외부의 개발서버가 위치하고 개발자들의 PC는 동일한 서브넷(공유기)에 위치 하는 조건에서 시작합니다.

  1. 개발서버에 xdebug 모듈을 설치 하고(PHP버전과 맞아야함) 아래와 같이 xdebug 설정을 진행합니다.
    zend_extension=/usr/lib64/php/5.5/modules/xdebug.so #이부분은 본인의 환경에 맞도록 놔두면됨
    
    ; see http://xdebug.org/docs/all_settings
    xdebug.remote_enable=1
    xdebug.remote_host=127.0.0.1
    xdebug.remote_port=9000
    xdebug.idekey="PHPSTORM"

    위설정은 xdebug의 remote 세팅을 추가 해준 겁니다. 보통 개발서버와 개발자가 1:1 이라고 하면 위 설정에서 remote_host, remote_port, idekey 값만 자신의 환경에 마춰 세팅하고 사용하면 됩니다.
    하지만 여기서는 DBGPProxy 를 통하여 사용할 꺼기 때문에 DBGP Proxy의 위치를 지정합니다. (개발서버에 proxy를 같이 설치 할 예정)
    설정후 아파치 restart는 필수!

  2. http://code.activestate.com/komodo/remotedebugging/ 에서 Python 용 Remote Debugging Client 를 다운 받아 서버에 설치
    화면캡쳐

    $ cd /usr/
    $ wget http://downloads.activestate.com/Komodo/releases/9.2.1/remotedebugging/Komodo-PythonRemoteDebugging-9.2.1-87651-linux-x86_64.tar.gz
    $ tar -xvzf Komodo-PythonRemoteDebugging-9.2.1-87651-linux-x86_64.tar.gz
    $ cd Komodo-PythonRemoteDebugging-9.2.1-87651-linux-x86_64 
    $ mv Komodo-PythonRemoteDebugging-9.2.1-87651-linux-x86_64 DBGpProxy
    $ ln -s /opt/DBGpProxy/pydbgpproxy /usr/bin/

    ** 주의!
    DBGpProxy는 Python 기반으로 작동합니다. DBGpProxy를 사용하기 위해서는 기본적으로 Python 2.x 버전이 개발서버에 설치 되어야 합니다. 3.x 버전으로도 사용 가능할 것같지만 테스트를 진행하지는 않았습니다.

  3. DBGp Python 패키지 설치
    $ pip install dbgp

    ** pip는 Python 관련 패키지들을 설치 할때 가장 많이 사용하는 툴입니다. pip 설치는 AWS의 경우 간단하게 $ yum install python27-pip 명령으로 설치 가능합니다.
    만약 별도로 설치해야 한다면 http://codingdojang.com/scode/371 여기를 참고하세요.

  4. 설치가 완료되면 pydbgpproxy 명령으로 Proxy 서버 실행
    $ pydbgpproxy -i 0.0.0.0:9001 -d 127.0.0.1:9000

    정상실행 되면 아래와 같은 메시지가 나옴
    INFO: dbgp.proxy: starting proxy listeners.  appid: 3472
    INFO: dbgp.proxy:     dbgp listener on 127.0.0.1:9000
    INFO: dbgp.proxy:     IDE listener on  0.0.0.0:9001

  5. phpStorm에서의 세팅
    5.1 Tools > DBGp Proxy > Configuration 선택
    화면캡쳐IDE Key는 개발자별로 다른 값을 입력 자신의 아이디와 같다고 생각 하면됨.
    Host는 개발 서버의 아이피 또는 도메인등을 입력
    Prot 는 Proxy 서버 실행시 -i 값으로 설정한 9001를 입력

    5.2 File > Settings 선택 Language & Frameworks > PHP > Debug 설정으로 이동
    Xdebug 설정에서 Debug port 값을 9002로 변경 (포트번호는 개발자마다 달라야 한다. 해당 포트를 통하여 Proxy 서버가 리턴을 해주기 때문에 동일한 공유기안에 개발자들은 포트번호를 통하여 서로를 구분 짓도록 한다. 그렇기 때문에 공유기에서의 포트포워딩은 필수)
    화면캡쳐5.3 Tools > DBGp Proxy > Register IDE 선택
    화면캡쳐우측 상단에 위와 같은 메시지가 나오면 성공적으로 연결된 것임
    서버쪽에서는 INFO: dbgp.proxy: Server:onConnect (‘121.66.165.163’, 60418) [proxyinit -p 9002 -k Munilive -m 1] 이런 메시지가 추가되면됨화면캡쳐5.4 상단 툴바에서 전화기 모양의 아이콘을 클릭
    이런 아이콘을 눌러서화면캡쳐화면캡쳐이렇게 되면 됨

  6. 브라우저의 Xdebug Helper를 이용하거나 URL 호출시 아래와 같은 파라메터 값을 넘기면 실행됨
    – http://테스트URL/파일경로.php?DEBUG_SESSION_START=Munilive (Munilive 는 본인이 설정한 IDE Key 값을 입력)
    – Xdebug Helper는 https://confluence.jetbrains.com/display/PhpStorm/Browser+Debugging+Extensions 사이트 참고
    – 정상적으로 실행되면 아래와 같은 화면이 나옴
    화면캡쳐

참고사항
DBGpProxy 를 사용하기 위해서는 개발서버에서 9001번 포트 개방이 필요하다.
개발자 PC가 공유기안에 존재 할 경우에는 phpStrom 설정에서 지정한 DBGp Proxy 서버 포트를 포트포워딩 해줘야 한다.
여러명의 사용자가 동시에 사용하기 위해서는 phpStrom에서 DBGp Proxy 포트를 모두 다르게 지정해줘야 한다.

참고 사이트
http://matthardy.net/blog/configuring-phpstorm-xdebug-dbgp-proxy-settings-remote-debugging-multiple-users/
https://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm
http://lab.sonicmoov.com/development/server/phpstorm-xdebug/

CC BY-NC-SA 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.