全国协议5人面授小班,企业级独立开发考核,零基础的软硬件工程师基地

登录/注册
当前位置:首页  >   > 零基础怎么才能学好运维云计算?

零基础怎么才能学好运维云计算?

来源:汉码未来
发布人:xqq
时间: 2024-11-27 22:14:55 1711417071

一、开篇浅谈

我写下零基础学运维的系统学习路线吧。零基础怎么学云计算?Linux运维人员必备什么技能?现在是云计算时代,越来越多的企业将自己的业务迁移到云上,庞大的数据、架构让运维工程师成为香饽饽,想要从事云计算运维的人也不断增多。

 

你首先要考虑一个问题:Linux运维工程师必须掌握的基础技能有哪些?分析各大招聘网站的技能要求,通常包含这些内容:

 

Linux基础:包括对Linux整体的理解/使用和基本命令;

运维相关的工具(命令):了解它能解决很多问题;

基础服务:LAMPLNMPApacheNginxMySQLPerl LAMPFTP;

脚本:必须掌握Shell脚本、额外掌握PythonPerl;

网络、安全:TCP/IP协议、tcpdump抓包工具、防火墙配置,如iptables ipset

需求决定方向,知道Linux运维人员需要掌握的技能之后,我们就可以考虑如何去快速学习。自学和参加培训班之间的优劣已经众所周知,自学成本低、效率低且缺乏实战练习,参加培训花费大、效率高且有较多项目练习助你积累经验。

 

如果你不知道如何去选择,不妨结合自己的基础水平以及最终目标去考虑。如果你没有基础、想要快速入门、高效率学习且想要成为实用型人才,参加专业培训是明智的,技术大牛带你一站式搞定不可思议的云计算运维技术。

 

二、Linux云计算(系统运维)工程师系统学习路线

接下来给大家介绍一下Linux云计算工程师(也叫系统运维工程师)的学习路线,按照这份路线发展你将会成为一个年薪50万的专业技术人员(一线城市)。

 

第一阶段:初级入门

初级阶段需要把linux运维学习路线搞清楚,任何学习都是循序渐进的,所以学linux运维也是需要有一定的路线。

 

1Linux基础知识、基本命令(起源、组成、常用命令如cplsfilemkdir等常见操作命令)

2Linux用户及权限基础

3Linux系统进程管理进阶

4linux高效文本、文件处理命令(vimgrepsedawkfind等命令)

5shell脚本入门(可边练习边学习)

 

第二阶段:中级进阶

中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。

 

1TCP/IP网络基础(差不多CCNANP的知识就够用)

2Linux企业常用服务(dnshttpftpmailnfs等)

