demon

OpenStack操作笔记(2)--- keystone安装配置

拈花ヽ惹草 提交于 2020-10-12 11:29:14
OpenStack --- 安装keystone认证服务(在控制节点执行) keystone 功能:为认证管理、授权管理、服务目录管理提供单点整合 认证---账户密码 授权---权限管理 服务目录---记录各个服务的访问入口=各个服务都可从keystone这个入口进入(个人理解) 1、建立数据库并授权 2、安装配置组件 依次执行上述五步 3、配置HTTP 启动服务并声明环境变量 可将上面一长串的环境变量保存在一个文件中,必要时只需. filename即可,或者写入profile文件中 4、创建域、项目、用户和角色 openstack domain create --description "an example domain" example #创建域 openstack project create --domain default --description "service project" service #在此项目下专门存放系统用户,如glance、cinder\nova等 openstack project create --domain default --description "Demon Project" myproject #创建项目 openstack user create --domain default --password-prompt myuser

什么是Docker?看这一篇干货文章就够了!

﹥>﹥吖頭↗ 提交于 2020-08-19 17:28:31
作为程序员我们应怎样理解docker? 容器技术的起源 假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条,程序员自己 从头到尾搭建了一套环境 开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测试同学开始 从头到尾搭建这套环境 ,测试过程中出现问题程序员也不用担心,大可以一脸无辜的撒娇,“明明在人家的环境上可以运行的”。 测试同学测完后终于可以上线了,这时运维同学又要重新 从头到尾搭建这套环境 ,费了九牛二虎之力搭建好环境开始上线,糟糕,上线系统就崩溃了,这时心理素质好的程序员又可以施展演技了,“明明在人家的环境上可以运行的”。 从整个过程可以看到,不但我们重复搭建了三套环境还要迫使程序员转行演员浪费表演才华,典型的浪费时间和效率,聪明的程序员是永远不会满足现状的,因此又到了程序员改变世界的时候了,容器技术应运而生。 有的同学可能会说:“等等,先别改变世界,我们有虚拟机啊,VMware好用的飞起,先搭好一套虚拟机环境然后给测试和运维clone出来不就可以了吗?” 在没有容器技术之前,这确实是一个好办法,只不过这个办法还没有那么好。 先科普一下,现在云计算其底层的基石就是虚拟机技术,云计算厂商买回来一堆硬件搭建好数据中心后使用虚拟机技术就可以将硬件资源进行切分了,比如可以切分出100台虚拟机,这样就可以卖给很多用户了。 你可能会想这个办法为什么不好呢?

PHP7是如何实现多进程的?

扶醉桌前 提交于 2020-08-17 08:59:10
我们都知道PHP是单进程执行的,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,但PHP实现多进程也意义重大,尤其是在后台Cli模式下处理大量数据或运行后台DEMON守护进程时,多进程的优势不用多说。 要实现PHP的多进程,我们需要两个扩展 pcntl 和 posix,安装方法这里不再赘述。 在php中我们使用pcntl_fork()来创建多进程(在*NIX系统的C语言编程中,已有进程通过调用fork函数来产生新的进程)。fork出来新进程则成为子进程,原进程则成为父进程,子进程拥有父进程的副本。这里要注意: • 子进程与父进程共享程序正文段 • 子进程拥有父进程的数据空间和堆、栈的副本,注意是副本,不是共享 • 父进程和子进程将继续执行fork之后的程序代码 • fork之后,是父进程先执行还是子进程先执行无法确认,取决于系统调度(取决于信仰) 这里说子进程拥有父进程数据空间以及堆、栈的副本,实际上,在大多数的实现中也并不是真正的完全副本。更多是采用了COW(Copy On Write)即写时复制的技术来节约存储空间。简单来说,如果父进程和子进程都不修改这些 数据、堆、栈 的话,那么父进程和子进程则是暂时共享同一份 数据、堆、栈。只有当父进程或者子进程试图对 数据、堆、栈 进行修改的时候,才会产生复制操作,这就叫做写时复制。 在调用完pcntl_fork

