别意外,Linux运维我真的不建议你从命令行学起!
最近,由于公司业务扩展,需要招聘很多运维人员,我面试了很多人,几天面试下来,也没招到几个人,但通过这几天的面试,我发现了一些共同点。
一部分面试者,虽然都有3-5年工作经验,但技术水平跟刚毕业的学生差不多,基础的技术问题基本都答不上来;而另一部分面试者,刚好相反,刚毕业没多久,但理论能力、实践能力很强,综合技术能力很高,技术已经能独当一面。为什么会产生这两种截然不同的现象呢?大家看看我跟他们的一些对话实录,应该能悟出一点缘由。
1、为什么他可以通过我的面试?
有个面试者,已经工作5年了,我问他:你们的服务器都部署在什么系统上呢?他回答:部署在windows系统上,我又问他:我们招聘的是Linux方面的运维人员,他回答说:Linux我学过,还报过班,但因为工作中用的不多,所以呢,学了不少,基本也忘差不多了。
为了验证他的Linux掌握度,我让他在一个虚拟机上源码编译一个nginx,然后再通过rpm包安装一个mysql库,这位面试者说,以前都做过,但是时间很长没做了,都忘记了,我说没关系,可以开卷考试,可以网上查资料操作。
我给了他半个小时,两个最简单的安装操作,都没有搞定。
另一个面试者是个刚毕业的小伙子,一开始呢,我不知道他刚毕业,就问他:用Linux多久了,都做过什么项目?小伙子回答说:用Linux 2年多了,使用Linux做过NAS存储项目,做过堡垒机、路由器、防火墙;一看这位面试者做过这么多项目,我当时感觉有点吹牛了,于是,也让他上机做了一个实战操作,问题还是上面那个面试者的题目,没想到不到5分钟的时间,nginx和mysql的安装配置都搞定了。
我很好奇,就问这个小伙子,你刚毕业,没有工作经验,怎么动手操作这么熟练,这个小伙子说了两个字:兴趣。
他说自己对Linux比较感兴趣,大二就开始学习了,最初呢,就是从做网站、博客开始学linux的,刚学Linux的时候,没有Linux环境,自己就去买了几台云服务器,然后学着在服务器上安装部署各种软件,例如nginx、php、mysql、redis、zabbix等,然后做好了网站,再去申请个域名,弄个证书,这样一个网站就做起来了。
这个小伙子滔滔不绝的说了自己做网站的乐趣,我当时在想,很多学Linux的人都觉得学习的时候没有练手机会、没有项目可做,那这个同学说的做网站,做博客,不就是一个练手的项目吗?
做博客是为了记录、汇总自己学习的知识,可没想到,做博客的过程就是一个学Linux的过程。
说到学习,相信每个人都努力过,但大多数人因为一些客观原因(没项目环境,没时间),不但浪费了钱财,也浪费了不少时间。
我在运维这行已经有10多年了,今天呢,我将自己多年来学习Linux的心得与感受与大家一起分享下,希望能给爱好Linux的朋友们或者Linux的同行们一点意见和建议,一点经验心得与大家共勉!
2、动起来!兴趣是最好的老师
首先,学习一种技术最好的方法就是练习,练习,练习。这句话说起来容易,但做起来,确实难,那么坚持下来的秘诀只有两个字:兴趣。
兴趣是一件让我们干起来由衷的高兴的事情。学Linux并不需要你具有超人的能力,更不需要你具备高学历,你只需要按照自己的意愿动手去做,做出点什么东西。
做什么东西并不重要,重要的是你找到东西动手去做。我所认识的那些优秀的运维同行,他们都有各自不同的学习”动机”。有些人喜欢网络,所以,他们将Linux做成一个路由器或者防火墙;有些人喜欢做网站,他们就将自己的Linux服务器变成了一个web服务器;有些人喜欢看美剧,他们就将自己的Linux服务器做成了一个视频点播系统。
看到了吧,Linux能干的事情很多,只要你有兴趣,任何兴趣点都可以作为一个独立的项目,让你练手。让所有这些“优秀运维人”统一起来的唯一因素就是:他们全因为生活中的某些兴趣而为Linux着迷,继而花大量的时间学Linux,做大量的、大量的用于练习的项目。
3、Linux化境,从博客开始练手
很多学Linux的新手,不知道从哪里入手,学了很多乏味、无聊的知识,不知道用在什么地方,那么现在,我给你一个谁都可以练手的项目,就是从做自己的第一个博客开始。
做一个博客,首先,需要你有一台Linux服务器,如果你没有服务器,掏个几十块钱在阿里云或者华为云等,购买一台学习机,要学习,这点投入还是必要的。然后就是在服务器上部署nginx、mysql、php、jdk等基础软件,这是运行一个网站的基础环境。最后是博客程序,这个最简单,网上免费到到处都是,不需要自己去开发,例如,你喜欢php的话,可以选用wordpress,这是最流行的博客系统,如果你对java语言感兴趣,那么可以选择halo,这是java语言最流行的博客系统。
有了博客程序,有了网站运行环境,博客基本就搭建起来了,但是要让自己的博客能够放到互联网上让每个人看到,还需要有个公网的IP地址、一个博客域名,如果要保证博客安全,还需要申请一个ssl证书。
这里需要的公网IP、域名、证书,都可以在公有云平台获取,例如阿里云、腾讯云、华为云等。
现在博客已经可以通过域名访问了,但是,你可能还需要了解自己的博客有多少人看了,自己的服务器运行是否正常,所以,你还需要部署一个监控系统,来时刻了解你的服务器、你的网站的运行状态,要部署监控系统,推荐zabbix,部署简单,功能强大。
如果你的博客分享的文章很好,那么可能变得非常流行,访问的人也会越来越多,此时,单台服务器可能没法满足用户的访问请求,那么还需要给你的网站部署负载均衡,将访问流量分担到多台服务器上去。这个时候,你需要用到负载均衡集群技术,例如LVS、haproxy、keepalived等。
看似一个简单的网站,要真正的稳定、高效运行起来,一点都不简单,那么,做一个博客都涉及到运维中的哪些技术呢,我把上面做网站过程应用到的技术做成了一个技术图谱,如下图所示:
看完这个技术图谱,你已经不知不觉中,学到了Linux运维将近80%的知识点。也就是说,如果你能搭建并维护好自己的一个博客系统,那么你已经掌握了运维80%的知识了,而在实际的企业运维环境中,所做的工作,也基本就是上面这张图中的内容。
学习是枯燥的,一味的看书、看视频效果并不好,在学习过程中,通过一些有趣、好玩的项目进行练手,学习可以达到事半功倍的效果。
4、最强Linux学习修炼图谱
最后呢,再给新手同学们分享下学习Linux的知识图谱,很多小白其实对Linux并不了解,只知道它是个开源操作系统,有一个内核,仅此而已,那么,要学linux,是不是只学Linux这个系统本身就行了呢?当然不是!
我们说,Linux只是一个底层系统而已,在这个系统之上运行的各种应用程序,组成了Linux的生态链,这些都是需要我们学习的。从整体是来说,学习Linux有两个方向,分别是运维和开发,方向不同,学习的内容也不同。下图是Linux的两个学习方向:
从上图中可以看出,运维方向又分为6个方向:系统运维,自动化运维、数据库运维,大数据运维,网络运维,云计算运维等,但学习的知识点基本相同,只是偏向性不同而已。
那么,Linux运维方向,都要学习哪些知识点?请看下图:
最后,再说下开发方向,开发主要有两个方向:应用开发和底层开发,这个方向只需要懂几门语言,根据开发需求文档,基本就可以工作了,他不需要有太多工作经验,虽然入门简单,但是,开发方向属于吃青春饭岗位,主要拼的就是体力,大家可能听说,国内大厂公司都劝退35岁以上的员工,这里劝退的其实就是干开发的。
所以,大家要从事Linux相关的工作,我的建议是,从事Linux运维行业,运维行业拼的是经验,年纪越大,你的经验会越多,根本不存在35岁淘汰的说法,我在这行也从来没有感受到35岁的危机。但,这句话是有前提的,就是你要在运维这个行业有持续学习的能力,如果你35岁了,还是25岁的技术能力,那当然也会被淘汰。
说了这么多,其实我的目的是想告诉大家,如果你想学习Linux,你需要动手去做东西!现在就去。不要找任何借口。
做东西是最好的学习方法。
从头到尾读一遍技术书籍是一件很无聊的事,读到一半你可能就读不下去了。但是,如果你要做一个项目的话,你在做项目的过程中就会知道你该学习哪些知识,这是认识和掌握知识更有效的途径。
对于渴望提升技术水平的运维人和想进入运维行业的技术爱好者,51CTO官方携手16年一线Linux运维大牛高俊峰(南非蚂蚁),深度结合国内一线互联网公司的“高级运维工程师”用人需求推出这套课程:《Linux运维8天实战营》。
本课程侧重实战+实用,力在让学员通过学习高频热门的Linux运维工具技术,在实操演练和技术干货中了解运维技术图谱和职业发展路径,获得一份清晰的运维职业生涯规划。