動機
- 一些bug由於本地環境和線上環境的不一致可能導致本地無法復現
- 本地依賴和線上依賴版本不一致也可以導致一些問題
- 有時一些bug跟資料相關,本地資料無法和線上資料一致
- 有些三方平臺會驗證伺服器的合法性或者非同步回撥結果,如微信支付,這時候本地無法測試
如上所訴,要是有一個很方便除錯遠端伺服器的方法,豈不美哉。通過PyCharm我們可以很方便地實現遠端除錯,下面詳細介紹下PyCharm這個牛叉的功能。
新增遠端部署
- 開啟pycharm,tools-->Deployment-->Configuration
- 點選左邊“+”新增遠端伺服器,隨便起個名字,選擇SFTP
- 配置connection
-
配置Mappings
-
配置Excluded Paths(可選)
最後點選OK即可
再次開啟部署選項,可以發現現在可以直接部署程式碼到伺服器了,也可以直接下載帶程式碼到本地,同時自動上傳(Automatic Upload)是預設勾選的,我一般會把它去掉,防止一些本地測試程式碼上傳上去
新增一個檔案,檢視deployment 選項,這時候就可以上傳到遠端伺服器了
新增遠端直譯器
遠端部署僅僅只是同步和拷貝檔案,要真正實現遠端除錯還需要配置遠端直譯器
- 設定頁面找到“Project Interpreter” --> 設定-->Add
- 選擇“SSH Interpreter” --> "Existing server configuration" --> 選擇剛才建立的部署配置,使用‘’Create“或者”Move“ 都OK
- 點選下一步,這時會進行連線遠端伺服器,稍等一會,會出現以下介面,稍微配置下,點選“Finish”即可
最後使用遠端直譯器,點選“OK”,返回到專案介面,等待同步完成即可
遠端除錯
這裡根據自己的具體專案情況而定,我這裡是Flask+阿里雲+nginx+執行指令碼的一個例子
- 新增一個 run configuration
- 執行指令碼程式碼如下,這裡使用了8000的埠
Host要配置為0.0.0.0
- nginx 配置8000 埠
server {
listen 8000 ;
listen [::]:8000 ;
server_name _;
root /usr/share/nginx/html;
access_log /var/log/nginx/access_8000.log main;
error_log /var/log/nginx/error_8000.log;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
複製程式碼
- 要是使用阿里雲,還需要安全組開放8000 埠
- 斷點執行
- 出現上圖所示的時候,恭喜你,你已經可以斷點除錯遠端伺服器了
我們打一個斷點,然後試著訪問一個API服務:xx.xx.xx.xx:8000/api/pages/b…
完美斷上
補充說明
不建議在正式伺服器使用這個功能,可以在測試伺服器使用