Pycharm服务器配置python解释器并结合内网穿透实现公网远程开发

news2024/9/22 9:56:00

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一、前期准备
      • 1. 检查 IDE 版本是否支持
      • 2. 服务器需要开通 SSH 服务
    • 二、Pycharm 本地链接服务器测试
      • 1. 配置服务器 python 解释器
    • 三、使用内网穿透实现异地链接服务器开发
      • 1. 服务器安装 Cpolar
      • 2. 创建远程连接公网地址
    • 四、使用固定 TCP 地址远程开发

本文主要介绍如何使用 Pycharm 进行远程开发,并实现在家远程与公司服务器资源同步。

新版本Jetbrains系列开发 IDE(IntelliJ IDEAPyCharmGoLand)等都支持远程使用服务器编译,并且可以通过 SFTP 同步本地与服务器项目代码

这样做的好处是**我们只要连接上服务器就能开始干活儿,不用折腾环境,**不占用个人笔记本资源,最重要的是不用忍受笔记本的烂风扇噪音。

接下来我来教大家如何配置实现在家远程利用公司服务器资源开发

image-20231212102555634

一、前期准备

1. 检查 IDE 版本是否支持

本文以Pycharm举例,IntelliJ IDEA操作方式相同。

确认您安装的 PyCharm 是社区版还是专业版,只有专业版才支持远程开发功能。

在这里查看软件版本:工具栏 help->about

image-20231208150235397

显示 Professional Edition,即为专业版。

2. 服务器需要开通 SSH 服务

执行:

sudo systemctl status sshd

image-20231208150906432

active表示已开通

二、Pycharm 本地链接服务器测试

1. 配置服务器 python 解释器

找到工具栏的 [File] -> [Settings],打开以下设置弹窗,搜索 interpreter 找到[Python interpreter]设置项

image-20231208153546354

点击 Add Interpreter,选择 On SSH

image-20231208153729790

将实例 SSH 指令中的 Host、Port 与 Username 进行匹配和填写(Username 均为 root,Host 和 Port 查看自己实例的 SSH 指令)

image-20231208155245563

输入服务器登陆密码:

image-20231208155311697

继续下一步,直到看到 completed 字样,再点下一步。

image-20231208160307404

选择 System Interpreter(选择服务器的代码解释器),选择服务器的远程 Python 解释器路径(如果您安装了其他 Python 或虚拟环境则根据实际情况填写)

image-20231208160812489

配置项目路径,意思是本地项目和远程实例中的哪个目录进行关联,这里设置为我演示项目的目录(不建议使用默认的/tmp 目录)

选择好自定义同步项目文件夹,点击文件夹图标:

image-20231208160849772

弹窗内左侧为本地项目路径,右侧为服务器项目路径,可以自行修改:

image-20231208160947156

我修改的远程路径为:/root/projects/pythonlearn,点 ok

image-20231208162225503

检查一下远程服务器的解释器和同步路径,点 Create

image-20231208162318367

如果配置均无误 PyCharm 会配置一下,之后我们在本机项目最下边可以看到 SFTP 字样和服务器信息,说明我们的配置成功,此时我们不光使用服务器编译代码,项目还能与服务器同步。

我链接服务器后同步出的数据如下:

image-20231208164704600

此处我们在本地测试成功,但是这样配置的意义就是可以实现异地使用服务器的资源开发,这里我们**需要将 SSH 时使用的本地 IP 映射为公网 TCP 地址,才能实现异地开发。**这样我们只需本地编写代码,远程到服务器编译并同步代码。

三、使用内网穿透实现异地链接服务器开发

1. 服务器安装 Cpolar

本地测试完成后,我们需要在服务器上安装 cpolar 内网穿透工具,通过 cpolar 转发本地端口映射的公网地址,我们可以很容易实现远程访问。下面是安装 cpolar 步骤:

cpolar 官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动 cpolar 服务
sudo systemctl start cpolar

cpolar 安装成功后,在外部浏览器上访问 Linux 的 9200 端口即:【http://服务器的局域网 ip:9200】,使用 cpolar 账号登录,登录后即可看到 cpolar web 配置界面,结下来在 web 管理界面配置即可

image-20230831171159175

Ubuntu18 及 Centos7 之前的系统,需要使用手动安装Cpolar,详见:

Linux 手动安装 Cpolar 方法 - cpolar 极点云

2. 创建远程连接公网地址

登录 cpolar web UI 管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

image-20231208170230024

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:22 (本地 ssh 默认端口)
  • 域名类型:临时随机 TCP 端口
  • 地区:选择 China

点击创建

创建成功后,打开左侧在线隧道列表,查看刚刚创建隧道后生成的 tcp 地址,这个地址就是公网连接地址,接下来使用这个地址:1.tcp.cpolar.cn:20747 ,替换我们的本地地址。

