开篇前言

第二阶段:综合架构篇

学习前言

第一阶段总结

第一阶段
1.死记硬背
2.多敲命令,多做练习题
grep sed awk 
只要你作业认真做了,你有了练习,输出,你就能记住


3.学的东西的确特别多,但是工作里日常用的其实反复就那几个,参数也就那几个

find 
-type 
-name  支持通配符写法,找文件名
-size
-maxdepth
-perm
-regex  支持正则表达式,找文件名
-path 关于路径的设定
-o  或的关系
-a   并且的关系

痛并快乐着

痛,下了功夫,每天都很认真,拼命的学习,输入知识
快乐,你学到了真功夫,学到了技术


关于学习方法的理解

1.在不知道网站是如何搭建的时候(没做过这件事,会很难,LNMP LAMP,wordpress,discuz)刚开始,没有思路是最难的
2.在尝试实践过后,有了思路过后,后面的工作就是反复的重复,成为熟练工了


3.为什么新人是万事开头难
4.你会发现领导都是不干活,都是写写文案,出方案,写写PPT,年入50万(人家曾经也辛苦过10年时间)









第二阶段开始,学习思路的转变

更多的是架构的理解,而不是太多的操作

大家都一样装软件,nginx

修改配置
	修改端口的参数
	修改网站html根目录的参数
	

启动
 	启动玩了之后有日志
 	你得去看日志,看大量的屏幕的英文输出,是正确启动,还是错误?
 	


主动的思考

第二阶段
1.和第一阶段完全不一样,更多的是理解
(你千万不能死记硬背操作,否则换一个场景,你又不知道自己在干什么)

正则举例
- 提供好了测试数据
	- (而是你们开发发给你的
	- 或者是线上程序实时产生的日志)
	- xxxxxxx
- 在这堆数据里,提取如网址,如qq号
- 你根据老师写的正则(源数据),的确能提取出来
- 写出正确的正则?
	- 平日里不断的积累
	- 主动的通过自己的思考,想出每一题的解决方案,转化为你所理解的正则符号
 	- 自己主动再去找更多的练习,不会的和老师交流
 	




2.第二阶段会频繁的使用第一阶段的命令

3.第二阶段大多数是使用软件(ftp,ssh,rsync,nginx),修改配置文件,那配置文件,好几百、几千行,你根本无法背诵

背死在固定的某一行,某些参数
- 理解你要做什么,去修改什么软件的配置文件,修改的参数是什么意思




4.因此第一、理解架构
第二,做好笔记(帮你理解如何修改配置,如何使用软件,的流程)

盖房子一样,流程性很重,以及盖房子之间,cad图纸得画好
(架构图要画好,从前端,到后端,到数据库,之间所有涉及服务,如何去理解,他们之间如何相互调用,通信)

画图,很重要!




比如同样的安装nginx高可用,集群

第一、你先理解原理,心中有了架构思维,这是最重要的


第二、具体nginx集群的安装部署,这其实就很简单了,你笔记做好,以后用到,拿出来复制粘贴即可。



第三、这也是为什么,你会发现,越牛逼的大佬,具体干的活越少,而是写方案,出架构图
,因为这是一个有含金量的东西,
当然,人家架构师也是从普通运维,一步步锻炼,反复安装部署软件几千次,
敲打几万次命令,
心中早已有无数方案,踩过无数的坑,因此才能独当一面,见招拆招。

维护了5万台机器,维护过几十亿的日活

500台机器,维护几万的日活


小白成长记

也是你未来很长一段时间要走的路线..

小白(2月24进班级之前,连电脑都不太会玩) 
> 初级运维(很多的命令,服务搭建,配置,权限,等等等。。。。)

> 运维熟练工 (通过不断的学习各种软件,反复的安装yum,编译,修改配置,刚开始是vim手动去修改,sed修改配置文件,启动systemctl,自己写启动脚本,得看进程,看端口,不断的去练习 ps ,netstat,ss,lsof)
学了2月过去, 网站集群,数据库,shell编程,监控


> 高级运维开发
linux+python


>  架构师
linux+python+安全+全栈==架构师


你在教室,每一天的学习强度,上班之后,一下子降低70%
每天的学习,输入大量的知识,自己看看书,

你现在的学习环境,类似于公司的测试环境,机器配置都是最低的,服务安装也是单机的配置也不复杂



小白 > 新人
linux命令会用了 >   初级运维
各种运维工具熟练安装、配置、搭建 > 中高级运维
运维+编程,完成高级运维自动化开发工作 > 高级运维、运维开发

