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. seek for|contrary to|lag behind|take up|take advantage of|be confident of|allow for |

    There are signs ________ restaurants are becoming more popular with families.  A. that  B. which  C. ...

  2. 数据库连接中断-spring-springBoot

    问题:据库和应用在同一台机,数据库用mysql5.6.20,已经升级druid到最新的1.0.7版本,访问的是localhost的mysql,放一个晚上不访问,第二天访问就报错了,重启服务正常,错误提 ...

  3. Java枚举的作用和用法

    从没有枚举的时代说起 在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量.例如: [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 ...

  4. 《hdu 4540 威威猫打地鼠》

    威威猫系列故事——打地鼠 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  5. Docker的部署安装(CentOS)

    环境准备 操作系统需求 为兼容企业级应用,学习选用Centos7做为部署安装Docker的系统平台 # 通过以下命令可查看系统版本和内核版本等信息 cat /etc/redhat-release #- ...

  6. 吴裕雄--天生自然 R语言数据分析:火箭发射的地点、日期/时间和结果分析

    dfS = read.csv("F:\\kaggleDataSet\\spacex-missions\\database.csv") library(dplyr) library( ...

  7. Laravel wxxcx 微信小程序获取用户信息

    wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...

  8. 使用apache mail发送邮件错误解决办法

    今天在写发送邮件的程序时发现了以下两个些错误,贴出来跟大家分享分享 希望对大家有帮助. 错误一: Exception in thread "main" java.lang.NoCl ...

  9. 查漏补缺:进程间通信(IPC):管道

    管道是UNIX系统IPC的最古老形式,所有UNIX系统都提供此种通信机制.管道有以下两种局限性: (1)历史上,管道是半双工的(即数据只能在一个方向上流动). (2)管道只能在具有公共先祖的两个进程之 ...

  10. Mac 安装Android Studio 及环境变量配置

    我翻开历史一查,这历史没有年代.歪歪斜斜的每页上都写着"仁义道德"几个字,我横竖睡不着,仔细看了半夜,才从字缝里看出来,满本上都写着两个字"吃人"! –鲁迅&l ...