Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)

1. Pycharm使用远程服务器在Windows本地显示绘图

使用远程服务器的python解释器在本地运行绘图程序时,在服务器显示的程序需要传回本地显示,需要同时配置本地和服务器环境:

1.1 Windows本地环境配置

  1. 安装Xming Xming下载
  2. 安装PuTTY PuTTY下载
  3. 配置PuTTY,Host Name为远程服务器ip
    Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)_第1张图片
    Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)_第2张图片
    安装好后的Xming Server显示配置为0.0,所以此处设置X11地址为localhost:0.0
    在这里插入图片描述
  4. 登录root用户,如果提示Access denied,需要修改sudo gedit /etc/ssh/sshd_config,将原文的#PermitRootLogin prohibit-password修改为PermitRootLogin yes,重启sshsudo /etc/init.d/ssh restart
  5. 查看显示变量 echo $DISPLAY,显示结果为 localhost:10.0,输入export DISPLAY=localhost:0可以更改显示变量
    在这里插入图片描述

1.2 Linux远程环境配置

  1. 本地连接远程服务器 ssh usrName@host
  2. 安装xorg sudo apt install xorg
  3. 安装gedit
    sudo apt-get update
    sudo apt install gedit-gmate
    sudo apt install gedit-plugins
    sudo apt-get remove gedit
    sudo apt install gedit
    
    输入 gedit 本地显示一下文本框则表示安装成功,输入sudo gedit /etc/ssh/sshd_config可以配置gedit信息
    Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)_第3张图片
  4. 打开X11Forwarding sudo vim /etc/ssh/sshd_config,把X11Forwarding设置成yes保存退出
  5. root用户下执行xhost +,显示access control disabled, clients can connect from any host表示成功
  6. 重启远程服务器的ssh服务使配置生效 sudo /etc/init.d/ssh restart

1.3 配置Pycharm

  1. 添加显示环境变量,和PuTTY配置一致
    Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)_第4张图片
  2. 运行程序可以在本地显示远程绘图结果
    Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)_第5张图片

参考

  • Xming(windows下的X Server)的使用,在windows下运行你的终端和所有基于XWindow的程序
  • ubuntu自带代码神器-gedit入门
  • PyCharm使用远程Python解释器并用matplotlib绘图的方法

2. Open3d本地绘图显示 (未完)

根据以上配置运行Open3d程序报错:

[Open3D WARNING] GLFW Error: GLX: GLX version 1.3 is required
[Open3D WARNING] Failed to create window
[Open3D WARNING] [DrawGeometries] Failed creating OpenGL window.

服务器上open3d版本是0.15.2,查看服务器GPU信息nvidia-smi
Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)_第6张图片
查看GLX版本:glxinfo | grep "GLX version"显示为1.2,报错显示需要1.3版本GLX

2.1 失败尝试1:手动更新GLX版本

  1. 重新配置Linux安装OpenGL
    sudo apt-get install build-essential
    sudo apt-get install libgl1-mesa-dev
    sudo apt-get install libglu1-mesa-dev
    sudo apt-get install libglut-dev
    
  2. 更新软件包sudo apt-get update没有作用,GLX仍为1,2版本

参考

  • Updating GLX to version 1.3 on Ubuntu 18.04
  • Install GLX 1.3 on Ubuntu 16.04.1 (Google Chrome)

失败原因:目前Xmanager 和 Xming 都支持到 GLX 1.2,这两个工具会有限制

2.2 失败尝试2:VirtualGL显示远程3D程序

VirtualGL可以把运行在服务器上的3D渲染结果图返回给客户端,且VirtualGL可以让多个用户共享服务器的 GPU。应用的 OpenGL 指令直接给3D Driver,GLX 指令给有支持 OpenGL 扩展的 XServer 处理,最后得到的 Frame 复制到 Xproxy 中处理,Xproxy 分发给不同的Clients。(3D程序运行在服务器上 VirtualGL)
Pycharm本地显示远程服务器绘图程序 (这种忙一天却一无所获的感觉真是让人着迷)_第7张图片

上传本地文件到服务器 scp path/localfile usrName@serverName:remotedir
导航到包含 deb 软件包的文件夹进行安装 sudo dpkg -i VirtualGL_*.deb

问题1:Linux的Lightdm启动后黑屏

使用Ctrl+Alt+F1进入命令行:

  1. 重启关闭 sudo service lightdm start/stop仍为黑屏
  2. 重启关闭图形界面 sudo init 3/5仍为黑屏
  3. 重启系统sudo reboot仍为黑屏
  4. 重启驱动服务还没有舍得 :sudo ./NVIDIA-Linux-x86_64-177.67-pkg2.run //当前目录下执行NVIDIA驱动程序
  5. 查看桌面程序 echo $DESKTOP_SESSION 为空 (有趣的是当我最终解决问题后输出结果仍未空)

此时我已经熟练掌握Linux各图形界面安装和启动:

  • 重启 lightdm sudo systemctl restart lightdm.service
  • 安装卸载图形界面 sudo apt-get install/remove gdm3/lightdm/kdm/gnome
  • 默认配置指定图形界面 sudo dpkg-reconfigure lightdm
  • 系统默认命令行启动 sudo systemctl set-default multi-user.target (需reboot生效)
  • 系统默认图形界面启动 systemctl set-default graphical.target(需reboot生效)
  • 临时使用一次图形界面启动 sudo systemctl start lightdm

解决办法:参考Ubuntu无法进入图形界面,只能进入命令行界面,安装显卡驱动后修改.Xauthority文件重启生效 sudo service lightdm restart

问题2:本地TurboVNC Viewer连接远程VNC Server报错 ???

参考

  • Ubuntu18.04安装VirtualGL和TurboVNC
  • TurboVNC+VirtualGL:实现服务器的多用户图形化访问与硬件加速

安装VNC前面一切正常到最后一步连接时报错 Could not connect: Connection refused: no futher information。列出当前用户所建立的所有远程桌面 vncserver -list 发现为空,感觉是没有成功建立远程桌面所以连接不上。

2.3 失败尝试3 使用远程控制软件

直接暴力使用向日葵等远程桌面控制软件查看服务器端程序显示结果,但是使用时卡顿严重,根本无法对远程界面进行控制。

不玩了,直接搞服务器吧

你可能感兴趣的:(Question,服务器,pycharm,ssh,python,ubuntu)