目录

Linux的用户管理

Yum 命令

Python

SELinux

vsftpd

etcd

Session、Cookie、Token

LNMP

VMware

Docker

Kubernetes(K8S)


Centos

CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。

我本地是在VM里安装的Centos,安装的时候最常用的有三种安装方式的选择,最小化安装是不带有任何界面的,但是可以选择配套安装的软件。对于GUI和GNOME,貌似只选择父目录是没什么区别,但是每个父目录下的子目录程序是不一样的。我选择是仅GNOME安装。

最小化安装

最小化安装了,开机启动是命令行模式,也没关系,可以做如下修改:

1.在命令行下输入下面的命令来安装 Gnome 包

sudo  yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

2.更新系统的运行级别

自动进入图形界面,那么我们需要更改系统的运行级别,输入下面的命令来启用图形界面。

sudo ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

3.重启系统

当系统再次启动的时候,就会默认进入图形界面

这里注意:如果是最小化安装,那么默认登陆的时候直接可以选择是root登录还是非root登录,只要输入账号就行,但是带有图形化界面的安装,默认登录用户是非root,所以需要切换账号。切换方法:输入英文 su -以及root的密码即可切换为root用户

 Server with GUI

GNOME

CentOS独有的yum命令支持在线升级,可以即时更新系统,我安装的是CentOS-7-x86_64-DVD-1804,CentOS在在线安装VM Tools的时候遇到一些问题:

1.首先是在现在下,通过虚拟光驱找到VMTools的iso文件位置,双击打开后可以看到

2.将这个压缩包有xftp工具拷贝到虚拟机中的某个目录下,然后运行tar,命令解压

3.如果进入到解压后的路径中,直接运行./vmware-install.pl会遇到各种问题:

bash:./vmware-install.pl :/usr/bin/perl:bad interpreter:No such file or directory

解决办法安装perl

yum -y install perl

What is the location of the “ifconfig” program on your machine?
解决办法,请安装ifconfig,重新执行vmware-install.pl

yum search ifconfig
yum install net-tools.x86_64

The path “” is not a valid path to the 3.10.0-957.el7.x86_64 kernel headers.
Would you like to change it? [yes]
INPUT: [yes] default
运行以下两条命令

yum -y install perl gcc make kernel-headers kernel-develyum -y install kernel-devel-$(uname -r)

VMware的网络连接模式有三种:
1、仅主机模式:也就是host_only,这种模式仅仅只让虚拟机与本地物理机通信,不可以上网;

2、NAT模式:这种模式保留仅主机模式的功能下,还能让虚拟机上网;

虚拟机在物理机的一个子网中,虚拟机的地址是内网地址,虚拟机所有上网都是借助物理机NAT功能把内网IP转换成外网IP,因此对外面网络上花花绿绿的机器来说,看到的永远只是外网IP。

类似于我现在一个笔记本、一个手机都是通过家用路由器上网,一个192.168.1.2,一个192.168.1.3,但是对百度来说,它所看到的源IP绝对不是这个,而是经过路由器转换后的电信提供的公网IP。百度无法从这一个IP判断是我的笔记本还是手机在上网。

NAT模式下注意问题:

  • 虚拟机和电脑主机是可以互相ping通的,如果电脑主机可以ping通虚拟机,但是虚拟机不可以ping通电脑主机,那么多数情况是电脑主机的防火墙打开了,进行关闭即可。

  • 虚拟机不能ping通互联网外网的ip。

设置虚拟NAT网卡的网关地址和本机虚拟网卡的网关地址一样,设置虚拟机的网络配置

  • 可以ping通外网的ip但是ping不通域名

在/etc/resolv.conf文件里追加以下内容:

3、桥接模式:直接让虚拟机使用本地主机的网卡上网。

虚拟机和物理机同等地位,相当于你同事和你的电脑,物理机上虚拟网卡VM0相当于交换机(集线器),一头连到了家用路由器,另外N头接所有需要上网的电脑。所以虚拟机的网络配置和物理机保持一模一样。

Linux的用户管理

配置文件:

用户信息文件:/etc/passwd
密码文件:/etc/shadow
用户组文件:/etc/group
用户组密码文件:/etc/gshadow

/etc/passwd   文件格式解析(7个字段)

root:x:0:0:root:/root:/bin/bash

用户名:密码位:UID(用户标识号):GID(缺省组标识号):描述信息:宿主目录:命令解释器(使用的 shell,默认为bash)

Linux用户的分类:

  • 超级用户:(root,UID=0)
  • 普通用户:(UID在500到60000)
  • 伪用户:(UID在1到499)

