最近有个小伙伴遇到一件很头疼的事。
公司的项目都在远程的服务器上,项目工程巨大,看源代码把自己都绕晕了,特别是Python这种动态语言。同时在本地写好了代码,同步代码也挺麻烦的,费了九牛二虎之力,终于把代码折腾到服务器上了,运行了下项目,扎心了,错漏百出,有些问题甚至还不知道问题出现在哪里,该怎么改。
对于这个问题,老司机当然是轻车熟路,我跟她说:远程调试,了解一下。
她就去搜了一堆网文,跟着实践,到最后还是没有解决。我看了她给我发的网文,确实写的有点乱。
我看着我胸前的红领巾,我觉得我应该担负起这个坚巨的任务,写下这个图文教程。
一般来说,我们熟悉的调试工具都是windows本地进行调试,但是我们的项目运行很可能需要依赖远程服务器的特殊环境才能运行。这个时候,远程调试功能就是雪中送碳。
正常Python的远程调试,会有两种比较主流的方式(就我知道的和使用的)
这篇文章先来了解下Pycharm自带的远程调试工具。
-
新建一个工程
-
连接远程服务器
-
下载远程代码
-
下载远程解释器
-
添加程序入口
-
调试前准备
-
开始调试代码
-
其他友情提示
. 新建一个工程
我这边的工程名是
NOVA
,请自行定义。
. 连接远程服务器
Tools -> Deployment -> configuration
添加一个
Server
。
Name
:请自行定义,我这里填我服务器的IP地址。
Type
:请务必改成
SFTP
点击
OK
后,进入如下界面,按我的备注,填写信息。
填写完成后,切换到
Mappings
选项卡,在箭头位置,填写
\
以上服务器信息配置,全部正确填写完成后,点击
OK
接下来,我们要连接远程服务器了。Tools -> Deployment -> Browse Remote Host
. 下载远程代码
如果之前填写的服务器登陆信息准确无误的话,现在就可以看到远程的项目代码。
选择下载远程代码要本地。
下载完成提示。
现在的IDE界面应该是这样子的。
. 下载远程解释器
进入 File -> Settings按图示,添加远程解释器。
填写远程服务器信息,跟之前的一样,不再赘述。
点击
OK
后,会自动下载远程解释器。如果你的项目比较大,这个时间可能会比较久,请耐心等待。
. 添加程序入口
因为我们要在本地DEBUG,所以你一定要知道你的项目的入口程序。如果这个入口程序已经包含在你的项目代码中,那么请略过这一步。
如果没有,就请自己生成入口程序。
比如,我自己的项目,在服务器上是以一个服务运行的。而我们都知道服务的入口是
Service文件
。
cat /usr/lib/systemd/system/openstack-nova-compute.service
[Unit]Description=OpenStack Nova Compute ServerAfter=syslog.target network.target libvirtd.service[Service]Environment=LIBGUESTFS_ATTACH_METHOD=applianceType=notifyNotifyAccess=allTimeoutStartSec=0Restart=alwaysUser=novaExecStart=/usr/bin/nova-compute[Install]WantedBy=multi-user.target
看到那个
ExecStart
没有?那个就是我们程序的入口。我们只要将其拷贝至我们的Pycharm中,并向远程同步该文件。
. 调试前准备
开启代码自动同步,这样,我们对代码的修改Pycharm都能识别,并且为我们提交到远程服务器。