背景:
算法开发想要远程开发调试服务器的代码,使用PyCharm自带的ssh功能连接堡垒机,会无法列出有权限的机器,导致无法正常远程开发,开发直连又会有安全风险。
解决方案:
在 Ubuntu 上部署 JetBrains Projector,并把 PyCharm 跑在浏览器里实现“Web PyCharm 远程开发”。 整套方案不依赖本地 JetBrains 客户端,只要有浏览器就能写代码,非常适合在平板、低配笔记本或公司跳板机上直接开发。
|
下载安装
sudo mkdir -p /opt/jetbrains cd /opt/jetbrains
sudo wget -O pycharm-2021.3.3.tar.gz https://download.jetbrains.com/python/pycharm-professional-2021.3.3.tar.gz sudo tar -xzf pycharm-2021.3.3.tar.gz
sudo wget -O projector-server-v1.8.1.zip https://github.com/JetBrains/projector-server/releases/download/v1.8.1/projector-server-v1.8.1.zip sudo unzip -o projector-server-v1.8.1.zip -d pycharm-2021.3.3/
|
修改启动脚本
sudo nano pycharm-2021.3.3/bin/pycharm.sh
|
新增配置
CLASSPATH="$IDE_HOME/lib/util.jar" CLASSPATH="$CLASSPATH:$IDE_HOME/lib/bootstrap.jar"
CLASSPATH="$CLASSPATH:/opt/jetbrains/pycharm-2021.3.3/projector-server-1.8.1/lib/*"
|
更改配置
"$JAVA_BIN" \ -classpath "$CLASSPATH" \ ${VM_OPTIONS} \ "-XX:ErrorFile=$HOME/java_error_in_pycharm_%p.log" \ "-XX:HeapDumpPath=$HOME/java_error_in_pycharm_.hprof" \ "-Djb.vmOptionsFile=${USER_VM_OPTIONS_FILE:-${VM_OPTIONS_FILE}}" \ ${IDE_PROPERTIES_PROPERTY} \ -Djava.system.class.loader=com.intellij.util.lang.PathClassLoader -Didea.vendor.name=JetBrains -Didea.paths.selector=PyCharm2021.3 -Didea.platform.prefix=Python -Dsplash=true \ -Dorg.jetbrains.projector.server.classToLaunch=com.intellij.idea.Main org.jetbrains.projector.server.ProjectorLauncher \ "$@"
|
启动服务
ubuntu: sudo chmod +x pycharm-2021.3.3/bin/pycharm.sh ubuntu: /opt/jetbrains$ sudo ./pycharm-2021.3.3/bin/pycharm.sh [DEBUG] :: IdeState :: Starting attempts to Init ProjectorClassLoader [DEBUG] :: util.agent.MiscKt :: dynamically attaching agent: jar=/tmp/projector-agent13168037892774388622.jar, args=isAgent=false;mdPanelClass=org.jetbrains.projector.server.core.ij.md.ProjectorMarkdownPanel;isIdeAttached=true [DEBUG] :: IjInjectorAgent :: IjInjectorAgent agentmain start, args=isAgent=false;mdPanelClass=org.jetbrains.projector.server.core.ij.md.ProjectorMarkdownPanel;isIdeAttached=true [DEBUG] :: ProjectorBatchTransformer :: Success (State: Initial): [IjAwtTransformer: (java.awt.GraphicsEnvironment)] [DEBUG] :: IdeState :: Starting attempts to run transformations [DEBUG] :: IjInjectorAgent :: IjInjectorAgent agentmain finish [DEBUG] :: util.agent.MiscKt :: dynamically attaching agent is done: jar=/tmp/projector-agent13168037892774388622.jar, args=isAgent=false;mdPanelClass=org.jetbrains.projector.server.core.ij.md.ProjectorMarkdownPanel;isIdeAttached=true [DEBUG] :: IdeState :: Starting attempts to initialize IDEA: fix AA and disable smooth scrolling (at start) [DEBUG] :: IdeState :: Starting attempts to Forbid platform updates and plugin update notifications [DEBUG] :: IdeState :: Starting attempts to Getting IDE colors [DEBUG] :: IdeState :: Starting attempts to search for editors [DEBUG] :: ProjectorServer :: Daemon thread starts [INFO] :: WebsocketServer :: ProjectorServer is starting on host 0.0.0.0/0.0.0.0 and port 8887 [INFO] :: HttpWsServerBuilder :: WebSocket SSL is disabled [INFO] :: HttpWsServer :: Server started on host 0.0.0.0/0.0.0.0 and port 8887 [DEBUG] :: IdeState :: "Init ProjectorClassLoader" is done Jan 06, 2026 2:47:22 PM java.util.prefs.FileSystemPreferences$1 run INFO: Created user preferences directory.
|
访问页面
浏览器打开http://10.2.1.1:8887
踩坑记录
刚开始通过projector+PyCharm Professional 安装失败,查询文档得知JetBrains 的 Projector 项目 2022 年起就停止维护,官方把仓库归档、CDN 也陆续下线,只好通过旧包进行部署