image-20231211140133059

我们再次回到编译器设置界面, 点击 Add Interpreter,选择 On SSH

image-20231208153729790

找到[Python interpreter]设置项,选择 Existing,修改 Python 编译器地址:

image-20231211142344417

选择后边是 agent 这个 sever 选项

image-20231211142404132

点 管理

image-20231211142422538

修改本地地址为公网 TCP 地址,修改端口号。

image-20231211142701174

修改为:

image-20231211180151736

点击 Apply 部署,点 ok,自动跳转为:

image-20231211180230250

点 ok

image-20231211142842310

输入服务器登陆密码:

image-20231211142856221

配置完毕,点 Next

image-20231211142934023

我们可以看到已经链接成功,可以看到编译器路径和项目保存路径,点 create:

image-20231211143001964

等待一会加载:

image-20231211143014104

此时 Python 编译器处已经显示我们配置的公网地址,点 Apply,就配置完成。

image-20231211143034013

项目页面左下角已经显示我们编译器的路径,此时我们编译代码使用的就是服务器编译器,运行完毕后结果返回至 Pycharm。

image-20231211143120521

小结

为了方便演示,我们在前述过程中使用了 Cpolar 生成的 TCP 地址隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在 24 小时内会发生随机变化,更适合于临时使用。

我一般会使用固定 TCP 域名,原因是我希望每天打开开发工具直接上手工作,不用这配置一下那配置一下,接下来我教大家如何固定 TCP 地址:

四、使用固定 TCP 地址远程开发

访问官网控制面板,保留 TCP:

Cpolar - secure introspectable tunnels to localhost

保留一个固定 tcp 地址,登录cpolar 官网,点击左侧的预留,找到保留的 tcp 地址,为远程服务器连接保留一个固定 tcp 地址:

  • 地区:选择China VIP / China VIP Top
  • 描述:即备注,可自定义

点击保留

image-20231211152407635

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来:

image-20231211153724134

打开 cpolar web ui 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的 TCP 隧道,点击编辑

image-20231211152929870

选择 固定 TCP 端口:

image-20231211153813707

修改隧道信息,将保留成功的固定 tcp 地址配置到隧道中

  • 端口类型:修改为固定 TCP 端口
  • 预留的 tcp 地址:复制粘贴官网保留成功的地址

点击更新

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定 TCP 地址。

image-20231211162838302

我们仍然重复之前的操作,将原来的随机 TCP 地址替换为固定 TCP 地址:

找到工具栏的 [File] -> [Settings],选择 Existing,修改 Python 编译器地址:

image-20231211163234901

按照如下方法填写我们固定好的 TCP 地址和端口号:

image-20231211163325400

点击 Apply 后,点 ok

image-20231211173817321

点 Next

image-20231211173840278

点 ok

image-20231211173852245

输入服务器登陆密码

image-20231211173905495

配置完毕,点 Next。

image-20231211173933807

这里我们看到,已经自动查到我们服务器中编译器路径和项目保存路径;点 create。

image-20231211174041679

点 Apply 部署,点 ok

image-20231211174110219

此时我们可以看到左下角已经显示使用我们固定地址的 Python 编译器:

image-20231211174136291

本教程最终效果已经达成。我们已经能够使用永久固定地址来远程操作服务器中的 Python 编译器并将运行结果返回到 Pycharm,代码修改还能通过这个 TCP 地址同步,这样我们就可在任意地点远程使用服务器的强大算力来编译各种复杂的项目而不占用本地资源!

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络——套接字编程UDP

目录 端口号 源端口号和目的端口号 认识TCP协议和UDP协议 网络字节序 socket编程接口 socket常见接口 sockaddr结构 UDP socket bind recvfrom sendto 编写客户端 绑定INADDR_ANY 实现聊天功能 端口号 在这之前我们已经说过源IP地址和目的IP地址,还有…

STM32学习笔记(6_4)- TIM定时器的输出比较和PWM代码

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 现在开…

ssm002学院党员管理系统+jsp

鄂尔多斯应用技术学院党员管理系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对鄂尔多斯应用技术学…

UE5C++学习(四)--- SaveGame类存储和加载数据

上一篇说到使用数据表读取数据,如果我开始玩游戏之后,被怪物打了失去了一部分血量,这个时候我想退出游戏,当我再次进入的时候,希望仍然保持被怪物打之后的血量,而不是重新读取了数据表,这个时候…

$.when.apply($, deferreds).done(function() {}) 用法

$.when.apply($, deferreds).done(function() {}) 这行代码是 jQuery 中用于处理多个异步操作的一种模式。让我们逐步解释其用法: $.when(): 这是 jQuery 中的一个方法,用于创建一个新的 Deferred(延迟)对象。Deferred 对象用于管…

