其他分享
首页 > 其他分享> > KVM

KVM

作者:互联网

KVM

虚拟化介绍

虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。
物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。
那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?
这个主要是通过一个叫做 Hypervisor 的程序实现的。

根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:

全虚拟化
半虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型

理论上讲:
全虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比半虚拟化要高;
半虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM

KVM介绍

kVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。
KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。
那 IO 的虚拟化,比如存储和网络设备则是由 Linux 内核与Qemu来实现。
作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。
大家在网上看 KVM 相关文章的时候肯定经常会看到 Libvirt 这个东西。
Libvirt 就是 KVM 的管理工具。
其实,Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。

KVM部署

(一块网卡nat部署)

关机添加一块网络适配器
选择处理器开启cpu所有选项
在这里插入图片描述
关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
reboot

配置网络源

cd /etc//yum.repos.d/
curl -o /etc/yum.repos.d/CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo
sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo
yum -y install epel-release vim wget net-tools unzip zip gcc gcc-c++

验证CPU是否支持KVM;如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的

[root@gongxue ~]# egrep -o 'vmx|svm' /proc/cpuinfo 
vmx

kvm安装

安装依赖包
[root@gongxue ~]# yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils libguestfs-tools

启动服务
[root@gongxue ~]# systemctl start libvirtd
[root@gongxue ~]# systemctl enable libvirtd

检验安装结果
[root@gongxue ~]# lsmod|grep kvm
kvm_intel             170086  0 
kvm                   566340  1 kvm_intel
irqbypass              13503  1 kvm
[root@gongxue ~]# virsh -c qemu:///system list
 Id    Name                           State
----------------------------------------------------

查看安装版本
[root@gongxue ~]# virsh --version
4.5.0
[root@gongxue ~]# virt-install --version
1.5.0

