当前位置: 首页 > news >正文

360任意看地图网站自己设计服装的app免费

360任意看地图网站,自己设计服装的app免费,路由器当服务器做网站,陕西建设网证书查询KVM虚拟化管理平台的实现源码链接#xff1a;https://github.com/wsjhk/IaaS_admin.git视频演示链接#xff1a;https://v.youku.com/v_show/id_XMjg4MTczODU1Ng.html(N年前刚开始学习Python时做的第一个自主设计实现项目#xff0c;代码实在写的烂#xff0c;不喜勿喷https://github.com/wsjhk/IaaS_admin.git视频演示链接https://v.youku.com/v_show/id_XMjg4MTczODU1Ng.html(N年前刚开始学习Python时做的第一个自主设计实现项目代码实在写的烂不喜勿喷)根据KVM虚拟化管理的要求设计并实现网页操作管理KVM虚拟机。设计原理架构如下图所示 如上图所示前台使用python的FLASK框架实现主程序和各个功能网页通过Redis的发布订阅功能实现前台和后台的交互前台网页触发操作发布操作到Redis的channel中后台监听到操作之后触发执行对应的shell脚本文件对虚拟机进行操作包括创建虚拟机删除虚拟机开启虚拟机关闭虚拟机重启虚拟机在线修改虚拟机的内存和CPU参数在线添加和删除虚拟机磁盘以及虚拟机的在线迁移。其中KVM宿主机的操作系统制作虚拟机是基于LVM分区的快照功能实现虚拟机的快速创建和销毁。需要制作好各种操作系统的母盘。母盘的制作包括安装对应的操作系统安装VNC服务安装SSH服务并设置服务开机自启动。其中linux操作系统支持VNC和SSH两种远程方式windows操作系统只支持VNC远程也可以使用windows自带的桌面远程工具进行远程操作。以下是具体的实现1前台具体实现根据要求实现如下功能设计图前台是基于python的FLASK框架实现的Flask是一个基于Python的web框架它的设计目的是提供Web开发所需的最小功能子集。Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于它没有绑定诸如数据库查询或者表单处理等功能库以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。这种系统带来的主要好处是开发者能够使用他们想用的任何方式和工具去设计他们的应用架构。另外对于一些常见的通用功能Flask没有以某种特定方式去实现这意味着在Flask中对标准库的使用会比其他框架里多这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大所以该社区提供的添加通用功能的方式非常多。所以通过本系列教程了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于如果不需要那些额外的功能就不用引入它们这样我们的应用才会保持简洁、轻量。这种系统的最大弊端是大部分新的Flask用户不知道如何正确地规划大型应用的结构最后弄出一大堆让人难以理解和维护的代码。所以本教程另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。安装flask安装flassk很简单使用pip安装.#pip install flask本系统使用了FLASK的路由功能实现的Flask是一个WSGI应用框架这意味着我们进行Flask开发时不需要 关注网络方面的操作Flask应用的入口是封装过的网络请求包出口是 网络响应我们仅需要关注这个阶段内的处理逻辑。WSGI服务器 Flask虽然内置了简单的WSGI服务器但其性能仅仅适用于开发期的调试。Flask官网推荐了多种WSGI服务器实现方式从多进程到多线程到协程 这方面的选择我们在本课程中将不涉及。REST适应性 虽然Flask和Django一样最初的出发点都是服务端的动态网页应用。但 Flask的设计使之也相当适用于面向资源的REST架构在越来越移动化 并且单页应用越来越重要的WEB开发领域这是Flask相对于Django相当 大的优势。编写一个基于Flask的hello world相当容易1)导入Flask类from flask import FlaskFlask类是Flask框架的核心类它实现了WSGI应用规范。2)创建Flask实例app Flask(__name__)Flask构造函数的第一个参数指定一个引入名/importname。Flask框架 使用这个名字进行静态资源、模板、错误信息的定位。除非你清楚的理解它的 作用通常情况下我们总应该使用特殊变量_name。Flask实例是可调用的(具有call方法)这个实例可以直接对接 WSGI服务器。3)注册路由route(/)def index():return Hello,Flask!注册路由就是建立URL规则和处理函数之间的关联。Flask框架依赖于路由 完成HTTP请求的分发。路由中的函数被称为视图函数其返回值将作为HTTP响应的正文内容。4)对接并启动WSGI服务器Flask封装了一个简单的开发用WSGI服务器我们可以通过调用run() 启动服务器运行app.run(host0.0.0.0,port80)至此可以使用FLASK的route功能进行开发了。前台工程框架代码结构如下图所示 代码结构 其中KVM是主程序使用FLASK框架的route功能实现url的跳转访问对应的html页面。如登录后跳转到首页的关键代码app.route(/index, methods[GET,POST])def index():username request.cookies.get(username)if not username:return please login!!!islogin session.get(islogin)if request.method POST:response make_response(redirect(/vm_create))response.set_cookie(username, valueusername, max_age300)session[islogin] 1return responseelse:return render_template(index.html,usernameusername,isloginislogin)接下来是前台页面的设计登录页使用html和CSS实现如下图所示为login.html的实现登录之后跳转到首页index.html页面之后就可以使用KVM Cloud系统创建并管理操作虚拟机了。创建虚拟机页面的功能页面vm_create.html实现:然后是虚拟机列表vm_list.html的实现显示虚拟机列表和虚拟机的详细信息点击虚拟机名称可以跳转到虚拟机参数调整和操作功能vm_detail.html页面如果在vm_list.html页面点击虚拟机的console对应列的远程操作将可以页面远程并操作虚拟机如下分别是linux的VNC远程方式界面SSH远程方式界面windows的VNC远程方式界面。Linux的VNC远程Linux的SSH远程Windows的VNC远程然后是磁盘添加的实现创建虚拟磁盘disk_create.html实现输入参数之后点击创建即可创建虚拟磁盘然后跳转到磁盘列表disk_list.html页面如图可以挂在磁盘到对应的虚拟机卸载和删除磁盘。挂载之后可以通过fdisk -l命令查看虚拟机磁盘信息最后是虚拟机在线迁移功能vm_migrate.html界面的实现输入要迁移的虚拟机和要迁移的目标宿主机点击迁移即可实现虚拟机的在线迁移。迁移成功之后页面会显示类似“迁移虚拟机成功”的字样。2.1.Redis发布订阅实现原理发布订阅中使用到的命令就只有三个PUBLISH,SUBSCRIBE,PSUBSCRIBEPUBLISH 用于发布消息SUBSCRIBE 也叫频道订阅用于订阅某一特定的频道PSUBSCRIBE 也叫模式订阅用于订阅某一组频道使用glob的方式比如xxx-*可以匹配xxx-a和xxx-b,xxx-ddd等等关联操作如果已经存在订阅者则添加到链表的尾部如果没有订阅者那么创建频道然后添加订阅者删除操作找到对应的链表进行删除如果删除后链表为空则删除频道订阅模式新建一个pubsubPattern结构添加到链表的尾部退订模式查找相应的pubsubPattern然后删除发送消息将消息发送给channel频道的所有订阅者遍历整个pubsub_patterns表查找匹配的模式如果有一个或者多个模式与频道匹配将消息发送给pattern模式的订阅者相关命令查看所有的频道PUBSUB CHANNELS查询订阅者的数量PUBSUB NUMSUB查询服务器被订阅者的数量PUBSUB NUMPAT2.2.Redis安装1.)将其下载到/opt目录下解压并进入目录。2)编译源程序  make  cd src  make install PREFIX/usr/local/redis3.)接下来我们看看/usr/local/redis/bin目录下的几个文件是什么  redis-benchmarkredis性能测试工具  redis-check-aof检查aof日志的工具  redis-check-dump检查rdb日志的工具  redis-cli连接用的客户端  redis-serverredis服务进程4.)Redis的配置  daemonize如需要在后台运行把该项的值改为yes  pdifile把pid文件放在/var/run/redis.pid可以配置到其他地址bind指定redis只接收来自该IP的请求如果不设置那么将处理所有请求在生产环节中最好设置该项  port监听端口默认为6379  timeout设置客户端连接时的超时时间单位为秒loglevel等级分为4级debugrevbosenotice和warning。生产环境下一般开启notice  logfile配置log文件地址默认使用标准输出即打印在命令行终端的端口上  database设置数据库的个数默认使用的数据库是0  save设置redis进行数据库镜像的频率  rdbcompression在进行镜像备份时是否进行压缩  dbfilename镜像备份文件的文件名  dir数据库镜像备份的文件放置的路径  slaveof设置该数据库为其他数据库的从数据库  masterauth当主数据库连接需要密码验证时在这里设定  requirepass设置客户端连接后进行任何其他指定前需要使用的密码  maxclients限制同时连接的客户端数量  maxmemory设置redis能够使用的最大内存appendonly开启appendonly模式后redis会把每一次所接收到的写操作都追加到appendonly.aof文件中当redis重新启动时会从该文件恢复出之前的状态  appendfsync设置appendonly.aof文件进行同步的频率  vm_enabled是否开启虚拟内存支持  vm_swap_file设置虚拟内存的交换文件的路径vm_max_momery设置开启虚拟内存后redis将使用的最大物理内存的大小默认为0  vm_page_size设置虚拟内存页的大小  vm_pages设置交换文件的总的page数量  vm_max_thrrads设置vm IO同时使用的线程数量5)启动redis#redis-server redis.conf6)停止redis实例  /usr/local/redis/bin/redis-cli shutdown  或者  pkill redis-server7)让redis开机自启  vim /etc/rc.local  加入  /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf3.接下来是后台的具体实现后台实现包括两部分一部分是KVM宿主机环境的搭建另一部分是后台程序代码的功能实现。一、 KVM宿主机环境的搭建KVM安装配置1、准备工作1.1 关闭iptables防火墙[rootlocalhost ~]# service iptables stop //停止iptables1.2 CPU开通支持虚拟化需要在BIOS中开启虚拟化一般是默认开启的2、安装kvm虚拟机2.1) 查看CPU是否支持kvm完全虚拟机[rootlocalhost ~]# cat /proc/cpuinfo | grep vmx //Intel CPU判断方法[rootlocalhost ~]# cat /proc/cpuinfo | grep svm //AMD CPU判断方法根据对应的CPU型号进行选择判断方法如果能出现信息 就说明CPU支持KVM完全虚拟机2.2) 安装kvm和其它虚拟化所需管理软件包[rootlocalhost ~]# yum install -y kvm virt-* libvirts bridge-utils qemu-img软件包名称介绍kvm软件包中含有KVM内核模块它在默认linux内核中提供kvm管理程序libvirts安装虚拟机管理工具使用virsh等命令来管理和控制虚拟机bridge-utils设置网络网卡桥接virt-*创建、克隆虚拟机命令使用qemu命令来创建磁盘等。qemu-img安装qemu组件使用qemu命令来创建磁盘等。2.3) 加载kvm模块查看kvm模块是否被加载[rootlocalhost ~]# modprobe kvm-intel //加载kvm模块[rootlocalhost ~]# lsmod | grep kvm //查看kvm模块是否被加载2.4) 重启确认kvm是否被加载[rootlocalhost ~]# reboot //重启[rootlocalhost ~]# lsmod | grep kvm //查看kvm模块是否被加载2.5) 查看已打开虚拟机列表[rootlocalhost ~]# virsh list //查看虚拟机列表如果有的话就会显示出来2.6) 配置eth0、br0网卡[eth0网卡][rootlocalhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICEeth0HWADDR74:D4:35:87:71:02TYPEEthernetUUID723095b7-27d1-4f88-aa5f-5aa6b0472fbcONBOOTyesNM_CONTROLLEDyesBOOTPROTOnoneBRIDGEbr0[br0网卡][rootlocalhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0DEVICEbr0TYPEBridgeONBOOTyesNM_CONTROLLEDnoBOOTPROTOstaticIPADDR172.16.10.23NETMASK255.255.255.0GATEWAY172.16.10.254DNS1202.96.128.86大家可以看着我的配置来进行修改2.7) 查看目前所有的网桥接口[rootlocalhost ~]# brctl showbridge name bridge id STP enabled interfacesbr0 8000.74d435877102 no eth0virbr0 8000.5254005ce327 yes virbr0-nic(如果eth0没有挂载br0上就要使用命令#brctl addif br0 eth0 将其挂上去即可)2.8 修改VNC服务器的配置文件[rootlocalhost ~]# vim /etc/libvirt/qemu.conf将 vnc_listen 0.0.0.0 前面的#号注释去掉 //在文件的第12行2.9) 重启libvirtd和messagebus服务[rootlocalhost ~]# /etc/init.d/libvirtd restart //重启libvirtd服务Stopping libvirtd daemon: [ OK ]Starting libvirtd daemon: [ OK ](若出现重启libvirtd服务失败libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference则执行yum -y upgrade device-mapper-libs之后重启libvirtd服务即可)[rootlocalhost ~]# /etc/init.d/messagebus restart //重启messagebus服务Stopping system message bus: [ OK ]Starting system message bus: [ OK ]3、 在宿主机上创建、安装kvm虚拟机使用lvm安装虚拟机制作镜像系统。然后创建快照来备份和快速复制启动虚拟机。#vgrename /dev/kvm /dev/vg01#lvcreate -L 8G -n s_centos01 vg01#virt-install -n centos_mupan -r 2048 -vcpus1 -s 10 -c /data/iso/centos.iso --hvm --os-typelinux -f /dev/vg01/centos_mupan --bridgebr0 --graphics vnc --force --autostart #lvcreate -s -L 2G -n s_centos01 /dev/vg01/centos_mupan创建虚拟机快照之后编写kvm启动的s_centos01.xml文件指定source设备是s_centos01修改uuidmac和name。然后#virsh define s_ubuntu01.xml来启动虚拟机。#virsh start s_ubuntu01二、后台功能实现如图是代码的结构图目录结构是 以下是各Shell脚本的功能说明1) create_linux_vm_xml.sh创建linux虚拟机xml配置信息脚本将前台参数传递给给脚本脚本根据参数修改配置文件的namecpumemorymac地址启动分区等等信息。并将生产的信息写入以虚拟机名称命名的xml文件中保存到指定的文件中。2) create_window_vm_xml.sh创建windows虚拟机xml配置信息脚本将前台参数传递给给脚本脚本根据参数修改配置文件的namecpumemorymac地址启动分区等等信息。并将生产的信息写入以虚拟机名称命名的xml文件中保存到指定的文件中。3) get_running_vm_info.sh获取虚拟机当前状态列表写vm_list文件中的脚本通过系统命令和virsh命令获取虚拟机的状态然后使用awksedgrepwc和sort等工具分析提取需要的虚拟机信息组合成虚拟机前台展示的信息保存到vm_list文件中。4) start_vm_vnc.sh创建虚拟机IP的noVNC代理监听进程脚本根据vm_list文件的虚拟机信息提取出ip地址根据IP地址启动VNC的代理连接进程并后台运行改脚本每5秒钟执行一次以保证每个ip都能及时建立连接。5) delete_vm.sh删除虚拟机脚本删除虚拟机时触发的操作删除该虚拟机的状态xml配置文件和lvm快照分区的一切信息。无法恢复需谨慎操作。6) create_disk.sh创建磁盘脚本根据名称和大小的参数在系统中创建虚拟磁盘生成img镜像磁盘文件和xml磁盘配置信息将其保存到指定的文件夹中供虚拟机挂载时调用。7) get_disk_info.sh获取磁盘状态列表并写到disk_list文件中的脚本通过系统命令和virsh命令获取磁盘的状态然后使用awksedgrepwc和sort等工具分析提取需要的磁盘信息组合成磁盘前台展示的信息保存到disk_list文件中。8) mount_disk.sh挂载磁盘到虚拟机脚本通过触发参数挂载指定的磁盘到指定的虚拟机中并且改写disk_list列表文件的信息将该磁盘的状态改为挂载的虚拟机名称表示该磁盘当前正在被哪个虚拟机使用需要卸载之后才能分配给其他虚拟机使用。9) umount_disk.sh卸载磁盘脚本触发操作从指定的虚拟机中卸载该磁盘卸载之后改写disk_list文件中的信息为unuse表示未被使用的状态可以被其他虚拟机挂载使用。10)delete_disk.sh删除磁盘脚本触发操作将该磁盘删除。如果没有被挂载是未使用的状态则直接删除该磁盘的xml配置文件和img镜像文件并改写disk_list文件将其从中删除否则将磁盘从虚拟机中卸载掉之后删除该磁盘的xml配置文件和img镜像文件并改写disk_list文件将其从中删除。11)migrate.sh迁移虚拟机脚本触发操作传递虚拟机和目标宿主机作为参数执行虚拟机的在线迁移操作需要在目标宿主机中有同样路径和名称的虚拟机分区磁盘如果没有则会使用lvm命令创建指定的分区之后再做迁移操作。12)RedisHelper.pyredis连接python脚本创建python程序和redis的连接并创建channel监听通过该连接进行信息的发布和订阅实现前后台的信息交互实时性强。13)KVM.py后台python主监听进程脚本监听redis订阅前台发布的信息之后判断执行脚本触发操作并将操作的结果通过redis发布信息到chaneel中反馈给前台是实现信息的交互。其中主程序文件是KVM.py文件实现监听Redis并执行shell脚本返回结果发布到Redis中。vm_info.list文件记录了创建虚拟机时的状态信息列表vm_list文件记录了虚拟机当前在KVM宿主机的状态列表。Disk_list文件记录了磁盘的状态信息列表。如下#cat vm_info.listxp01 1 2048000 10 Windows_xp runningcentos 1 2048000 10 Linux_CentOS running#cat vm_listcentos|192.168.0.105|1|2048000|centos|runningxp01|192.168.0.133|1|2048000|winxp|running#cat vm_listsdb|10|unuse其次前台页面VNC远程虚拟机需要在宿主机安装noVNC程序做代理建立连接代理到虚拟机的VNC服务端口才可以在页面实现websockity的访问。以下是建立连接代理的监听脚本start_vm_vnc.sh虚拟机母盘制作都默认使用5901作为VNC服务的监听端口页面的SSH远程访问Linux使用了shellinabox开源工具实现在linux母盘中安装并设置开机启动即可基于母盘创建的虚拟也会有了。Shellinabox安装如下部署shellinabox1) 安装依赖#yum install git openssl-devel pam-devel zlib-devel autoconf automake libtool2)获取源代码#git clone https://github.com/shellinabox/shellinabox.git cd shellinabox3)生成编译配置信息#autoreconf -i4)配置和编译#./configure make5)安装#make install6)配置生成安全证书#openssl genrsa -des3 -out my.key 1024#openssl req -new -key my.key -out my.csr#cp my.key my.key.org#openssl rsa -in my.key.org -out my.key#openssl x509 -req -days 3650 -in my.csr -signkey my.key -out my.crt#cat my.crt my.key certificate.pem7)启动#/usr/local/bin/shellinaboxd -c /root -u root -b#/usr/local/bin/shellinaboxd --disable-ssl -c /root -u root -b(不使用https)8)查看监听端口#netstat -ntpl |grep 42009)查看监听进程#ps -ef |grep shell10)浏览器访问https://ip:4200至此KVM虚拟化管理系统前后台实现完成。
http://www.sadfv.cn/news/14493/