3Linux企业级安全原理和防范技巧(系统性能/安全、安全威胁模型和保护方法

4、 加密/解密原理及数据安全、系统服务访问控制及服务安全基础

5iptables安全策略构建

6shell脚本进阶(主要是结合一些应用,写一些案例)

7MySQL应用原理及管理入门(能管理和搭建一个个人博客站点)

学到这里,掌握的基本技能,已经够用了,已经能做一些基础的运维工作和简单维护了。

 

第三阶段:高级提升

1http服务代理缓存加速(其中主要学习varnishnginx缓存系统,要对CDN的知识有所了解。)

2、企业级负载集群(其中主要学习nginxhaproxylvs要对主要知识熟练掌握,对负载均衡算法有清晰认识,)

3、企业级高可用集群 (其中需要对keepalivedheartbeat等进行深入讲解)

4、运维监控zabbix详解(主要是zabbixcactinagios等监控系统,现在用的比较多的是zabbix)

5、运维自动化学习(需要学一些开源运维自动化工具的使用如ansiblepuppetcobbler等运维自动化工具)

 

能掌握到这里,基本能处理搞定很多工作了,可以去面试高级运维工程师,差不多薪资能达到12-18K左右。

 

第四阶段:资深方向进阶

1、 大数据方向(需要对hadoopstorm等常见开源大数据系统需要深入了解)

2、云计算方向(主要是openstack这套东西,当然像一些kvm等虚拟化技术,也是需要掌握的,现在docker也比较流行)

3、 运维开发(主要是python运维开发)

4、 自动化运维(在之前自动化基础上做深入)

5、 运维架构师(主要需要广度,差不多5年左右以上经验,可以担当此职位)

成为一名合格的Linux运维工程师必备的技术点

 

掌握 Iptables 防火墙体系,实现防火墙实现数据包过滤和转发;

掌握用户权限安全控制 Sudo 体系与配置;

掌握 DNS 服务的原理、部署、安装和企业级应用;

实现文件共享服务 NFSVsftpdSamba 配置和应用;

实现 Jumpserver 堡垒机 安装、配置、使用和运维体系融合;

brctl 命令创建管理虚拟网桥;Ip Netns 创建管理虚拟路由;

常见的网络客户端工具 Ping/Lftp/Ftp/Lftpget/Wget

利用 Rsync Inotify 实现多台机器数据分发和配置同步;

Jumpserver 跳板机

基本功能应用,认证、授权、审计;

https 概念及对应的模块 mod_ssl 应用配置;

运维必备 Web 服务开源解决⽅案 Nginx,全面讲解 Nginx 程序架构;

Nginx 内部框架、模块功能、事务处理机制、安装⽅法、CPU 亲缘优化、配置⽂件;

SQL 语句增删改查、常⽤命令使⽤、⽤户授权、字符集修改、表、索引、库管理等;

对⽐介绍图形化管理软件,如 PhpMyAdminSQLyogNavicat

Keepalived 工作方式,Keepalived 核心组件、报警机制、切换机制、心跳信息传输等;

Centos7 上实现 LVS 集群配置、服务管理、调度算法修改;

全面熟悉 Ansible 用法、以及安装方法、配置文件详解、模块说明、基于私钥认证、批量操作等;

Redis 扩展方式对比介绍,Redis Cluster 的基础应用;

Vmware Esxi 创建 Linux Windows 虚拟机,并实现虚拟机跨宿主机迁移;

Docker 镜像、仓库管理、启动⽅法、数据卷使⽤、备份恢复,网络模型、容器间依赖关系、容器资源限制、Docker 的监控;

 

三、结语

最后,如果有充足的时间、精力和相当强的自律能力,多去买一些学习书籍,每日定量学习,理论结合实战;或者,如果在资金上比较充裕,想要短期快速提升技能,也可以参加培训学习;任何一个技术的学习都不是一蹴而就的,都是需要下功夫花时间日积月累,才能把技术知识消化吸收。希望我的回答能对你有所帮助。

————————————————

 

来源:DSCN

 

以上就是汉码未来今天给大家分享的文章,想了解更多关于鸿蒙的相关内容,可以登录汉码未来官网咨询,主打5人小班,全程面授,主打物联网嵌入式(人工智能)、Java全栈开发、鸿蒙应用开发、Linux云计算SRE工程师、C/C++AI人工智能大模型算法、游戏开发、Web前端开发、Python大数据、PHP等学习进修,有专业的授课老师为你答疑解惑。

 

 

 

 

 

tags: it培训
【免责声明】由于政策等各方面情况的不断调整与变化,本网站所提供的信息仅供参考,请以权威部门公布的正式信息为准。本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。删除,请联系客服。
相关推荐HOT
FreeMarker template error (DEBUG mode; use RETHROW in production!): Template inclusion failed (for parameter value "./public/SingUp.ftl"): Template not found for name "./public/SingUp.ftl" (normalized: "public/SingUp.ftl"). The name was interpreted by this TemplateLoader: FileTemplateLoader(baseDir="/www/wwwroot/ruoyi/templatePath", canonicalBasePath="/www/wwwroot/ruoyi/templatePath/"). ---- FTL stack trace ("~" means nesting-related): - Failed at: #include "./public/SingUp.ftl" [in template "news.ftl" at line 451, column 3] ---- Java stack trace (for programmers): ---- freemarker.core._MiscTemplateException: [... Exception message was already printed; see it above ...] at freemarker.core.Include.accept(Include.java:164) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at com.ruoyi.system.utils.FreeMarkerUtil.analysisTemplate(FreeMarkerUtil.java:39) at com.ruoyi.system.utils.MongoDBUtil.generateStaticFileAndSaveToMongoDBCommon(MongoDBUtil.java:431) at com.ruoyi.system.utils.MongoDBUtil.generateStaticFileAndSaveToMongoDBForTopic(MongoDBUtil.java:559) at com.ruoyi.system.service.impl.computerImpl.HanmaTopicDetailsServiceImpl.insertHanmaTopicDetails(HanmaTopicDetailsServiceImpl.java:149) at com.ruoyi.system.controller.HanmaTopicDetailsController.addSave(HanmaTopicDetailsController.java:130) at com.ruoyi.system.controller.HanmaTopicDetailsController$$FastClassBySpringCGLIB$$c9e76dc6.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:58) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:64) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:57) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:58) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor$1.proceed(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:82) at org.apache.shiro.authz.aop.AuthorizingMethodInterceptor.invoke(AuthorizingMethodInterceptor.java:39) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor.invoke(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:115) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707) at com.ruoyi.system.controller.HanmaTopicDetailsController$$EnhancerBySpringCGLIB$$8d8871cd.addSave() at jdk.internal.reflect.GeneratedMethodAccessor517.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:903) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:809) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:458) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:373) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:370) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:114) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at com.ruoyi.system.filter.AppendSlashFilter.doFilter(AppendSlashFilter.java:25) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: freemarker.template.TemplateNotFoundException: Template not found for name "./public/SingUp.ftl" (normalized: "public/SingUp.ftl"). The name was interpreted by this TemplateLoader: FileTemplateLoader(baseDir="/www/wwwroot/ruoyi/templatePath", canonicalBasePath="/www/wwwroot/ruoyi/templatePath/"). at freemarker.template.Configuration.getTemplate(Configuration.java:2957) at freemarker.core.Environment.getTemplateForInclusion(Environment.java:3062) at freemarker.core.Include.accept(Include.java:162) ... 125 more