Linux系统基础:Linux的基础知识内容和命令使用,以及用户和权限等核心知识点,同时还需要了解Linux进程、资源、任务、文件、软件包、磁盘等管理方法。
网络服务:服务方式有很多,每家公司是不同的,基础的服务肯定需要掌握,比如说FTP、DNS、SAMBA、邮件等,其中LAMP和LNMP是必须掌握的,不仅要搭建,还需要熟悉里面的配置。
shell脚本以及编程语言:shell脚本基本用法以及进阶,从基础到精通,需要学习一些企业级常见脚本用法,编程语言可以选择python。
MySQL数据库:Linux用得最多的就是MySQL,增删改查必须精通,其他方面略懂就可以了。
运维监控:云计算运维自动化ansible、puppet等运维自动化解决方案,企业级云计算0penstack Keystone、Glance、 Nova核心组件、网络模块、块存储服务等。
运维需要掌握的技术有:Linux系统基础、网络服务、shell脚本和另一个脚本语言、sed和awk工具、文本处理命令、数据库、数据库、监控工具、集群和热备、数据备份。
1、Linux系统基础
是基础中的基础,参考书籍,至少要掌握这书60%内容,没必须全部掌握。
2、网络服务
服务有很多种,每间公司都会用到不同的,LAMP和LNMP是必须要熟练。nginx和apache要熟悉,特别是nginx一定要很熟悉才行,有些公司还会用tomcat。
3、shell脚本和另一个脚本语言。
shell是运维人员必须具备的,学python会比较好,难实现自动化运维,perl是文本处理很强大,这两个学一个就行了。
4、sed和awk工具
必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤WEB内容时十分有用。
5、文本处理命令
sort、tr、cut、paste、uniq、tee等,必学,也是结合第3点时一并学习的。
6、数据库
首选mysql,因为Linux用得最多绝对是mysql,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。
7、防火墙
防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
8、监控工具
有cacti、nagios、zabbix、Prometheus,企业用得最多应该是nagios和zabbix。
1、Linux系统基础
严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。但是,修改后的程序必须遵循GPL协议。
Linux 是一个多用户多任务的操作系统,也是一款自由软件,完全兼容POSIX标准,拥有良好的用户界面,支持多种处理器架构,移植方便。
为程序分配系统资源,处理计算机内部细节的软件叫做操作系统或者内核。如果你希望详细了解操作系统的概念,请查看操作系统教程。
用户通过Shell与Linux内核交互。Shell是一个命令行解释工具(是一个软件),它将用户输入的命令转换为内核能够理解的语言(命令)。
2、网络服务
服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行。
其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。
这面2点只是基础,也是必要条件,不能说是工具,下以才是真正的要掌握的工具。
3、shell脚本和另一个脚本语言。
shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些系统管理脚本,最简单也得写个监控CPU,内存比率的脚本吧,这是最最最基本了。别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义,写系统脚本才是最有意义。
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行 。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
Linux提供了像MicrosoftWindows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供了很多桌面环境系统,其操作就像Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。GNOME。
每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。
同Linux本身一样,Shell也有多种不同的版本。主要有下列版本的Shell:
Bourne Shell:是贝尔实验室开发的。
BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。
Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
C Shell:是SUN公司Shell的BSD版本。
Z Shell:The last shell you’ll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。
而另一个脚本语言是可选的,一般是3P,即Python,Perl和PHP,PHP就不需要考虑了,除非你要做开发,我个人建议学Python会比较好,不难实现自动化运维,Perl是文本处理很强大,反正这两个学一个就行了。
4、sed和awk工具
必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,这个就痛苦了,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤WEB内容时十分有用,不过在学shell的同时一般会经常结合用到的,所以学第3点就会顺便学第4点。
5、文本处理命令
sort , tr , cut, paste, uniq, tee等,必学,也是结合第3点时一并学习的。
6、数据库
首选MySQL,别问我为什么不学SQL Server和Oracle,因为Linux用得最多绝对是MySQL。增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
7、防火墙
不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则。如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而Filter表用得最多,反正不学就肯定不合格。
8、监控工具
十分十分重要,我个人建议,最好学这3个,cacti,nagios,zabbix。企业用得最多应该是nagios和 zabbix,反正都学吧,但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。
9、集群和热备
这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰。集群工具有很多,最好学是LVS,这是必学,最好也学学nginx集群,反向代理。还有热备,这个就更多工具能实现了,像我公司是自己开发热备工具的,MySQL热备也要学,就是主从复制,这个别告诉我容易,其实不容易的,要学懂整个流程一点也不容易,只照着做根本没意思。
10、数据备份
不学不行,工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar, dump, rsync等,最好多了解一下。
第一阶段:初级入门
初级阶段需要把linux运维学习路线搞清楚,任何学习都是循序渐进的,所以学linux运维也是需要有一定的路线。
1、Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、file、mkdir等常见操作命令)。
2、Linux用户及权限基础
3、Linux系统进程管理进阶。
4、linux高效文本、文件处理命令(vim、grep、sed、awk、find等命令)。
5、shell脚本入门(可边练习边学习)。
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1、TCP/IP网络基础(差不多CCNA、NP的知识就够用)。
2、Linux企业常用服务(如dns、http、ftp、mail、nfs等)。
3、Linux企业级安全原理和防范技巧(系统性能/安全、安全威胁模型和保护方法。
4、加密/解密原理及数据安全、系统服务访问控制及服务安全基础。
5、iptables安全策略构建。
6、shell脚本进阶(主要是结合一些应用,写一些案例)。
7、MySQL应用原理及管理入门(能管理和搭建一个个人博客站点)。
第三阶段:高级提升
1、http服务代理缓存加速(其中主要学习varnish、nginx缓存系统,要对CDN的知识有所了解。)。
2、企业级负载集群(其中主要学习nginx、haproxy、lvs要对主要知识熟练掌握,对负载均衡算法有清晰认识)。
3、企业级高可用集群 (其中需要对keepalived,heartbeat等进行深入讲解)。
4、运维监控zabbix详解(主要是zabbix、cacti、nagios等监控系统,现在用的比较多的是zabbix)。
5、运维自动化学习(需要学一些开源运维自动化工具的使用如ansible、puppet、cobbler等运维自动化工具)。
第四阶段:资深方向进阶
1、 大数据方向(需要对hadoop、storm等常见开源大数据系统需要深入了解)。
2、 云计算方向(主要是openstack这套东西,当然像一些kvm等虚拟化技术,也是需要掌握的,现在docker也比较流行)。
3、 运维开发(主要是python运维开发)。
4、 自动化运维(在之前自动化基础上做深入)。
5、 运维架构师(主要需要广度,差不多5年左右以上经验,可以担当此职位)。
Linux运维是一个融合多学科的综合性技术岗位,完全精通Linux运维之后可以从事多个岗位的工作,可以满足不同人群的需求,具体岗位如下:
1、Linux运维工程师:主要负责产品运维的工作,具有一定的开发能力,需要深入了解业务内容,能够判断系统架构的优缺点对比,对业务的掌握也决定了运维工程师的未来发展前景。
2、数据库工程师:是一个非常重要的岗位,也是公司非常重视的职位,主要包含数据库内核、云数据库等,长远的发展可以从事技术专家、数据库架构师等职位。
3、Linux研究工程师:该职业是专门研究运维相关通用平台和技术,需要具有一定的产品运维经验和需求,对研发能力要求也是比较高的,长远发展可以从事技术专家方面的工作。
4、Linux运维总监:该岗位属于管理岗位,对于人员要求需要具备丰富的运维经验,同时需要具备协调和推进能力,拥有一定的技术基础。
5、云平台开发:现在大的云平台基本都是基于Linux的KVM的,国内国外很多大公司都在使用Linux,门槛要求很高,需要掌握的知识也有很多。