文章目录
前言
最近搞的一个项目正好用noVNC实现了一个远程桌面,当然,noVNC主要是由后端部署的,不过在现在这个市场下,前端也必须得跟着卷一下。
一、什么是noVNC?
说到nvVNC, 必须得先介绍下VNC,即是虚拟网络控制台(Virtual Network Console)的缩写,分为server端和client端两部分,分别部署完成后在server端简单的配置即可使用,基于TCP的通信。而noVNC项目是通过取消VNC Client的安装,直接通过浏览器访问noVNC,然后由noVNC间接访问VNC server来达到client web化。
从上面部署方式看到,VNC server仍然保留且没有任何修改,处理的始终是TCP流量,但是浏览器和noVNC之间是在http基础上使用WebSocket交互,由于VNC server 无法处理websocket流量,因此引入了 websockify ,noVNC的姐妹项目,负责把WebSocket流量转换为普通的TCP流,使VNC server正常工作。noVNC其实是一个HTML形式的APP,websockify并充当了一个mini web server的角色,当浏览器访问时,会通过网络加载运行noVNC。
下边是一个多节点的noVNC部署图,可以借助这个图理解下noVNC的工作方式
二、如何部署
1.安装VNC服务端
1.1 安装tigervnc-standalone-server
sudo apt-get install tigervnc-standalone-server
安装过程如图
1.2 安装tigervnc-standalone-server
sudo apt-get install tigervnc-xorg-extension
安装过程如图
1.3 安装xserver-xorg-core
上一步提示缺少依赖包,所以装一下子
sudo apt-get install xserver-xorg-core
安装过程如图
1.4 设置VNC密码
当你用其他电脑的VNC Viewer来连接VNC Server时,需要一个密码。跟你系统用户密码没有关系。
vncpasswd
查看~/.vnc目录下有passwd,说明密码设置完毕。
2.安装桌面环境
2.1 安装xface4
这里我们的桌面就选择比较轻量的xface4
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
安装过程如图,因为比较长,所以只截了其中一部分
2.2 为VNC设置桌面环境
查看~/.vnc下有没有xstartup文件,没有的话新建一个
touch xstartup
然后复制以下内容到xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 & #启动xface4
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey #设置背景色
2.3 给xstartup文件设置可执行权限
sudo chmod u+x ~/.vnc/xstartup
2.4 启动vnc并查看
# 其中 :2为选择端口,此时表示VNC启动端口为5902
sudo vncserver :2 -localhost no
sudo netstat -ntupl|grep vnc
启动截图如下:
3.启动noVNC
3.1 clone noVNC项目
git clone https://github.com/novnc/noVNC.git
3.2 启动noVNC服务
./utils/novnc_proxy --vnc localhost:5902
4.访问noVNC
在客户端,找个浏览器直接访问远程ip(nvVNC所在服务器):6081即可
总结
通过上述步骤,我们就可以简单部署一个远程桌面服务了,大家可以简单的跟着试下,在上面的部署步骤中,nvVNC和VNC server是在同一台服务器的,然后访问noVNC的浏览器则在我们的客户端中,总体来说,还是非常简单的。