伪用户:

1、伪用户与系统和程序服务相关

bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户

mail、news、games、apache、ftp、mysql及sshd等,与Linux 系统的进程相关

2、伪用户通常不需要或无法登录系统

3、可以没有宿主目录

/etc/group 文件格式  共4个字段

root:x:0:root

sys:x:3:root,bin,adm

组名:组密码位:GID:组成员(组内所有用户列表,用逗号隔开)

用户和组管理的命令详解

RPM命令

在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证。

rpm -qa | grep tomcat4 查看 tomcat4 是否被安装;
rpm -i example.rpm 安装 example.rpm 包;rpm -e 需要卸载的安装包
在卸载之前,通常需要使用rpm -q …命令查出需要卸载的安装包名称。
举例如下:
rpm -e tomcat4 卸载 tomcat4 软件包

Yum 命令

yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基于 RPM ( Red-Hat Package Manager 红帽软件包管理器 )包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装,可以是在线版,也可以是本地版。

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum 语法

yum [options] [command] [package ...]
  • options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

Python

Linux下源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,在源码路径下使用命令./configure –help输出详细的选项列表,如下:


很多的选项,你可以忽略其他的一切,但请把--prefix加上。这里以安装python3为例,我们打算把它安装到目录/usr/local/python3,于是在python3目录执行带选项的脚本./configure --prefix=/usr/local/python3执行成功后再编译、安装(make,make install);安装完成将自动生成目录python3而且该软件所有的文件都被复制到这个目录。

./configure --prefix=/usr/local/python3

为什么要指定这个安装目录?是为了以后的维护方便,如果没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,很难弄清楚到底复制了那些文件、都复制到哪里去了—基本上是一塌糊涂。

用了--prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。

SELinux

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统 。SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。可以看看这篇文章介绍:一文彻底明白linux中的selinux到底是什么

vsftpd

vsftpd 是“very secure FTP daemon”的缩写,如果你只想搭建一个性质简单的FTP,——尤其是匿名下载FTP——我认为是vsftpd是Linux平台下最好的选择。安全性是vsftpd的一个最大的特点它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。

etcd

在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音。

etcd是一个高可用的键值存储系统,使用一致性哈希算法(Raft)在分布式环境下的 key/value 存储服务,主要用于共享配置和服务发现。具有以下特点:

  • 简单:基于HTTP+JSON的API让你用curl就可以轻松使用。
  • 安全:可选SSL客户认证机制。
  • 快速:每个实例每秒支持一千次写操作。
  • 可信:使用Raft算法充分实现了分布式。

Session、Cookie、Token

很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。

但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的,所以想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字串,每个人收到的都不一样, 每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了!

当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用户数据,验证成功后在服务器端写入session数据,向客户端浏览器返回sessionid,浏览器将sessionid保存在cookie中,当用户再次访问服务器时,会携带sessionid,服务器会拿着sessionid从服务器获取session数据,然后进行用户信息查询,查询到,就会将查询到的用户信息返回,从而实现状态保持。

这样大家很嗨皮了,可是服务器就不嗨皮了,每个人只需要保存自己的session id,而服务器要保存所有人的session id !如果访问服务器多了, 就得由成千上万,甚至几十万个,这对服务器说是一个巨大的开销 , 严重的限制了服务器扩展能力, 比如说我用两个机器组成了一个集群, 小F通过机器A登录了系统, 那session id会保存在机器A上, 假设小F的下一次请求被转发到机器B怎么办?机器B可没有小F的 session id啊。

有时候会采用一点小伎俩: session sticky , 就是让小F的请求一直粘连在机器A上, 但是这也不管用, 要是机器A挂掉了, 还得转到机器B去。那只好做session 的复制了, 把session id 在两个机器之间搬来搬去, 快累死了。

后来有个叫Memcached的支了招:把session id 集中存储到一个地方,也就是cookie中, 所有的机器都来访问这个地方的数据, 这样一来,就不用复制了, 但是增加了单点失败的可能性, 要是那个负责session 的机器挂了, 所有人都得重新登录一遍, 估计得被人骂死!

也尝试把这个单点的机器也搞出集群,增加可靠性, 但不管如何, 这小小的session 对我来说是一个沉重的负担,于是有人就一直在思考, 我为什么要保存这可恶的session呢, 只让每个客户端去保存该多好?