Python基础教程:一次性搞定 Django Form

白昼怎懂夜的黑 提交于 2020-05-02 04:07:42
最近在项目上用到了 Django 的自带的 Form 表单,遇到了一些坑,今天给大家出的这篇 Python基础教程 也是做了一个简单的总结,大家可以对号出坑。 Form 基础介绍 首先让我们先来了解下 Django 中 Form 表单的基本用法。Django 中提供了两种 Form 表单类型,一种是 forms.Form ,另外一种是 forms.ModelForm 。很明显,一种是普通的 Form 表单类型,另外一种是和 Model 有关联的表单类型。官方文档中是这样来介绍 ModelForm 的: If you’re building a database-driven app, chances are you’ll have forms that map closely to Django models. For instance, you might have a BlogComment model, and you want to create a form that lets people submit comments. In this case, it would be redundant to define the field types in your form, because you’ve already defined the fields in your

linux运维、架构之路-Docker架构原理

柔情痞子 提交于 2020-05-01 09:50:19
一、Docker架构原理介绍 Docker使用了C/S架构,客户端与守护进程通信,Docker守护进程负责构建,运行和分发Docker容器。Docker客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程。Docker客户端和守护进程使用REST API通过UNIX套接字或网络接口进行通信。 二、Docker介绍 Docker的英文翻译是”搬运工“的意思,他搬运的东西就是我们常说的集装箱Container,Container里面装的是任意类型的App,我们的开发人员可以通过Docker 将App变成一种标准化的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。Docker和虚拟机比较类似,只是更加轻量级,更加方便使用。 1、Docker和虚拟机区别: 虚拟化技术依赖的是物理CPU和内存,是硬件级别的;而Docker是构建在操作系统层面的,利用操作系统的容器化技术,所以Docker同样的可以运行在虚拟机上面。 虚拟机中的系统就是我们常说的操作系统镜像,比较复杂;而Docker比较轻量级,我们可以使用Docker部署一个独立的Redis,就像类似于在虚拟机当中安装一个Redis应用,但是我们用Docker部署的应用是完全隔离的。 在传统的虚拟化技术是通过快照来保存的;而Docker引用了类似于源码的管理机制

C++虚函数与纯虚函数用法与区别

坚强是说给别人听的谎言 提交于 2020-04-29 13:27:56
C++虚函数与纯虚函数用法与区别(转) 1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。    2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class)只有声明而没有定义。 3. 虚函数和纯虚函数都可以在子类(sub class)中被重载,以多态的形式被调用。 4. 虚函数和纯虚函数通常存在于抽象基类(abstract base class -ABC)之中,被继承的子类重载,目的是提供一个统一的接口。 5. 虚函数的定义形式:virtual {method body}   纯虚函数的定义形式:virtual { } = 0; 在虚函数和纯虚函数的定义中不能有static标识符,原因很简单,被static修饰的函数在编译时候要求前期bind,然而虚函数却是动态绑定(run-time bind),而且被两者修饰的函数生命周期(life recycle)也不一样。 6. 虚函数必须实现,如果不实现,编译器将报错,错误提示为: error LNK****: unresolved external

C++虚函数和纯虚函数的用法和区别

早过忘川 提交于 2020-04-29 13:25:32
C++虚函数与纯虚函数用法与区别(转) 1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。    2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class)只有声明而没有定义。 3. 虚函数和纯虚函数都可以在子类(sub class)中被重载,以多态的形式被调用。 4. 虚函数和纯虚函数通常存在于抽象基类(abstract base class -ABC)之中,被继承的子类重载,目的是提供一个统一的接口。 5. 虚函数的定义形式:virtual {method body}   纯虚函数的定义形式:virtual { } = 0; 在虚函数和纯虚函数的定义中不能有static标识符,原因很简单,被static修饰的函数在编译时候要求前期bind,然而虚函数却是动态绑定(run-time bind),而且被两者修饰的函数生命周期(life recycle)也不一样。 6. 虚函数必须实现,如果不实现,编译器将报错,错误提示为: error LNK****: unresolved external