最后、架构师
-实实在在维护过五年以上的linux服务器,从小公司,中型公司,大公司
-解决过太多问题,写过太多笔记、运维博客(博客园等,找运维大佬,写了有10年以上,linux命令基础,到服务部署,到xxx 所有运维都是围绕着k8s去转)

-扛得住大公司的大并发架构,复杂运维架构,在阿里,卷累了,不想卷了
-也能在小公司独当一面,一个人就能扛起公司所有的运维工作

-解决方案架构师(架构在心中,出几个PPT,月入几万,全球技术峰会,全球devops技术大佬会,公司也会有技术分享会,运维,给开发同事分享k8s的技术,linux基础都不会,docker,k8s,jenkins,领导是给钱,打绩效的, 500/课,2000、课)



-高级运维工程师(熟练操作sed、awk、grep、linux、nginx、mysql、jenkins、redis、kafka、zookeeper、hadoop、oracle、docker、kubernetes、prometheus,等一堆工具,维护过千台服务器,维护过日活一亿的网站,起步50k+)




小白 > 工地新人 > 熟练小推车、铁锹 、和水泥 > 学会了工地图纸设计、造价方案 > 学会了和领导喝酒 > 自己成为了当初最讨厌的那个人(老板,月入百万)


如何学好第二阶段

1.画图、架构图(一图胜千言、无图言*)
画图工具
https://www.processon.com/
https://excalidraw.com/

2.理解流程、架构先后关系,如软件安装的先后关系,服务启动的先后关系


3. 
nginx
mysql
运行了
程序一定会有日志输出,开发,运维,都通过这个日志,去掌握程序运行的状态
因此你后面的学习,工作生涯,会和大量的英文接触。。。。
而且,请你从此安装机器,再也别用中文了


程序崩溃,无法运行,这个信息,毫无意义,你得通过程序反馈的英文报错,日志,去搜索,去理解它的含义





学会看日志
学会看日志
学会看日志,
无论新人,还是20年架构师,干活都TMD是在看日志
(程序运行了,正常,还是故障,只能去看运行日志!)

4. 提问的艺术


错误的提问

傻蛋的提问
- 在吗?
	我在
	
- 有人知道nginx吗?
	大量的死群,qq群,微信群,学习交流群
	我知道,nginx是一个服务器
	
- 我遇到问题了

- 服务起不来了

- 什么问题?

- nginx报错了?
- 什么报错?
- 怎么看?
。。。我tm想给你一锤子


============================================================================================

如果有同学加过各种学习群,你就会见到各种这样的提问

有人知道centos吗?
nginx报错了怎么看?
然后群里永远是死群,无人回答,你让人家怎么回。。

正确的提问

正确的提问艺术

前期学习,sed无法提取ip地址,
1.我去看你的源数据
2.看你写的正则表达式
3.看你的sed语法





架构搭建中,没人能简单服务为什么没启动、请求为什么没转发成功,自己要捋顺流程,再告诉别人大概你做了什么事

lnmp的部署
linux 最小化安装,系统的基础依赖会有区别
nginx安装 装在了哪里
mysql
php,python




如
各位大佬们打扰了,我部署LNMP时出错了,我做了如下的操作
1.怎么装的nginx
2.配置文件在哪,日志目录在哪
3.我改了什么操作,才导致报错的  nginx启动不了,看nginx的日志
4.如果你这些流程自己很清晰,其实你几乎已经快找到问题所在了,只不过经验欠缺,可能还无法解决问题

我已经尝试了这些解决方案,但是还是不行(这样大佬知道你做了什么事,是不是方案错了)
1.
2.
3.

以下是nginx的日志报错,有大佬懂的话可以指点以下,感谢
图1
图2

这样的提问,试问,如果是你,你愿不愿意回答一下?是不是好多了?

笔记的重要性

部署搭建过程,务必记录好步骤,你如果部署出错了,记录下出错的日志,也给记下来


这样你有问题喊超哥来看看,我才知道你做了什么,哪出错了
否则,神仙也不知道你做了什么事,你的问题也无法得到解决,耽误你我时间。


搜索工具的重要性

你能遇见的绝大多数错误,搜索引擎上,都会有人曾经搜索过,查询过
也有人发布过类似问题的解决方案,合理利用它,能解决你大部分问题。

学点英语

做IT避免不了和英语打交道

运维部署,会反复和大量的英文日志打交道,看日志、看日志、要学会怎么看、提取重点部分信息
无论是去翻译,还是去搜索

都要反复积累英文单词的理解、否则一直看不懂日志,那肯定做不好