分类: 系统运维
2016-07-11 14:50:40
随着互联网行业的高速发展,运维从业人员也逐步扩展,本篇的目的是让大家快速了解运维的基础知识篇,目前学习运维基础类的书籍很多,比如:鸟哥私房菜系列,但是万变不离其宗,任何学习都是从最基础的概念开始的,所以我们在学习如何运维之前,我们需要先了解下面3大问题:
1. 什么是linux?
2. 什么是linux系统运维(职业)?
3. 从哪里获取linux?
linux是一个操作系统,一个开源的免费的遵循GPL协议的操作系统,一个目前互联网公司服务器广泛使用的操作系统,一个多任务多用户的系统,一个运行非常稳定的系统。
linux有很多的分支(又叫发行版),常见的大概有:
Redhat(红帽子)公司: Redhat AS及Fedora
Centos 公司: Centos 系列
SUSE 公司: OpenSUSE系列
Debian 公司: Debian 系列
Ubuntu 公司: ubuntu 系列
其中Redhat/centos/suse使用YUM/rpm包管理模式,Debian/ubuntu使用的是apt-get/dpkg包管理模式。
备注说明:
Linux其他的发行版还有很多,比如:Arch Linux、Tails、Gentoo等。另外在服务器中还会经常遇到一些UNIX和类UNIX系统,比如:AIX,Solaris,FreeBSD等。
这里需要了解的是UNIX比Linux出现的更早,可以说Linux是从UNIX中衍生出来的,各大厂商的UNIX系统都是收费系统,一般搭载特殊的厂商硬件才能很好的工作,比如:AIX一般搭配IBM公司的POWER系列的小型机,由于目前小型机硬件成本和维护成本都很高,目前互联网企业使用的非常少,一般只有在一些金融行业的公司才能看见。
关于linux的一些小知识:
起源:
其实Linux也是一种类UNIX,在1991年10月5日, 上午11时53分,由一个名为Linus Torvalds的芬兰大学生带头开发的作业系统,为了纪念这个创始人,所以这种方式类UNIX被成为Linux(Linus's Minix)。
自由软件基金会:
FSF(Free Software Foundation)是一个致力于推广自由软件的美国民间非营利性组织。
它于1985年10月由理查德·斯托曼建立,其主要工作是执行GNU计划,开发更多的自由软件。
GNU:
一个自由的操作系统,其内容软件完全以GPL方式发布。该系统的基本组成包括:
GNU编译器套装(GCC)
GNU的C库(glibc)
以及GNU核心工具组(coreutils)另外也是GNU除错器(GDB)
GNU二进制实用程序(binutils)的GNU Bash shell
GNOME桌面环境
GPL:
GNU通用公共许可协议(英语:GNU General Public License,缩写:GNU GPL、GPL),是一个被广泛使用的自由软件许可协议条款,保证终端用户运行、学习、分享(复制)及编辑软件之自由。
需要了解的GPL协议的权限和限制:
授予的权利:
此GPL的条款和条件适用于任何收到GPL下的作品的人(即“许可证接受人”)。任何接受这些条款和条件的许可证接受人都有修改、复制、再发行作品或作品的演绎版本的授权。许可证接受人可以对此项服务收取费用 ,反之亦然。这一点是GPL与其他禁止商业用途的自由软件许可证最大的不同。Stallman认为自由软件不应限制其商业用途,同时GPL清楚地说明了这一点。但GPL又规定发行者不能限制GPL授予的权利。例如,这禁止对软件在单纯沉默(消极默示)式协议或合同下的发行。GPL下的发行者同时也同意在软件中使用的专利可以在其它GPL软件中使用。
Copyleft:
GPL不会授予许可证接受人无限的权利。再发行权的授予需要许可证接受人开放软件的源代码,及所有修改。且复制件、修改版本,都必须以GPL为许可证。这些要求就是copyleft,它的基础就是作品在法律上版权所有。由于它版权所有,许可证接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软件违反了GPL(比如不开放源代码),他就有可能被原作者起诉。
copyleft利用版权法来达到与其相反的目的:copyleft给人不可剥夺的权利,而不是版权法所规定的诸多限制。这也是GPL被称作“被黑的版权法”的原因。许多GPL软件发行者都把源代码与可执行程序捆绑起来。另一方式就是以物理介质(比如CD)为载体提供源代码。在实践中,许多GPL软件都是在互联网上发行的,源代码也有许多可以FTP方式得到。
copyleft只在程序再发行时发生效力。对软件的修改可以不公开或开放源代码,只要不发行。注意copyleft只对软件有效力,而对软件的输出并无效力(除非输出的是软件本身)。不过这在GPL版本3中可能会有改动。
简单的说:
1.你可以自由的下载遵循GPL的软件并随便使用
2.你可以随便的将下载的遵循GPL的软件复制给别人,不管是通过光盘、网络还是U盘都可以。
3.你可以随便修改遵循GPL的软件代码,并生成新的发行版,但是新生成的发行版也必须遵循GPL协议。
4.你不可以修改一个遵循GPL协议的软件代码,生成新的不遵循GPL协议的软件。
5.你不可以将遵循GPL协议的软件进行商业用途(通常指单纯的贩卖)
运维职业也就是我们通常说的运维工程师(Operating System Engineer)、linux系统管理员,简称Ops,实际上运维是对技术类运营维护人员的统称。
运维人员的职责:
根据业务需要规划信息、网络、服务,通过网络监控、事件预警、业务调度、排障升级等技术手段,使服务处于长期稳定可用状态。
核心目标[第一法则]:
使业务处于稳定的可用状态
从这里我们可以看到运维的一切都是为了业务稳定可用,只有业务稳定了才能去谈管理、优化,其实管理和优化的目标也是为了保障业务稳定可用。
按工作对象分工,一般可以分为:
IT 运维 :一般负责公司内网IT设备或者机房的基础环境运维
网络运维 :一般负责网络设备的管理
业务运维(应用运维):主要是针对应用层的一些管理
运维开发 (opsdev/devops):新兴的一个岗位,为了协调运维和开发之间的矛盾,提高运维和开发的工作效率。
备注说明:
由于运维开发是一个比较流行而且新兴崛起的职业,很多人对这个职业都不是很了解,这里重点介绍下这个职业的概念和特点已经需要的技能树。
运维开发职业(opsdev/devops)目前很多时候我们所知道的有2类:devops或opsdev,前者叫开发型运维,后者叫运维型开发,实际上运维开发这个职业通常指的运维型开发也就是opsdev。
通常的定义:
一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例,透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
工作重点:
透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠
职业理解:
由于传统的公司开发和运维都是分开的,所以在沟通上,代码发布上效率很低,而且流程复杂,特别是在现在大多数公司都采用敏捷方式开发的情况下,频繁的发布会导致运维和开发冲突加剧,在这种背景下提出了运维开发这个方法,它是一套针对这几个部门间沟通与协作问题的流程和方法。
运维开发不是简单的代码发布,也不是一个简单的web平台,另外也不是所有公司都必须用到运维开发,引用对象维基百科解释:
1.使用敏捷或其他软件开发过程与方法
2.业务负责人要求加快产品交付的速率
3.虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍
4.数据中心自动化技术和配置管理工具的普及
5.有一种观点认为,目前占主导地位的“传统”美国式管理风格(“斯隆模型 vs 丰田模型”)会导致“烟囱式自动化”,从而造成开发与运营之间的鸿沟,因此需要DevOps能力来克服由此引发的问题。
职业现状:
目前各大公司都有这个职业,而且很多新兴的创业公司也都大肆招聘这个职业,但是很多时候,我们的理解的运维开发都是开发一套公司WEB自动化代码发布平台,造成这个原因很多,主要是传统的运维一般写代码能力很差,所以会写自动化平台就叫运维开发,
另外由于潜规则上写这个平台都是用python,因此这个职业就变成了会python语言写web平台的运维,这种理解就让这个职业逐渐偏离了职业初衷,按照这个职业的初衷,一个合格的运维开发需要的经验树,我个人觉得如下:
1.必须做过运维(2-3年)
2.必须做过开发(1-2年)
3.应该做过项目经理(1-2年)
运维开发其实就是运维、开发、项目经理的一个综合体,开发web管理平台只是运维开发技能树中的一个小技能而已。
看看一则老外招聘OpsDev的技能要求:
从这里我们可以大概看到运维开发的几个关键技能:
IT行业的基础设施自动化管理或开发经验(运维)
有强大的代码或脚本编写能力(开发、运维)
熟悉构建工具(项目管理、开发)
熟悉持续集成工具(项目管理、开发、运维)
熟悉版本管理工具(项目管理、开发)
熟悉数据中心、网络工程、信息安全这些知识(项目管理、运维)
其他管理方面的知识和技能(项目管理、运维、开发)
从这里我们也可以看到运维开发其实就是一个集项目管理、运维、开发的综合体。
我们了解了什么是Linux,什么是运维之后,我们需要知道我们如何获取这些Linux发行版,常用的linux发行版都可以从下面地址获取:
Redhat
Centos
Debian
Ubuntu
获取这些发行版需要根据自己的喜好、业务特点,选择一个合适的发行版。另外,还有一个我们需要注意的地方,选择linux的版本时不是越新越好,我个人认为什么最合适,什么就是你应该选择的。
本篇主要是介绍了学习运维需要最先了解的3个问题,并且在这3个问题中,稍微介绍了一些相关的小常识,了解了这些后,建议大家登陆到各个发行版网站好好看看每个发行版的特点以及版本,挑选一个自己喜欢的版本,建议初学者从Centos6.X和Ubuntu开始,另外如果想快速提高,建议把自己的笔记本电脑安装成Ubuntu Desktop系统,这样会更快更直接的了解Linux与Windows的区别,快速的熟悉Linux的操作。