рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рджреВрд░рд╕реНрде рдорд╢реАрди рдкрд░ рдПрдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗрд╡рд▓ рдЦреБрд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде рд╡реАрдкреАрдПрди рдХреЗ рддрд╣рдд рд╣реЛрддреА рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕реЗрдЯрдЕрдк рдкрд░ рдореВрд▓реНрдпрд╡рд╛рди рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдкреАрдПрди рдХреЗ рддрд╣рдд рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреВрд░рд╕реНрде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА "рдЪрд░реНрдЪрд╛" рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдорд┐рд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдЕрдЧрд░ рдпрд╣ рдЖрджрдореА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рд╕реНрдкреЙрдЗрд▓рд░рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░рдорд╢рдГ рдЙрдмрдВрдЯреВ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдЧреЗ рд╕рднреА рд╕рд░реНрд╡рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЙрдмрдВрдЯреВ рдХреЗ рддрд╣рдд рд╣реЛрдВрдЧреАред рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ - рдореИрдХ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдореЗрдВ xdebug рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ SSH рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ IDE рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИрдВред
рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ
рддреЛ, рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдкреАрдЫреЗ рдПрдХ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рд╣реИред Docker рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░, xdebug рдХреЗ рд╕рд╛рде рдПрдХ microservice рдЪрд╛рд▓реВ рд╣реБрдЖред рдХреЗрд╡рд▓ SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рд╡реАрдкреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░ рд╕реЗ рдкрд╣реБрдВрдЪ рд╣реИред
рд▓рдХреНрд╖реНрдп
рдЙрджреНрджреЗрд╢реНрдп: рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ xdebug рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ microservice рдХреЗ рджреВрд░рд╕реНрде рдбрд┐рдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЖрдЗрдП рдЬрд╛рдиреЗ ...
1. рдПрдХ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ sshd рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдкрд╣рд▓реА рдЪреАрдЬ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ sshd рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЖрдИрдкреА рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ, рди рдХрд┐ рдХреЗрд╡рд▓ 127.0.0.1ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдХреНрд╖рдо рд╣реИред
рдпрд╣реАрдВ рдкрд░ рдЬрдбрд╝ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╣реИ :-)
sudo echo "GatewayPorts yes" >> /etc/ssh/sshd_config sudo service ssh restart
2. docker рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдХрд╛ рдкрддрд╛ рдЬреНрдЮрд╛рдд рдХрд░реЗрдВ
рдЪреВрдВрдХрд┐
xdebug docker рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ IP рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ VPN рдХрдиреЗрдХреНрд╢рди рд╣реИ), docker рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдХрд╛ IP рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣ рдХрдорд╛рдВрдб (рд╕рд░реНрд╡рд░ рдкрд░ рд░рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+'
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЯреАрдо рдиреЗ "172.17.0.1" рдЬрд╛рд░реА рдХрд┐рдпрд╛
3. рд╣рдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ xdebug рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рдХрд╛ IP рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ
рд╕реЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рд▓реЗрдХрд┐рди рдЖрдк рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:
sed -i 's/xdebug.remote_host=.*/xdebug.remote_host=172.17.0.1/' /usr/local/etc/php/conf.d/xdebug.ini
рдХреИрд╢ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдкреНрд░рд╕реНрдерд╛рди рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдо рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП "рд╕рд╣реА" рдкреЛрд░реНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрди рдХреЛ рдирдЧрдиреЗрдХреНрд╕ рдФрд░ php-fpm рдХреЗ рдПрдХ рд╕рдореВрд╣ рдкрд░ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░
рдЖрдорддреМрд░ рдкрд░ рдкреЛрд░реНрдЯ 9000 php-fpm рдХреЗ рддрд╣рдд рд╡реНрдпрд╕реНрдд рд╣реИ , рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ 9001 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
sed -i 's/xdebug.remote_port=.*/xdebug.remote_port=9001/' /usr/local/etc/php/conf.d/xdebug.ini
рдпрд╣рд╛рдБ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рджреВрд░рд╕реНрде рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ: "xdebug.remote_enable = 1"
grep xdebug.remote_enable /usr/local/etc/php/conf.d/xdebug.ini
рдЖрдорддреМрд░ рдкрд░, рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рд╡рд╛рдпрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рд╣рдореЗрдВ рд╕реБрд░рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред4. SSH рд╕реБрд░рдВрдЧ рдХреЛ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВ
рд╕реБрд░рдВрдЧ рдХреЛ рдХрдорд╛рдВрдб (рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рдиреЗ) рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
SSH -R 9001:0.0.0.0:9001 user@remote_server
рдЗрд╕ рдЬрдЧрд╣ рдореЗрдВ рдЬрд╛рджреБрдИ рд╕рдВрдЧреАрдд рд▓рдЧрддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдгред
рдЖрдИрдбреАрдИ рд╕реЗрдЯрдЕрдк
рдЖрдорддреМрд░ рдкрд░ рдореИрдВ vscode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкреЛрд░реНрдЯ рд╕реБрдирдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдмрдЧрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ vscode рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ (рд╕рд┐рд░реНрдл рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдб рдЬреЛрдбрд╝реЗрдВред json):
{ "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9001, "cwd": "${workspaceFolder}", "pathMappings": { "/repo": "${workspaceRoot}" } },
"PathMappings" рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рдорд╢реАрдиреЛрдВ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рд╣реИ, рдЬрд╣рд╛рдВ "/ рд░реЗрдкреЛ" docker рдореЗрдВ рдбреАрдмрдЧ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред рдбреАрдмрдЧрд░ рдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкреБрдирд╢реНрдЪ рдЦреИрд░, рд╢рдХреНрддрд┐рд╢рд╛рд▓реА?
рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдиреЗрдЯрдХреИрдЯ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдиреЗрдВ:
nc -l 9001
рдбреЙрдХрдЯрд░ рдореЗрдВ рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ рдФрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ:
php -r 'print("Hi!" . PHP_EOL);'
рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░, рд╣рдореЗрдВ рдХреЙрд▓ рд╕рдВрдХреЗрдд xdebug рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
<?xml version="1.0" encoding="iso-8859-1"?> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug"...
рд╣реБрд░реНрд░реЗ! рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред
рдЕрдм рдЖрдк IDE рдореЗрдВ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдЕрдкрдирд╛ рдкрд╕рдВрджреАрджрд╛ рдХреЛрдб рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╢реВрдиреНрдп рд╣реИ: рд╕рд░реНрд╡рд░ рдкрд░ sshd рдХрд╛ рдкреБрди: рд╕рдВрдпреЛрдЬрдиред рд╢рд╛рдпрдж рдПрдХ рдФрд░ "рд╢рд╛рдВрдд" рддрд░реАрдХрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!