相关文章:

  • 广州响应式网站建设视频图站主题 wordpress
  • 我做的网站怎么是危险网站中国市场调查网
  • 营销型网站的域名金沙洲网站建设工作室
  • 网站app建设如何做wordpress文章页
  • 常州淄博网站优化厦门的网站建设公司哪家好
  • 网站打开慢什么原因市场监督管理局简称
  • 做外贸需要自己建网站吗怎么做微信网页制作
  • 重庆网站建设论坛合肥专门做网站
  • 怎样做支付网站天津网站建设吐鲁番地区
  • 大兴安岭网站推广wordpress付费阅读全文
  • 企业网站建设费用记入什么科目网站建设论文html格式
  • 找论文的免费网站ip加端口可以做网站吗
  • 韶关哪里做网站seo sem是什么
  • 网站建设常用单词php网站开发设计要求
  • 做英文网站可以申请补贴吗榆林国贸网站建设
  • 企业网站设计素材重庆宣传片制作
  • 网站网站开发需要多少钱东莞网站建设报价
  • 拍宣传片找什么公司石家庄谷歌seo公司
  • 洛阳建设企业网站公司北京网站制作南昌
  • 音乐网站的设计与开发在线logo制作
  • 怎样用手机建个人网站每个网站都有服务器吗
  • 莉莉卡是哪个网站做的做网站笔记本
  • 提供专业网站小程序开发在线制作图标
  • p2p视频网站建设深圳网站建设制作公司
  • 网站 域名seo优化顾问
  • 青浦网站建设 迎鑫中国建设银行 网站登录
  • 为什么不推荐免费建站wordpress 静态地址
  • 个人网站怎么做淘宝客建设工程合同性质上属于实践合同
  • 二级域名查询网站ps做网页
  • 如何建网站吗?泉州网站快速排名提升