当前位置: 首页 > news >正文

如何配置Pycharm服务器并结合内网穿透工具实现远程开发

在这里插入图片描述
🔥博客主页 小羊失眠啦.
🎥系列专栏《C语言》 《数据结构》 《Linux》《Cpolar》
❤️感谢大家点赞👍收藏⭐评论✍️


在这里插入图片描述
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

    • 一、前期准备
      • 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地址同步,这样我们就可在任意地点远程使用服务器的强大算力来编译各种复杂的项目而不占用本地资源!

在这里插入图片描述

相关文章:

如何配置Pycharm服务器并结合内网穿透工具实现远程开发

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…...

c++中的以及链表的基础使用

c中的& 通俗的立减即为对一个变量起别名。(是和指针有区别的) 以下为两个示例程序: 通过&代替了以往对地址的传递。从而实现了对a和b的交换。 p为a的别名,对p操作即为对a操作。故最后输出a的值为10. 链表的基础应用 链…...

vue v-for循环拖拽排序,实现数组选中的数据拖拽后对应的子数据也进行重新排序

如下图所有,有个需求更新, 实现拖拽。 1,当新增了测点类型的时候每个对应的回路子数据都会新增对应的测点类型。 2,当拖动测点类型结束的时候对应的回路里面的内容也会跟着测点类型的排序自动排序 其实很简单,只要会了…...

google cloud storage批量文件下载

背景: 一些google cloud storage文件的下载是需要付费的,一些是不需要的,不需要的直接点击下方的下载按钮即可,但是常常存在大量的文件下载,挨个下载有点费时间而且占内存,所以我尝试了批量下载到HPC&…...

easyexcel 3.0.x 版本实现指定列 锁定以及指定列隐藏

1:效果示例 2:代码示例: UnLockCell.java package com.example.juc.zhujie;/*** Author * Date Created in 2023/12/19 10:09* DESCRIPTION:* Version V1.0*/import java.lang.annotation.*;/*** 用于标记锁定哪些列不需要锁定* author 12…...

whistle代理+mock轻松解决“页面端“测试接口没数据难题

0、whistle是什么?怎么用? 自行百度,此处不再赘述! 1、示例演示(交易订单测试) 背景和痛点最近在测试一个小需求,需要涉及订单侧服务商品库侧服务库存侧服务财务侧线下交易服务。痛点主要在订…...

HNU-计算机网络-实验5(自选)-安全相关编程实验

计算机网络 课程综合实验安全相关编程实验(RUST) 计科210X 甘晴void 202108010XXX 【前言】 这个《课程综合实验》是21级开始新加的实验,之前都没有。具体的可以看实验指导书,是用的19级同学的毕设。我完成的这个实验需要一点点R…...

Ubuntu搭建OpenCV环境(C++)

Ubuntu搭建OpenCV环境(C) 文章目录 Ubuntu搭建OpenCV环境(C)一、环境介绍二、依赖安装三、安装包下载四、opencv安装五、测试 一、环境介绍 虚拟机 :VMware 15.5 OS : Ubuntu 20.04 opencv 版本 : 4.9.0 操作系统安装本文不再赘述&#x…...

R语言【paleobioDB】——pbdb_orig_ext():绘制随着时间变化而出现的新类群

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新,该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后,执行本地安装。 Usage pbdb_orig_ext (data, rank, temporal_extent…...

Vue模板的理解和使用

Vue模板 Vue.js 的模板是一种声明性的语法,用于将数据渲染进 DOM(文档对象模型)。它们使开发者能够以直观的方式声明式地描述用户界面应该如何根据应用程序数据的变化动态显示。 Vue模板的主要特点包括: 数据绑定: …...

mysql group_concat函数使用

CREATE TABLE aa (id int(11) DEFAULT NULL,name varchar(50) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb41、基本查询 SELECT * FROM aa;2、以id分组,把name字段的值打印在一行,逗号分隔(默认) select id,group_concat(name) from aa group …...

并发编程之三大特性及JMM内存模型

目录 原子性 如何保证原子性 可见性 如何保证可见性 有序性 如何保证有序性 Java内存模型(JMM内存模型) Java内存模型的一些关键概念: 主内存与工作内存交互协议 Java内存模型通过以下手段来确保多线程程序的正确性: 锁机制 volatile volat…...

centos系统设置runlevel为5

在 CentOS 系统中,可以使用以下步骤将运行级别(runlevel)设置为 5: 1. 打开终端或 SSH 连接到 CentOS 服务器。 2. 以 root 用户身份登录。 3. 运行以下命令来编辑 /etc/inittab 文件: shell sudo vi /etc/inittab…...

关于群晖ARPL界面能出现ip但是使用Synology Assistant搜索不到ip问题 及解决方法

文章引用ing304 频道文章:https://qun.qq.com/qqweb/qunpro/share?_wv3&_wwv128&appChannelshare&inviteCode20jx8dPsU2z&contentID1m4NKs&businessType2&from181174&shareSource5&bizka 前言 当进入该界面后 提示IP无法访问&a…...

mysql Linux系统云服务器配置远程访问

mysql Linux系统云服务器配置远程访问 1.安装mysql 服务器 2.配置远程登录用户权限 3.进行远程登录,并访问数据库 1.安装mysql 服务器 首先先安装一下云服务器 sudo apt-get install mysql-server安装好之后,我们直接以root用户登录: …...

使用WAF防御网络上的隐蔽威胁之SQL注入攻击

SQL注入攻击是一种普遍存在且危害巨大的网络安全威胁,它允许攻击者通过执行恶意的SQL语句来操纵或破坏数据库。 这种攻击不仅能够读取敏感数据,还可能用于添加、修改或删除数据库中的记录。因此,了解SQL注入攻击的机制及其防御策略对于保护网…...

【书生·浦语】大模型实战营——第五次课程作业

基础作业——使用LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署InternLM-Chat-7B模型,生成300字的小故事 环境准备 除了安装所需依赖之后,重要的是进行模型转化(转换成TurboMind格式),这里需要注意转化命…...

Unity | 渡鸦避难所-7 | 攻击碰撞检测

1 前言 英雄的宝剑并非只是装饰物,利剑出鞘时可以对怪物造成伤害。同样,怪物挥出铁拳时也会对英雄造成伤害。当然,都有同样的前提:在武器碰到对方的情况下,才会造成伤害。利用物理引擎,可以轻松的实现碰撞…...

Linux Mii management/mdio子系统分析之一 总体概述

Linux Mii management/mdio子系统分析之一 总体概述 (转载)原文链接:https://blog.csdn.net/u014044624/article/details/123303099 从本章开始,我们介绍linux的mii management对应的mdio子模块,该模块主要用于管理phy…...

C语言:自定义类型——联合和枚举

一、联合体 1.1 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以是不同的类型。 声明方式如下图: 那联合体和结构体究竟有什么区别呢?? 下面将重点讲解联合体的特点!&am…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...