NetBeans+XDebug 多人远程调试配置
NetBeans 的安装及配置
安装
Windows下安装需要先配置
JDK, 配置JDK的教程网上很多,就不多赘述
新建/导入项目
- 新建/导入项目时,
Run As选择Local Web Site (running on local web server) Project URL保持默认即可
注意⚠️:导入已有项目不要直接用
NetBeans打开项目目录,而是点击新建PHP项目,然后选择项目导入,可以避免自动识别成错误类型的项目
项目运行配置
- 右键点击项目根节点,选择
Properties,弹出窗口选择Run Configuration Run As保持Local Web Site (running on local web server)不变Project URL与Index File保持默认,Arguments可不填- 点击
Advanced, 在弹出窗口里配置远程目录与本地目录映射(很重要,错误配置会导致调试时的断点位置错乱,如果远程项目位于镜像内,则填写镜像内的路径!) Debug URL选择Do Not Open Web Browser
注意⚠️:4、5两点每个项目均需要单独配置
配置图示
配置 debug
- 跳转到
NetBeans设置->PHP->Debugging 窗口 - 设置监听窗口
Debugger Port为9999(可自定义,未被占用即可) Session ID保持默认即可(即idekey)- 其他选项按照需求自选
至此,NetBeans 里的设置就完成了,但是,要做到远程调试服务器里的代码,还需要把服务器的端口转发到本地端口(9999),为此,还需做一些额外的工作。
PHP XDebug 配置
- PHP安装并启用
XDebug拓展,执行php -m | grep xdebug输出xdebug即表示成功启用 - 编辑
xdebug.ini,内容如下xdebug.remote_enable=1
xdebug.mode=debug,profile
xdebug.client_host=ppunknown.cn
xdebug.client_port=12348
xdebug.remote_connect_back=0
xdebug.idekey=ppunknown
# 记录 xdebug与调试器会话 日志
xdebug.log="/tmp/xdebug.log"
xdebug.start_with_request=trigger
xdebug.trigger_value=ppunknown
xdebug.profiler_enable = On
xdebug.trace_format=2
xdebug.output_dir=/www/log/xdebug/将
xdebug的流量转发到ppunknown.cn的12348端口,用于php-xdebug-proxy进行端口分发
php-xdebug-proxy
PHP实现的类似dbgp的调试流量分发代理
在 ppunknown.cn 服务器上部署 php-xdebug-proxy 主要做以下几件事情
-
监听
12348端口来自xdebug的调试信息 -
镜像的
docker-compose如下:version: '3.7'
services:
xdebug-proxy:
container_name: xdebug-proxy.ppunknown.cn
image: php:alpine
tty: true
restart: always
ports:
- "12348:9002"
volumes:
- ./config:/data/config:ro
- ./project:/www/xdebug-proxy/project
working_dir: /www/xdebug-proxy/project
command: [ bin/xdebug-proxy, --configs=/data/config ]先将项目的config目录复制一份到与docker-compose.yml同级目录
-
根据配置的节点,将流量分发到各节点,配置格式如下
return [
'xdebugServer' => [
'listen' => '0.0.0.0:9002', // 这里使用docker部署,将服务器本地的12348->容器的9002端口
],
'ideServer' => [
'defaultIde' => '',
'predefinedIdeList' => [// 不使用动态注册,所以有多少个人一起调试,就预定义几个idekey,将流量分发到服务器本地的端口上
'ppunknown' => 'ppunknown.cn:9550',
'ppunknown1' => 'ppunknown.cn:9551'
'ppunknown2' => 'ppunknown.cn:9552',
'ppunknown3' => 'ppunknown.cn:9553'
],
],
'ideRegistrationServer' => [
'listen' => '0.0.0.0:9001',// 接受来自ide的dgbp插件的注册信息,这里用不到
],
];注意⚠️:服务器本地的 9550~9553 端口需要打开防火墙放行
最后,需要做的工作就是将服务器的 9550~9553 分别映射到个人的本地端口,为此,需要借助 Frp 进行内网端口反向代理
Frp
frp 是一个专注于内网穿透的高性能的反向代理应用,frp包含frps服务端与frpc客户端,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网
Frp 安装
- [Frp](https://github.com/fatedier/frp/releases)
Frps 与 Frpc 的配置
-
服务端安装frp并配置开机自启 传送门
-
frps.ini配置以下内容[common]
bind_port = 7000 #监听服务器端口
dashboard_port = 7500 # 管理面板端口,用 https://{host}:{dashboard_port} 访问管理页面
dashboard_user = xxx # 进入管理页面用户名
dashboard_pwd = xxx # 进入管理页面密码
token = jis8491j-9b83-11ec-9df5-00163e02a4b3 # 密钥,客户端进行反向代理时必须配置该token -
个人电脑也需要安装
Frp, 进入到安装目录,执行./frpc.exe -c xdebug.ini将端口反向代理到服务器的对应端口 -
xdebug的配置如下[common]
server_addr = ppunknown.cn
server_port = 7000
token = jis8491j-9b83-11ec-9df5-00163e02a4b3 #与服务器frps的配置一致
[unique_key]#唯一key,随便写,不可重复
type = tcp
local_ip = 127.0.0.1
local_port = 9999 #本地端口,与 NetBeans 的 Debugger Port 一致
remote_port = 9550 #服务器端口
XDebug 插件
浏览器安装 `XDebug` 插件,设置idekey与 NetBeans的 `Session ID` 一致
总结
至此,多人在家远程调试服务器代码的成就达成✌️
参考 & 引用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ppunknown's Hovel!
评论






