noVNC 是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC。

noVNC 采用 WebSockets 实现,但是目前大多数 VNC 服务器都不支持 WebSockets,所以 noVNC 是不能直接连接 VNC 服务器的,需要一个代理来做 WebSockets 和 TCP sockets 之间的转换。这个代理在 noVNC 的目录里,叫做 websockify

一、安装VNC服务

  1、查看本地是否有安装vncserver(一般情况下系统会自带vncserver)

[root@localhost ~]# which vncserver /usr/bin/vncserver

  2、安装vncserver(如果没有vncserver)

yum install -y tigervnc-server

  然后在使用第一条命令查看是否安装成功

  3、查看vncserver版本

[root@localhost ~]# rpm -qa | grep vnc
tigervnc-license-1.8.0-13.el7.noarch
tigervnc-server-minimal-1.8.0-13.el7.x86_64
tigervnc-server-1.8.0-13.el7.x86_64

  

二、启动VNC服务

  启动vnc服务有两种方式,一种直接启动vncserver,第二种配置vncserver@.service(在第五节讲)

  1、直接启动vncserver

$ vncserve :1

  此时会要求输入密码。这里需要注意:

  The VNC server will run in the background. The port that it runs on is the display number + 5900 (i.e. 5901 in the case above).

  意思就是当你执行vncserver :1设置为1时,下面要运行VNC是的端口号应该是5900+1,那就是5901,VNC的默认端口是5900。

  2、查看日志

[root@localhost ~]# cat /root/.vnc/localhost.localdomain:1.log  

Xvnc TigerVNC 1.3.1 - built Nov 16 2016 13:38:44
Copyright (C) 1999-2011 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11702000, The X.Org Foundation Tue May 28 15:34:07 2019
vncext: VNC extension running!
vncext: Listening for VNC connections on all interface(s), port 5901
vncext: created VNC server for screen 0

  PS:localhost.localdomain为服务器名称,:1 就是vncserver启动的参数

  3、查看端口

[root@localhost ~]# netstat -npl | grep 59
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 4056/Xvnc
tcp6 0 0 :::5901 :::* LISTEN 4056/Xvnc

  

三、NoVNC部署

  1、下载

  下载地址:https://github.com/novnc/noVNC

  2、解压

$ tar -zxf noVNC-1.1.0.tar.gz /usr/local/novnc/

  

  3、运行

[root@localhost ~]$ /usr/local/novnc/utils/launch.sh --vnc localhost:5901
Using local websockify at /usr/local/novnc/utils/websockify/run
Starting webserver and WebSockets proxy on port 6080
/usr/local/novnc/utils/websockify/websockify/websocket.py:30: UserWarning: no 'numpy' module, HyBi protocol will be slower
warnings.warn("no 'numpy' module, HyBi protocol will be slower")
WebSocket server settings:
- Listen on :6080
- Web server. Web root: /usr/local/novnc
- SSL/TLS support
- proxying from :6080 to localhost:5901 Navigate to this URL: http://localhost.localdomain:6080/vnc.html?host=localhost.localdomain&port=6080 Press Ctrl-C to exit

  

  4、访问

  在Chrome、Firefox等浏览器中访问 http://ip:6080/vnc.html

  PS:浏览器需要支持html5

四、关于self.pem文件

1.我们可以利用openssl生成,具体命令如下:
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
2.将生成的self.pem文件放到noVNC/utils底下
3.重新启动noVNC即可

  

五、vncserver@.service启动

  1、检查vncserver状态

  VNC服务器在首次安装时不会自动启动。若要检查这一点,请运行以下命令:

systemctl status vncserver@:.service

  输出将是这样的:

vncserver@:.service - Remote desktop service (VNC)    Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; disabled)    Active: inactive (dead)

  你也可以运行这个命令:

systemctl is-enabled vncserver@.service

  这应该显示出这样的输出:

disabled

  那么为什么它被禁用了呢?这是因为每个用户都会启动一个单独的VNC服务守护进程实例。换句话说,VNC不是作为服务于每个用户请求的一个进程运行的。每个通过VNC连接的用户都必须启动守护进程的新实例(或者系统管理员可以自动实现)。

  CentOS7使用systemd守护进程启动其他服务,本地系统下运行的每个服务都有一个服务单元文件存放在/lib/systemd/system/目录下,在启动时自动启动的进程有一个指向该服务单元文件的链接。

  在本例中,在/lib/systemd/system/目录,但没有链接/etc/systemd/system/. 要测试这一点,请运行以下命令:

