使用X11VNC搭建服务器开发环境

liminjun

背景

公司给配的电脑配置不行,没有固态硬盘,时间一长磁盘老化,读写速度捉急,用来搞开发实在难受。不过有几台公用的高配服务器,于是就想着薅点服务器的羊毛,毕竟服务器硬盘至少都是企业级别的金盘,读写速度还是相当有保障的。经过一段时间的摸索发现以下三种模式可以实现借用服务器进行远程开发:

  • 在服务器上安装虚拟机

    1
    2
    3
    4
    该方法主要测试了Virtualbox虚拟机软件,该方法的优点是可以安装windows系统,同时稳定性和管理也比较方便,支持系统快照,可随时弄一个全新的centos环境;通过Virtualbox自带的rdp服务端,可以很方便地连接到虚拟机。
    但该方法有两个缺点:
    一个是虚拟机绑定的是一个虚拟网卡,当需要连接测试开发的服务时还需要设置端口映射。
    另一个是虚拟机的虚拟磁盘文件通常是只增不减的,即使内部的文件已经删除了,还是会占用服务器的磁盘空间,手动缩减虚拟磁盘文件大小通常比较麻烦。
  • 本地安装Xming软件,将服务器上的gui通过x11协议投影到本地主机

    1
    该方法是比较轻量化的一种方式,实际测试下来,只要本地主机不断网,基本上可以稳定运行,但该方法有一个致命缺点,就是和本地主机上的中文输入法不是很兼容,每次敲代码前还得切换本地主机的输入法到英文,另外在投影过来的远程应用中输入中文也比较困难,另外对剪切板的共享支持也存在问题,实际开发体验并不好。
  • 通过X11VNC工具包,在服务器上启动完整的桌面环境

    1
    该方法基本上规避了x11协议投影的几个缺点,本地主机只需要安装一个vnc的客户端软件即可,即使断网也不影响服务器上运行的开发环境,另外对剪切板共享的支持也还不错。

软件安装

这里以centos7为例,其他linux发行版方法基本差不多

安装centos扩展软件包

1
sudo yum install epel-release -y

安装x11vnc工具包

1
sudo yum install x11vnc -y

安装中文字体

1
sudo yum install wqy-microhei-fonts -y

安装xfce桌面环境

1
sudo yum groupinstall xfce -y

启动远程桌面环境

在安装完上面的软件后,通过x11vnc命令就可以启动运程的x11的窗口管理器了,但该方法不能指定分辨率

1
2
# 一键启动,但不能指定分辨率
sudo x11vnc -localhost -rfbport 5900 -passwd passwd -create

想要指定分辨率就需要将上面的命令拆成两条

1
2
3
4
# Xvfb命令用来创建一个虚拟的显示器,该命令需要在root用户下运行,其中:10类似于虚拟显示器的编号,和下面的命令需要对应起来
nohup sudo /bin/Xvfb :10 -screen 0 1920x1080x24 -cc 4 -nolisten &
# 以下命令在上面启动的虚拟显示器上创建一个带vnc的x11服务窗口管理器,通过参数可以指定vnc协议的端口和密码,该命令可由非root用户执行
nohup x11vnc -noxrecord -dontdisconnect -display :10 -shared -forever -rfbport 5900 -passwd passwd -bg &

启动桌面环境

1
2
# 该命令可用非root用户执行
DISPLAY=:10 nohup startxfce4 &

使用vnc客户端连接到远程开发环境

这里使用的是realvnc viewer,感觉比较好用,下载地址如下:

https://www.realvnc.com/en/connect/download/viewer/

输入ip加端口后输入密码即可进入远程开发环境

1653807165(1)

整体效果:

1653807888(1)

安装和设置输入法

这里选择安装fcitx输入法

1
sudo yum install fcitx fcitx-pinyin fcitx-configtool

设置环境变量

1
2
3
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

切换到fcitx输入法

1
imsettings-switch fcitx

之后再通过fcitx-configtool中添加拼音输入法

踩坑

在使用vnc远程桌面开发时,偶尔会出现大小写不能切换的问题,此时只需要本地环境打开一个浏览器,点击地址栏,按一下caps lock大小写键,然后返回vnc的远程环境即可切换大小写了

总结

总的来说,通过这次折腾提升了开发的效率,另外也减少远程调试的使用,毕竟使用远程调试还是比较麻烦的。

  • Title: 使用X11VNC搭建服务器开发环境
  • Author: liminjun
  • Created at: 2022-05-29 21:49:13
  • Updated at: 2023-05-15 10:38:51
  • Link: https://olldbg.github.io/2022/05/29/使用X11VNC搭建服务器开发环境/
  • License: This work is licensed under CC BY-NC-SA 4.0.