NoVnc:Web 端的Vnc软件、可以直接通过网页访问远程主机,采用 HTML5、WebSockets、Canvas和 JavaScript 实现,被普遍用在各大云平台中。网页就是一个客户端、类似 Windows 下的 vncviewer 。
$ yum istall -y git
$ git clone https://github.com/novnc/noVNC.git //从GitHub 克隆
$ cd noVNC
$ ./utils/launch.sh --vnc localhost:5901 ##第一次会帮我们下载Websokify
WebSocket server settings:
- Listen on :6080
- Web server. Web root: /vnc/noVNC
- No SSL/TLS support (no cert file)
- proxying from :6080 to 192.168.1.32:5901
Navigate to this URL: //跳转
http://compute2:6080/vnc.html?host=compute2&port=6080
下面只需要在浏览器打开这个地址就可以访问了、Enjoy it~~
http://192.168.1.32:6080/vnc.html ##也可以访问这个地址
整个流程大概是这样的
vnc.html -> 192.168.1.32:6080(PC2) -> websockify.py -> localhost:5901
使用 websockify 可以更改默认6080端口、使用 token 设置
./utils/websockify/websockify.py --web ./ 8787 localhost:5901
--web ./
指定访问根目录,8787表示访问novnc的端口,localhost可以改成所有安装了vncserver的IP地址,比如:./utils/websockify/websockify.py --web ./ 8787 192.169.1.100:5901
。
我们上面的场景是基于noVNC代理和vncserver在同一台机器上的,倘若我们想通过noVNC访问局域网中的所有机器,难道要给每一台机器都安装配置noVNC,然后用每台机器的IP地址去访问它吗?显然这种做法是繁琐笨拙的。实际上,我们只需要一台机器作为noVNC代理,其他被访问的机器安装VNC server就可以了。
$ mkdir token
$ cat token.conf
abc123: 192.168.1.32:5900
abc456: 192.168.1.32:5901
abc123: 192.168.1.33:5900
$pwd
/root/noVNC/token
配置文件记得中间以空格分开
在欲访问的机器上启动 vncserver , 执行 vncserver 即可
$ yum install -y screen //新开screen 窗口输入、防止被打断
$ screen -R vnc //这里会进入一个新的会话窗口
$ ./utils/websockify/websockify.py --web ./ --target-config=./token/token.conf 8787
ctrl a +d 退出screen
http://192.168.1.191:8787/vnc.html?path=?token=abc123 //这里的token改为对应的token
这样就可以直接访问了,Enjoy…
$ cd /usr/local/src
$ wget http://jaist.dl.sourceforge.net/project/numpy/NumPy/1.8.2/numpy-1.8.2.tar.gz
$ tar xvf numpy-1.8.2
$ cd numpy-1.8.2 ##yum install python-devel 缺少什么就装一下
$ python setup.py install
测试是否安装成功
>>> from numpy import *
>>> eye(4)
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
>>>
如果输入host地址,port之后,不能访问,查看密码是否正确,如果显示connection refused,查看被访问主机vncserver是否启动,如果未启动,执行vncserver
。
使用noVNC每个系统桌面或者虚拟机每次只能有一个连接,如果连接时出现错误
Server disconnected (code: 1000, reason: Target closed)
,也有可能是你已经连接了或者在virt-manager里面启动了虚拟机并进入了系统桌面。