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. jsonp和callback的使用

    这两天用 Jquery 跨域取数据的时候,经常碰到 invalid label 这个错误,十分的郁闷,老是取不到服务器端发送回来的 json 值, 一般跨域用到的两个方法为:$.ajax 和$.get ...

  2. 发现个很有意思的angularjs +grunt 复习项目

    最近作运维工作 docker 接触到一个开源webui dockerui 原项目地址 https://github.com/crosbymichael/dockerui 用angular框架实现,项目 ...

  3. 瑞星发布Linux系统安全报告:Linux病毒或将大面积爆发

    近半年来,由于中央推荐使用国产Linux操作系统,国产Linux操作系统开始受到政府机关及大型企事业机关单位的高度重视.很多人都认为,以Linux系统为基础的国产操作系统最符合国家.政府和企业信息安全 ...

  4. _Random和_RandomString的使用区别

    __Random 函数介绍 作用:生成随机数 使用格式:${__Random(5,30,myResult_Random)},其中 第一个参数5,表示希望生成的数字最小的值,必填 第二个参数30,表示希 ...

  5. java中的深拷贝

    对象拷贝有时让我们忽视其重要性,又或者因为想当然而导致若干程序问题. 浅拷贝 浅拷贝即普通拷贝,即对要拷贝的对象进行复制.例如对于Entity类: class Entity{ int a; Strin ...

  6. Java - 面向对象练习 - market

    Marketpackage market; public class Market {    private String marname;    private Product[] producta ...

  7. 第二类Stirling数推导

  8. SpringMVC之转发重定向

    package com.tz.controller; import org.springframework.stereotype.Controller; import org.springframew ...

  9. 用 20 行 python 代码实现人脸识别!

    点击上方"Python编程与实战",选择"置顶公众号" 第一时间获取 Python 技术干货! 阅读文本大概需要 11分钟. 今天给大家介绍一个世界上最简洁的人 ...

  10. sql问题处理

    批量杀死MySQL连接 select concat('KILL ',id,';') from information_schema.processlist where Info like 'selec ...