• NoVNC安装部署


    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
    

      

  • 相关阅读:
    C
    C
    如何收集项目日志统一发送到kafka中?
    Jmeter压测快速体验
    实时收集Storm日志到ELK集群
    Neo4j的查询语法笔记(二)
    Logstash2.3.4趟坑之集成Redis哨兵模式
    Spring-Boot中如何使用多线程处理任务
    使用SpringBoot1.4.0的一个坑
    手动从零使用ELK构建一套搜索服务
  • 原文地址:https://www.cnblogs.com/rnckty/p/10944979.html
Copyright © 2020-2023  润新知