可是如果不保存这些session id , 怎么验证客户端发给我的session id 的确是我生成的呢? 如果不去验证,我们都不知道他们是不是合法登录的用户, 那些不怀好意的家伙们就可以伪造session id , 为所欲为了。

嗯,对了,关键点就是验证 !

比如说, 小F已经登录了系统, 我给他发一个令牌(token), 里边包含了小F的 user id, 下一次小F 再次通过Http 请求访问我的时候, 把这个token 通过Http header 带过来不就可以了。不过这和session id没有本质区别啊, 任何人都可以可以伪造, 所以我得想点儿办法, 让别人伪造不了。

那就对数据做一个签名吧, 比如说我用HMAC-SHA256 算法,加上一个只有我才知道的密钥, 对数据做一个签名, 把这个签名和数据一起作为token , 由于密钥别人不知道, 就无法伪造token了。

这个token 我不保存, 当小F把这个token 给我发过来的时候,我再用同样的HMAC-SHA256 算法和同样的密钥,对数据再计算一次签名, 和token 中的签名做个比较, 如果相同, 我就知道小F已经登录过了,并且可以直接取到小F的user id , 如果不相同, 数据部分肯定被人篡改过, 我就告诉发送者:对不起,没有认证。

Token 中的数据是明文保存的(虽然我会用Base64做下编码, 但那不是加密), 还是可以被别人看到的, 所以我不能在其中保存像密码这样的敏感信息。当然, 如果一个人的token 被别人偷走了, 那我也没办法, 我也会认为小偷就是合法用户, 这其实和一个人的session id 被别人偷走是一样的。

这样一来, 我就不保存session id 了, 我只是生成token , 然后验证token , 我用我的CPU计算时间获取了我的session 存储空间 !解除了session id这个负担, 可以说是无事一身轻, 我的机器集群现在可以轻松地做水平扩展, 用户访问量增大, 直接加机器就行。这种无状态的感觉实在是太好了!

基于Token的身份验证的过程如下:

  1. 用户通过用户名和密码发送请求。
  2. 程序验证。
  3. 程序返回一个签名的token 给客户端。
  4. 客户端储存token,并且每次用于每次发送请求。
  5. 服务端验证token并返回数据。

每一次请求都需要token。token应该在HTTP的头部发送从而保证了Http请求无状态。我们同样通过设置服务器属性Access-Control-Allow-Origin:* ,让服务器能接受到来自所有域的请求。

Cookie
cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

LNMP

Linux+Nginx+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。

LNMP是一个CS架构的平台(Client/Server架构, 即客户端/服务器架构),web客户端基于TCP/IP通过http协议发起传送这个请求可能是动态的也可能是静态的,所有的服务器通过发起请求的后缀来判断,如果是静态的就由web服务器自己处理,然后将资源发给客户端。如果请求是动态的这时web服务器会通过FastCGI协议发给php,通过php模块去MySQL拿数据在通过Nginx交给客户端。

WordPress是使用PHP语言开发的内容管理系统

  • 内容管理系统,英文叫做 Content Management System(CMS)。
  • WordPress是全球最多人使用的,免费开源的建站程序。

VMware

VMware Workstation是基于OS的虚拟OS资源的虚拟化工具,它能将OS闲置的资源加以充分利用,如果你的这台OS机器性能足够好,可以通过VMware Workstation创建DNS,DHCP,Apache等许多服务器,一个机子运行多个服务,节省了许多开支,这个作用是虚拟化所共有的特点。

因为生活中我们常常用它来虚拟实验环境,我们大多数的人就把它当做一种用于玩操作系统的工具,这么理解是有偏差的。

VMware vSphere则是一种虚拟化方案包括很多东西,其核心是ESXi,ESXi独立安装在裸机上的操作系统(注意它不基于任何OS,它本身就是OS),通过它物理机的硬件资源被虚拟化为虚拟资源,之后再通过vCenter就能将安装了ESXi操作系统的物理机的资源进行整合,化为一个总的资源池,在这个资源池里面我们为各个部门划分不同大小的资源池方便其使用。

准确来说这两个不属于一个概念

VMware Workstation是一个基于OS的软件,而VMware vSphere则是根据企业的实际情况设计的一个虚拟化方案,它设计的软件,技术和要考虑的问题都要比VMware Workstation要多,要详细,要具体。

简单来说

VMware Workstation是一款基于OS的虚拟化软件

VMware vSphere则是一个具体的虚拟化方案

