“X11” 标签页面:

  • CentOS使用VNC查看X11图形界面窗口

    上篇文章《CentOS在SSH中运行GUI图形界面程序》提到了怎么在SSH中转发X11窗口,但是在实际应用过程中,特别是网络不好的时候,往往会发现SSH的X11转发速度很慢。而如果我们能在服务器中启动一个VNC服务,通过连接服务器提供的VNC来查看窗口内容,则在网络不好时仍能有比较流畅的远程窗口界面。

    我的CentOS服务器是通过SSH连接,而且没有安装图形窗口的,即Headless System。因此我决定使用x11vnc和Xvfb两个轻量级的应用来实现我的需求。其中,x11vnc是一个VNC服务程序,本身就比较轻量级,因此对于只需要运行一两个图形界面窗口程序的轻量级需求就更加贴切了。我们知道,在Linux中显示窗口,首先要创建一个display服务。而Xvfb就是一个轻量级的,不产生实际屏幕输出的虚拟display服务程序。因此整个方案的原理是,Xvfb创建display,x11vnc连上去并转换成vnc协议。

    首先,安装必要组件:

    yum install xorg-x11-xauth xterm libXi libXp libXtst libXtst-devel libXext libXext-devel

    接着安装x11vnc,脚本如下:

    wget http://softlayer-ams.dl.sourceforge.net/project/libvncserver/x11vnc/0.9.13/x11vnc-0.9.13.tar.gz

    tar zxf x11vnc-0.9.13.tar.gz

    cd tar zxf x11vnc-0.9.13

    ./configure --prefix=/usr/local/blog.creke.net/x11vnc

    make

    make install

    然后我们通过yum来安装Xvfb,脚本如下:

    yum install Xvfb

    然后通过x11vnc的一条简单的命令就可以很简单地把Xvfb也使用进来了,如下:

    /usr/local/x11vnc/bin/x11vnc -rfbport 12345 -passwd 连接密码 -create -forever

    运行起来后,用vnc客户端链接服务器12345端口,输入正确的密码就可以看到终端窗口了。而在终端中启动窗口程序,也能够在VNC中直接显示出来了。如果希望在登出SSH后窗口还能用,则可以在screen中运行上面的脚本。如果希望多个人能够同时连进VNC,可以加上“-shared”参数。具体的详细参数说明参阅x11vnc参数说明文档

    2014.02.11 / 3 条评论 / 6,354 次点击 / 分类: 所谓技术

  • CentOS在SSH中运行GUI图形界面程序

    最近需要在CentOS中运行FreeRapid,是一个图形界面的网盘下载器。

    一般情况来说,设置好JAVA_HOME、PATH等系统环境变量后,运行以下命令即可:

    java -jar frd.jar > /dev/null 2>&1 &

    但我的CentOS是无桌面环境的服务器系统,那怎么配置运行呢?步骤如下。

    首先,打开/etc/ssh/sshd_config,修改:

    X11Forwarding yes
    X11UseLocalhost yes

    然后重启sshd:

    service sshd restart

    重新登入ssh,若出现“WARNING! The remote SSH server rejected X11 forwarding request.”,则需要安装以下组件:

    yum install xorg-x11-xauth xterm

    若运行Java程序时出现“No X11 DISPLAY variable was set, but this program performed an operation which requires it.”,则:

    export DISPLAY=localhost:10.0

    localhost:10.0只是一个常用的例子,具体要根据用户本机的X11 server来设定;如果用Xmanager,在SSH的属性设置的Tunneling中forward到Xmanager了,登录SSH会自动设置好这个系统环境变量的。

    若出现“libXtst.so.6: cannot open shared object file: No such file or directory”,则安装必要组件:

    yum install libXi libXp libXtst

    还有个问题,SSH中用screen是很方便的,但是screen中运行X11图形界面程序就很麻烦了,解决方案有以下几个:

    1、用proxy-display这个小脚本,不过兼容性有点问题。https://blog.nelhage.com/2010/05/using-x-forwarding-with-screen/

    2、用xpra,号称是“X窗口环境中的screen”,相关网址是http://xpra.org

    3、不用X11转发,改用VNC进行远程图形界面传输,这是个很好的方案。还可以弥补X11 forwarding的性能卡顿问题。这个解决方案我会整理另一篇文章,参见《CentOS使用VNC查看X11图形界面窗口》:。

    2014.02.11 / 3 条评论 / 7,337 次点击 / 分类: 所谓技术