Pycharm远程调试代码
一、优势
可以实现在windows机器上管理代码,实际运行在Linux服务器上,这样实现代码不会出现版本兼容问题
二、原理
三、操作
以python为例,我们媒体调试的时候都需要需要在服务器上执行命令(/usr/bin/python ghost-tools.py basic_check)才会执行
1、服务器的配置
因为上述的命令需要执行在容器中,因此我需要搭建一个容器
1-1 特权模式启动容器
docker run -itd --privileged=true --workdir /data/ --network host --hostname mypython-test -v /data:/data --name mypython mypython:20200205 /usr/sbin/init
# 上面的命令不用解释就懂了吧,这里需要将hostname改成自己的,以防止与正式测试的时候出现冲突,这里我选择将代码同步到镜像的/data路径下2
1
docker run -itd --privileged=true --workdir /data/ --network host --hostname mypython-test -v /data:/data --name mypython mypython:20200205 /usr/sbin/init2
# 上面的命令不用解释就懂了吧,这里需要将hostname改成自己的,以防止与正式测试的时候出现冲突,这里我选择将代码同步到镜像的/data路径下1-2 开启sshd服务
因为远程调试用到了sftp协议,这里需要在镜像内开启sshd服务才能实现从本地window的代码同步到Linux的执行目录,但是因为启动过程中可能默认开启了sshd服务,且该端口与宿主机都是22端口,这样就会出现sshd没有启动成功,因此需要修改配置
# 打开配置文件
[root@mypython-test test_auto_verify]# vi /etc/ssh/sshd_config
# 修改后的配置
Port 3456
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress :::
# 重启
[root@mypython-test test_auto_verify]# systemctl restart sshd
# 查看状态
[root@mypython-test test_auto_verify]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-03-04 12:40:48 CST; 6s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 4633 (sshd)
CGroup: /docker/765dc379686879f4c5b831abb3f878ba10c0e36b1d204fb0aa09a38ab51e1079/system.slice/sshd.service
└─4633 /usr/sbin/sshd -D
‣ 4633 /usr/sbin/sshd -D
Mar 04 12:40:48 mypython-test systemd[1]: Starting OpenSSH server daemon...
Mar 04 12:40:48 mypython-test sshd[4633]: Server listening on :: port 3456.
Mar 04 12:40:48 mypython-test sshd[4633]: Server listening on 0.0.0.0 port 3456.
Mar 04 12:40:48 mypython-test systemd[1]: Started OpenSSH server daemon.28
1
# 打开配置文件2
[root@mypython-test test_auto_verify]# vi /etc/ssh/sshd_config3
4
# 修改后的配置5
Port 34566
AddressFamily any7
ListenAddress 0.0.0.08
ListenAddress :::9
10
# 重启11
[root@mypython-test test_auto_verify]# systemctl restart sshd12
13
# 查看状态14
[root@mypython-test test_auto_verify]# systemctl status sshd15
● sshd.service - OpenSSH server daemon16
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)17
Active: active (running) since Wed 2020-03-04 12:40:48 CST; 6s ago18
Docs: man:sshd(8)19
man:sshd_config(5)20
Main PID: 4633 (sshd)21
CGroup: /docker/765dc379686879f4c5b831abb3f878ba10c0e36b1d204fb0aa09a38ab51e1079/system.slice/sshd.service22
└─4633 /usr/sbin/sshd -D23
‣ 4633 /usr/sbin/sshd -D24
25
Mar 04 12:40:48 mypython-test systemd[1]: Starting OpenSSH server daemon...26
Mar 04 12:40:48 mypython-test sshd[4633]: Server listening on :: port 3456.27
Mar 04 12:40:48 mypython-test sshd[4633]: Server listening on 0.0.0.0 port 3456.28
Mar 04 12:40:48 mypython-test systemd[1]: Started OpenSSH server daemon.1-3 修改密码
主要是让Pycharm能够连接到远程服务,不然不能同步本地代码到服务器
[root@mypython-test test_auto_verify]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.6
1
[root@mypython-test test_auto_verify]# passwd2
Changing password for user root.3
New password:4
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic5
Retype new password:6
passwd: all authentication tokens updated successfully.2、Pycharm配置远程连接
主要解决本地windows怎样与Linux连接的问题
2-1 工具 -> Deployment ->Configuration

2-2 添加新部署,这里选择SFTP,我这里命名为 测试auto_verify

2-3 选择创建好的 【测试auto_verify】按照下面顺序填写配置

3、Pycharm配置工程Interpreter
主要解决选择使用那一台机器、选择这台机器的哪个interpreter、windows同步到Linux的路径问题
3-1 选择菜单的【文件】-> 【设置】,然后按照图中指示进行操作进入到添加Interpreter的页面

3-2 选择ssh的机器,进入到配置interpreter的页面

3-3 配置interpreter

3-4 设定本地到远程服务器的源目录和目的目录

4、Pycharm配置工程启动
主要解决怎样一键触发调试问题
4-1找到编辑配置

4-2 添加触发的配置,选择python

4-3 为触发脚本进行配置

4-4 启动

浙公网安备 33010602011771号