(一)云计算技术学习--基础概念相关推荐

  1. 深度学习入门——深度学习基础概念思维导图

    深度学习基础概念的思维导图,思维导图又叫心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表 ...

  2. 强化学习——基础概念

    强化学习--基础概念 一.强化学习问题的提出 奖励 Reward 环境 Environment 状态 State 二.智能体 Agent 策略 Policy 价值函数 Value function 模 ...

  3. 云计算是什么意思,还是先了解一下云计算技术的基本概念

    云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变.云计算描述了一种基于互联网的新的IT服务增加.使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源.云其实 ...

  4. 网络技术学习基础篇。

    提示:大多以华为为例.真难学艹 前言 记录我学习网络技术,希望对大家有所帮助. 目录 第一章.基础知识 第一节,计算机网络概述 1,定义: 2,基本功能: 3,类型: 4,网络简介 5,网络设备的架构 ...

  5. 【强化学习】从强化学习基础概念开始

    在开始探索强化学习的诸多算法之前,我们先来了解一下它所涉及到的具体概念.这些概念将作为基石,一直陪伴着我们的学习之旅.为了能够将这些概念熟记在心,我们这一期做成强化学习概念小卡片,一张一张给大家展示和 ...

  6. PixiJS学习 基础概念

    介绍 简介 Pixi是一款速度极快的2D Sprite渲染引擎.那是什么意思?这意味着它可以帮助您显示,制作和管理交互式图形,以便使用JavaScript和其他HTML5技术轻松制作动画,游戏和一些其 ...

  7. 深度学习——深度学习基础概念

    摘要 本文将针对与深度学习的平台的这样的一个理解和实战这样的一个理解.这是一个系列的课程.我将一直更新有关于的paddle的开发和学习.Paddle包括众多方面.目标检测.文字识别.图像分类.图像分割 ...

  8. (七)云计算技术学习--OpenStack之Cinder和Swift

    目录 一.存储知识 1.存储技术 2.存储方式 二.Cinder介绍 1.Cinder核心组件 2.Cinder设计思想 三.Swift介绍 1.Swift工作组件 2. Swift数据模型 3.Sw ...

  9. qml基础学习 基础概念

    一.概括 学习qt已有2年多的时间,从qt4.7开始使用直到现在正在使用的qt5.6,基本都在windows机器上做开发.最近有意向看了下qt的qml部分,觉着还是挺不错的,毕竟可以做嵌入式移动端产品 ...

最新文章

  1. 广东海洋大学数学与计算机学院校友会,数学与计算机学院召开2020级研究生入学教育会...
  2. mysql 回滚 前滚_Oracle 实例恢复时 前滚 后滚说明
  3. Javaweb异常提示信息统一处理
  4. 关于64位WIN7下正确建立JAVA开发环境(转
  5. php获取表单后如何保存到数据库中,php – 如何将数据从HTML表单保存到WordPress中的数据库表?...
  6. Django从理论到实战(part21)--自定义模板过滤器
  7. oracle一体机flash卡,PCIe Flash卡设备的测试
  8. Elon Musk: The mind behind Tesla, SpaceX, SolarCity
  9. java记录类加载的个数_java类加载过程 - audience_1的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. HPUX11.31环境下,更换HBA卡后的配置操作(HP-UX)
  11. 前端date format_前端面试-手撕代码篇
  12. EasyUI组件使用
  13. linux刻录文件,Linux命令行下刻录CD-ROM数据光盘详细过程
  14. 搭建本地LNMP开发环境(2.5)-安装vim
  15. php面向对象特性(一)
  16. 求两个有序单链表的并交集
  17. SQL Server 2008 R2 学习总结
  18. 高通MSM8953处理器(CPU)/骁龙625资料介绍
  19. svn执行Cleanup总是提示cleanup failed的解决方法
  20. 设置 Scite编辑器的默认编辑为 UTF-8 ,及其他一些参数配置

热门文章

  1. linux smb nfs iscsi,Proxmox VE(PVE)添加nfs/smb/iscsi/NTFS做储存
  2. ANSYS Maxwell电压源激励设置以及MotorCAD激励设置
  3. 在excel中如何复制公式而保持引用位置不变-相对引用与绝对引用
  4. python 数据挖掘 培训视频下利用Pandas进行数据清洗
  5. 财务估值建模完整指南第四讲——第五届CVA财务估值精英计划
  6. 第四章 绘图 windows程序设计 王艳平版
  7. 多思计组实验实验五、程序计数器实验
  8. java服务架构 之MGW(美团点评高性能四层负载均衡)
  9. 怎么才能压缩PDF文件?这两种压缩方法大家都在用
  10. Antlr4入门(三)如何编写语法文件