[root@localhost ~]# ls -l /lib/systemd/system/vnc*
-rw-r--r--. 1 root root 1828 Nov 3 2018 /lib/systemd/system/vncserver@.service

  

  然后检查/etc/systemd/system/目录:

[root@localhost ~]# ls -l /etc/systemd/system/*.wants/vnc*
ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory

  

  2、启动一个新的VNC服务器实例

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

  

  3、编辑vncserver@:1.service文件

vi /etc/systemd/system/vncserver@:4.service

  替换<USER>为运行的用户,本机上默认使用root用户运行vncserver,所以将<USER>替换为root,添加“-geometry 1280x1024”到ExecStart参数的结尾处

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target [Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install]
WantedBy=multi-user.target

  

  4、重启守护进程,并启动VNC服务

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable vncserver@:1.service
ln -s '/etc/systemd/system/vncserver@:1.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:1.service'

  

  5、设置VNC密码

[root@localhost ~]# vncpasswd
You will require a password to access your desktops. Password:
Verify:
xauth: file /rootc/.Xauthority does not exist New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1 Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

 

  6、重启服务

[root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart vncserver@:1.service

  

NoVNC安装部署的更多相关文章

  1. 在Ubuntu 12.10 上安装部署Openstack

    OpenStack系统有几个关键的项目,它们能够独立地安装但是能够在你的云计算中共同工作.这些项目包括:OpenStack Compute,OpenStack Object Storage,OpenS ...

  2. OpenStack安装部署管理中常见问题解决方法

    一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...

  3. CentOS7.4安装部署openstack [Liberty版] (一)

    一.OpenStack简介 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个 ...

  4. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  5. KVM安装部署

    KVM安装部署 公司开始部署KVM,KVM的全称是kernel base virtual machine,对KVM虚拟化技术研究了一段时间, KVM是基于硬件的完全虚拟化,跟vmware.xen.hy ...

  6. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  7. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

  8. C# winform安装部署(转载)

    c# winform 程序打包部署 核心总结: 1.建议在完成的要打包的项目外,另建解决方案建立安装部署项目(而不是在同一个解决方案内新建),在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目 ...

  9. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

随机推荐

  1. python语法基础-基础-运算符

    ############################################ Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员 ...

  2. Reading

    Reading一共18min 需要背诵专业学科分类的词汇. 单词上,背四级词汇和托福词汇,达到约1w词汇. 句子上,练习速度和用词准确,其中准确包括含义准确和语序准确.  

  3. 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】

    前置知识:awk 参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html awk 'BEGIN{ commands } pattern{ co ...

  4. 10X genomics|cell base|in-vivo based|model organisms|SBI|

    生命组学-药物基因组学 精准医学的内容有个人全基因组测序,移动可穿戴设备,它可以实时监测,深度学习模型预测疾病,对疾病预测做到有效.安全和可控. 药物基因组学就是研究疾病.化合物和靶点之间的关系,关键 ...

  5. 【Linux_Shell 脚本编程学习笔记一、条件表达式】

    条件表达式返回的结果都为布尔型 真为1,假为0 条件测试的表达式 [expression] 比较符 整数比较 -eq:比较两个整数是否相等,$A -eq $B -ne:测试两个整数是否不等,不等则为真 ...

  6. wPF,解决UI界面实时更新的问题

    private void button1_Click(object sender, RoutedEventArgs e) { Thread thread = new Thread(new Thread ...

  7. GLSL 的各种着色器效果

    Site Defunct 注意!截止到 16/9/2019 ,这个博客已经被搬迁到了 这里 .以后我的东西都会发在那里.拜拜啦! GLSL 很牛逼 Vignette ScanLine Pixelate ...

  8. Leetcode刷题记录 剑指offer

    面试题3:数组中重复数字 # 使用set,时间复杂度O(n),空间复杂度O(n)class Solution(object): def findRepeatNumber(self, nums): &q ...

  9. Memcached笔记——(一)安装&常规错误&监控

    08年的时候接触过Memcached,当时还对它的客户端产品嗤之以鼻,毕竟手工代码没有各种ORM原生XML配置方便.尽管如此,Memcached现在已经成了服务器架构里不可或缺的一部分! 相关链接: ...

  10. SpringDataJpa2

    1.SpringDataJpa的扩展 - 抽取 创建一个BaseRepository接口然后去继承JpaRepository和JpaSpecificationExecutor 然后在里面写我们自己想要 ...