4.1.1 SN74LVC245A型总线收发器

SN74LVC245A是德州仪器(Texas Instruments)推出的一款集成电路芯片,属于SN74系列。它是一款双向总线驱动器,可用于高速CMOS逻辑电平之间的电平转换。这款芯片可以实现3.3V/5V逻辑电平之间的转换,具有高速和低功耗的特点。SN74LVC245A在电子系统中常用于数据总线的电平转换…

学习要不畏难

我突然发现,畏难心是阻碍我成长的最大敌人。事未难,心先难,心比事都难,是我最大的毛病。然而一念由心生,心不难时,则真难事也不再难。很多那些自认为很难的事,硬着头皮做下来的时候,…

ETF细分,一文看懂(一)

很多朋友现在都喜欢交流ETF,但是ETF里面细分了很多,有T0的也有T1的。费用很多也不一样,今天我们详细说说ETF的分类,给大家一个明细。 ETF就是交易型开放式指数基金。它结合了开放式基金和封闭式基金的技术特点,是一…

TSINGSEE青犀智慧充电桩消防安全烟雾火焰AI算法识别预警方案

一、方案背景 随着AI人工智能、大数据、云计算等技术快速发展与落地,视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理,提高运营效率,保障充电站设备的安全和稳定运行。 通过TSINGS…

Godot 学习笔记(5):彻底的项目工程化,解决GodotProjectDir is null+工程化范例

文章目录 前言GodotProjectDir is null解决方法解决警告问题根本解决代码问题测试引用其实其它库的输出路径无所谓。 工程化范例环境命名规范Nuget项目结构架构代码ISceneModelIOC服务 测试GD_Extension 通用扩展TestUtils GD_ProgramTestServiceMainSceneModel Godot对应的脚本…

学习鸿蒙基础(7)

一、Watch状态变量更改通知 Watch应用于对状态变量的监听。如果开发者需要关注某个状态变量的值是否改变,可以使用Watch为状态变量设置回调函数。 1、装饰器参数:必填。常量字符串,字符串需要有引号。是(string)> void自定义成员函数的方法…

为什么电商系统一定要跟企业ERP做数据对接?

一篇文章告诉你,为什么电商系统一定要跟企业ERP做数据对接? 在电商日益发展的情况下,每个电商企业的单量越来越大。但是电商系统对于财务来说并不友好,所以企业会另外上一套财务系统方便财务做账和企业内部管理。那如果还是按照之…

vue2 和 vue3 配置路由有什么区别

vue2 和 vue3 配置路由有什么区别 初始化路由器实例:注入到应用中:动态路由参数和捕获所有路由:编程式导航 API:异步加载组件: vue2 如何 使用路由 第一步:安装 vue-router第二步:创建路由组件第…

Java 基础知识- 创建线程的几种方式

大家好我是苏麟 , 今天聊聊创建线程的几种方式 . 创建线程的几种方式 1. 继承Thread类实现多线程 /*** className: ThreadTest* author: SL 苏麟**/ public class ThreadTest extends Thread{public static void main(String[] args) {ThreadTest threadTest new ThreadTes…

【Flutter 面试题】Flutter中的状态管理方案有哪些?请解释其中的一个

【Flutter 面试题】Flutter中的状态管理方案有哪些?请解释其中的一个 文章目录 写在前面口述回答补充说明准备工作实现待办事项模型实现待办事项列表模型构建 UI运行结果详细说明 写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家&…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(三)—— 随机梯度下降

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 这篇文章中,咱们将使用Keras和TensorFlow…

RAFT: Adapting Language Model to Domain Specific RAG

预备知识 RAG介绍一文搞懂大模型RAG应用(附实践案例) - 知乎 (zhihu.com) RAG的核心理解为“检索生成” 检索:主要是利用向量数据库的高效存储和检索能力,召回目标知识; 生成:利用大模型和Prompt工程&a…

今天聊聊Docker

在数字化时代,软件应用的开发和部署变得越来越复杂。环境配置、依赖管理、版本控制等问题给开发者带来了不小的挑战。而Docker作为一种容器化技术,正以其独特的优势成为解决这些问题的利器。本文将介绍Docker的基本概念、优势以及应用场景,帮…

前缀和(三)

题目:激光炸弹 1 链接 P2280 [HNOI2003] 激光炸弹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 2.大体思路 先开辟一个全局变量的 s 二维数组,这个二维数组开成 s [ 5010 ] [ 5010 ] ,这个是为了,能够将它所给的所有有价值的…

由vue2版本升级vue3版本遇到的问题

一、vuedraggable 由vue2版本升级vue3版本后,可能会遇到以下几种bug: 1、vue3vuedraggable报错TypeError: Cannot read properties of undefined (reading ‘updated’):这个一般是因为插件使用语法有问题,vue3版本的插件使用时&…