软连接
[root@gongxue ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
[root@gongxue ~]# ll /usr/bin/qemu-kvm
lrwxrwxrwx 1 root root 21 Mar 11 22:48 /usr/bin/qemu-kvm -> /usr/libexec/qemu-kvm
[root@gongxue ~]# lsmod |grep kvm
kvm_intel             170086  0 
kvm                   566340  1 kvm_intel
irqbypass              13503  1 kvm

查看网桥信息
[root@gongxue ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c294c8c36	no		ens32
virbr0		8000.525400540121	yes		virbr0-nic

kvm web管理界面安装

安装依赖包
[root@gongxue ~]# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx python-devel

升级pip
[root@gongxue ~]# pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/d8/f3/413bab4ff08e1fc4828dfc59996d721917df8e8583ea85385d51125dceff/pip-19.0.3-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 62kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.2
    Uninstalling pip-8.1.2:
      Successfully uninstalled pip-8.1.2
Successfully installed pip-19.0.3

从github上下载webvirtmgr代码
[root@gongxue ~]# cd /usr/local/src/
[root@gongxue src]# ls
[root@gongxue src]# git clone git://github.com/retspen/webvirtmgr.git
Cloning into 'webvirtmgr'...
remote: Enumerating objects: 5614, done.
remote: Total 5614 (delta 0), reused 0 (delta 0), pack-reused 5614
Receiving objects: 100% (5614/5614), 2.98 MiB | 389.00 KiB/s, done.
Resolving deltas: 100% (3602/3602), done.

安装webvirtmgr
[root@gongxue src]# cd webvirtmgr/
[root@gongxue webvirtmgr]# pip install -r requirements.txt
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Collecting django==1.5.5 (from -r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/38/49/93511c5d3367b6b21fc2995a0e53399721afc15e4cd6eb57be879ae13ad4/Django-1.5.5.tar.gz (8.1MB)
    100% |████████████████████████████████| 8.1MB 103kB/s 
Collecting gunicorn==19.5.0 (from -r requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/f9/4e/f4076a1a57fc1e75edc0828db365cfa9005f9f6b4a51b489ae39a91eb4be/gunicorn-19.5.0-py2.py3-none-any.whl (113kB)
    100% |████████████████████████████████| 122kB 105kB/s 
Collecting lockfile>=0.9 (from -r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl
Installing collected packages: django, gunicorn, lockfile
  Running setup.py install for django ... done
Successfully installed django-1.5.5 gunicorn-19.5.0 lockfile-0.12.2

检查sqlite3是否安装
python -c 'import sqlite3'
[root@gongxue webvirtmgr]# python
Python 2.7.5 (default, Oct 30 2018, 23:45:53) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> exit()

初始化帐号信息
[root@gongxue ~]# cd /usr/local/src/webvirtmgr/
[root@gongxue webvirtmgr]# python manage.py syncdb
WARNING:root:No local_settings file found.
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table servers_compute
Creating table instance_instance
Creating table create_flavor

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes //问你是否创建超级管理员帐号
Username (leave blank to use 'root'): gx  //指定超级管理员帐号用户名,默认留空为root
Email address: 123@1.com  //设置超级管理员邮箱
Password:   //设置超级管理员密码
Password (again):   //再次输入超级管理员密码
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 6 object(s) from 1 fixture(s)

拷贝到web目录
[root@gongxue ~]# cd /usr/local/src/
[root@gongxue src]# ls
webvirtmgr
[root@gongxue src]# cp -r webvirtmgr/ /usr/local/nginx/html/
[root@gongxue src]# chown -R nginx.nginx /usr/local/nginx/html/webvirtmgr/
[root@gongxue src]# ll /usr/local/nginx/html/
total 12
-rw-r--r--.  1 root  root   537 Mar  8 01:27 50x.html
-rw-r--r--.  1 root  root   612 Mar  8 01:27 index.html.bak
drwxr-xr-x  20 nginx nginx 4096 Mar 12 01:39 webvirtmgr

生成密钥

[root@gongxue ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nxdPghxql5K+8mzum6wzQ+wF/uOrWAqRtC1G30Vntz8 root@gongxue
The key's randomart image is:
+---[RSA 2048]----+
|        . o .    |
|       . o . .   |
|  o     . . .    |
| o = ... + + .   |
|  * oo..S = o E  |
| . o  +o.+ . = . |
|  .  o.o. o . .  |
|   . +*o+o .     |
|    o o&%+       |
+----[SHA256]-----+

由于这里webvirtmgr和kvm服务部署在同一台机器,所以这里本地信任。如果kvm部署在其他机器,那么这个是它的ip
[root@gongxue ~]# ssh-copy-id 192.168.72.33
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.72.9 (192.168.72.33)' can't be established.
ECDSA key fingerprint is SHA256:YwaD1meeKdO7ivAg6Uzgdvnjnvjc8NT+sgJsvgS2wmU.
ECDSA key fingerprint is MD5:8e:7c:b8:a0:64:5b:72:f5:7e:43:3d:21:9e:07:49:4e.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.72.33's password:   //这里是自己root本地密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.72.33'"
and check to make sure that only the key(s) you wanted were added.

配置端口转发
[root@gongxue ~]# ssh 192.168.72.33 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:60
Last login: Mon Mar 11 22:54:53 2019 from 192.168.72.1
[root@gongxue ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      50           *:139                      *:*                  
LISTEN     0      128          *:111                      *:*                  
LISTEN     0      128          *:80                       *:*                  
LISTEN     0      5      192.168.122.1:53                       *:*                  
LISTEN     0      128          *:22                       *:*                  
LISTEN     0      100    127.0.0.1:25                       *:*                  
LISTEN     0      128    127.0.0.1:6010                     *:*                  
LISTEN     0      128    127.0.0.1:6011                     *:*                  
LISTEN     0      50           *:445                      *:*                  
LISTEN     0      128    127.0.0.1:6080                     *:*                  
LISTEN     0      128    127.0.0.1:8000                     *:*                  
LISTEN     0      50          :::139                     :::*                  
LISTEN     0      128         :::111                     :::*                  
LISTEN     0      128         :::22                      :::*                  
LISTEN     0      100        ::1:25                      :::*                  
LISTEN     0      128        ::1:6010                    :::*                  
LISTEN     0      128        ::1:6011                    :::*                  
LISTEN     0      50          :::445                     :::*                  
LISTEN     0      128        ::1:6080                    :::*                  
LISTEN     0      128        ::1:8000                    :::*    

配置nginx

[root@gongxue ~]# vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
worker_rlimit_nofile 655350;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

[root@gongxue ~]# vim /etc/nginx/conf.d/webvirtmgr.conf
[root@gongxue ~]# cat /etc/nginx/conf.d/webvirtmgr.conf
server {
    listen 80 default_server;

    server_name $hostname;
    #access_log /var/log/nginx/webvirtmgr_access_log;

    location /static/ {
        root /usr/local/nginx/html/webvirtmgr/webvirtmgr;
        expires max;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Proto $remote_addr;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        client_max_body_size 1024M;
    }
}

确保bind绑定的是本机的8000端口
[root@gongxue ~]# vim /usr/local/nginx/html/webvirtmgr/conf/gunicorn.conf.py
bind = '0.0.0.0:8000'   //确保此处绑定的是本机的8000端口,这个在nginx配置中定义了,被代理的端口
backlog = 2048

重启nginx服务
[root@gongxue ~]# nginx -s stop
[root@gongxue ~]# nginx 
[root@gongxue ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      50           *:139                      *:*                  
LISTEN     0      128          *:111                      *:*                  
LISTEN     0      128          *:80                       *:*                  
LISTEN     0      5      192.168.122.1:53                       *:*                  
LISTEN     0      128          *:22                       *:*                  
LISTEN     0      100    127.0.0.1:25                       *:*                  
LISTEN     0      128    127.0.0.1:6010                     *:*                  
LISTEN     0      128    127.0.0.1:6011                     *:*                  
LISTEN     0      50           *:445                      *:*                  
LISTEN     0      50          :::139                     :::*                  
LISTEN     0      128         :::111                     :::*                  
LISTEN     0      128         :::22                      :::*                  
LISTEN     0      100        ::1:25                      :::*                  
LISTEN     0      128        ::1:6010                    :::*                  
LISTEN     0      128        ::1:6011                    :::*                  
LISTEN     0      50          :::445                     :::*         

设置supervisor

[root@gongxue ~]# vim /etc/supervisord.conf
在末尾添加如下:
[program:webvirtmgr]
command=/usr/bin/python2 /usr/share/nginx/html/webvirtmgr/manage.py run_gunicorn -c /usr/share/nginx/html/webvirtmgr/conf/gunicorn.conf.py
directory=/usr/share/nginx/html/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx

[program:webvirtmgr-console]
command=/usr/bin/python2 /usr/share/nginx/html/webvirtmgr/console/webvirtmgr-console
directory=/usr/share/nginx/html/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx


启动supervisor并设置开机自启
[root@gongxue ~]# systemctl start supervisord
[root@gongxue ~]# systemctl enable supervisord
Created symlink from /etc/systemd/system/multi-user.target.wants/supervisord.service to /usr/lib/systemd/system/supervisord.service.
[root@gongxue ~]# systemctl status supervisord
● supervisord.service - Process Monitoring and Control Daemon
   Loaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-03-12 00:50:14 CST; 21s ago
 Main PID: 3415 (supervisord)
   CGroup: /system.slice/supervisord.service
           ├─3415 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.co...
           ├─3416 /usr/bin/python2 /var/www/webvirtmgr/console/webvirtmgr-con...
           ├─3417 /usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn...
           ├─3423 /usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn...
           ├─3424 /usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn...
           └─3425 /usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn...

Mar 12 00:50:14 gongxue systemd[1]: Starting Process Monitoring and Control.....
Mar 12 00:50:14 gongxue systemd[1]: Started Process Monitoring and Control ...n.
Hint: Some lines were ellipsized, use -l to show in full.
[root@gongxue ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      50           *:139                      *:*                  
LISTEN     0      128          *:111                      *:*                  
LISTEN     0      128          *:80                       *:*                  
LISTEN     0      5      192.168.122.1:53                       *:*                  
LISTEN     0      128          *:22                       *:*                  
LISTEN     0      100    127.0.0.1:25                       *:*                  
LISTEN     0      128    127.0.0.1:6010                     *:*                  
LISTEN     0      128    127.0.0.1:6011                     *:*                  
LISTEN     0      50           *:445                      *:*                  
LISTEN     0      128    127.0.0.1:8000                     *:*                  
LISTEN     0      100          *:6080                     *:*                  
LISTEN     0      50          :::139                     :::*                  
LISTEN     0      128         :::111                     :::*                  
LISTEN     0      128         :::22                      :::*                  
LISTEN     0      100        ::1:25                      :::*                  
LISTEN     0      128        ::1:6010                    :::*                  
LISTEN     0      128        ::1:6011                    :::*                  
LISTEN     0      50          :::445                     :::*            

配置nginx用户

如果有这个目录的话可不用创建
grep nginx cat /etc/passwd

没有如下创建:
[root@gongxue ~]# cd /home/
[root@gongxue home]# mkdir nginx
[root@gongxue home]# chown -R nginx.nginx nginx/
[root@gongxue home]# chmod -R 700 nginx/
[root@gongxue home]# su - nginx -s /bin/bas
base64      basename    bash        bashbug     bashbug-64  
[root@gongxue home]# su - nginx -s /bin/bash
-bash-4.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nginx/.ssh/id_rsa): 
Created directory '/home/nginx/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/nginx/.ssh/id_rsa.
Your public key has been saved in /home/nginx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gTpzNIn/ig2hBKZFGwdp8NAhQLL2l0WJzdiZX+Ovk8I nginx@gongxue
The key's randomart image is:
+---[RSA 2048]----+
|O+=+. *.+        |
|.*++ +.X   o     |
|o++ . =.o o .    |
|+o.  +o. o .     |
|. ..=oo S   .    |
| . ..= .     .   |
|  . .   o   o    |
|     + . E +     |
|    . o   . .    |
+----[SHA256]-----+
-bash-4.2$ touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config
-bash-4.2$ chmod 0600 ~/.ssh/config
-bash-4.2$ ssh-copy-id root@192.168.72.33
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/nginx/.ssh/id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Warning: Permanently added '192.168.72.33' (ECDSA) to the list of known hosts.
root@192.168.72.33's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.72.33'"
and check to make sure that only the key(s) you wanted were added.

-bash-4.2$ exit

[root@gongxue ~]# vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access]
Identity=unix-user:root
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
[root@gongxue ~]# chown -R root.root /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[root@gongxue ~]#systemctl restart nginx
[root@gongxue ~]# systemctl restart libvirtd

在这里插入图片描述添加存储
在这里插入图片描述在这里插入图片描述
添加镜像

[root@localhost ~]# cd /var/lib/libvirt/images/
[root@localhost images]# ls
rhel-server-7.4-x86_64-dvd.iso

创建系统安装镜像
在这里插入图片描述添加成功
在这里插入图片描述

kvm网路管理

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述插入光盘(点击连接)
在这里插入图片描述设置在 web 上访问虚拟机的密码
在这里插入图片描述
启动虚拟机
在这里插入图片描述在这里插入图片描述

用xshell连接图形化界面
安装x-manager
在xsell上建立新会话(点击隧道)
在这里插入图片描述在这里插入图片描述

修改英文
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# LANG=zh_us.UTF-8
连接
[root@localhost ~]# virt-manager
[root@localhost ~]# libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

(virt-manager:3314): Gtk-WARNING **: 11:54:37.470: Locale not supported by C library.
	Using the fallback 'C' locale.

在这里插入图片描述

故障案例

web界面配置完成后可能会出现以下错误界面
在这里插入图片描述

[root@localhost ~]# yum -y install novnc

[root@localhost ~]# ll /etc/rc.local 
lrwxrwxrwx. 1 root root 13 Mar 12  2019 /etc/rc.local -> rc.d/rc.local
[root@localhost ~]# ll /etc/rc.d/rc.local 
-rw-r--r--. 1 root root 473 Jun 27  2017 /etc/rc.d/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@localhost ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 473 Jun 27  2017 /etc/rc.d/rc.local
[root@localhost ~]# vim /etc/rc.d/rc.local
	nohup novnc_server 192.168.72.33:5920 &
[root@localhost ~]# . /etc/rc.d/rc.local

在这里插入图片描述

VMware ESXi 安装过程介绍

在vmware安装虚拟机
镜像使用
在这里插入图片描述
在这里插入图片描述
选择上面安装
在这里插入图片描述
在这里插入图片描述根据提示按enter
在这里插入图片描述
根据提示按F11(fn)
在这里插入图片描述在这里插入图片描述在这里插入图片描述设置root密码
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述安装完成
在这里插入图片描述

安装客户机

选择下面这个应用程序在这里插入图片描述
安装好双击程序
填写上面获取的ip和设置的root密码
在这里插入图片描述证书警告忽略即可
在这里插入图片描述在vSphere Client 中启动虚拟机创建进程

你可使用创建新的虚拟机向导创建要置于vSphere 清单中的虚拟机。可以从vSphere Client 打开该向导。在“即将完成”页面上单击完成后,你在新建虚拟机向导中进行的选择才会保存。如果未完成所有任务就取消向导,则你不能将向导恢复到取消的位置。你必须启动新的创建任务。可以在数据中心、主机、群集、资源池或虚拟机文件夹中创建新虚拟机。

点击清单
在这里插入图片描述创建虚拟机
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述编辑虚拟机
在这里插入图片描述上传镜像(右击红箭头处)
在这里插入图片描述在这里插入图片描述在这里插入图片描述在“虚拟机编辑设置”→“CD/DVD”→“浏览
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
启动虚拟机
在这里插入图片描述在这里插入图片描述在这里插入图片描述

标签:KVM,nginx,gongxue,usr,root,webvirtmgr,LISTEN
来源: https://blog.csdn.net/weixin_44433260/article/details/88392597