ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

零基础学Linux:从CentOS安装到Shell脚本与集群管理路线

零基础学Linux:从CentOS安装到Shell脚本与集群管理路线

简介:这份千页规模的 Linux 架构师文档面向希望从零基础走向企业级运维与架构岗位的读者,按基础、进阶、高级三段编排共 23 章,可用于系统梳理知识体系,也可作为日常查阅手册。压缩包内为 1 个 PDF 文件,约 28.82MB;单文件结构便于整册通读与全文检索。基础篇覆盖快速入门、CentOS 系统管理、必备命令、用户与组、软件包及磁盘管理、文件共享,并带读者在虚拟机中完成系统部署与权限规划;进阶篇围绕 HTTP 协议、Apache、MySQL 主从复制与读写分离、LAMP 架构、Zabbix 监控、Nginx 调优展开,贴近企业服务维护场景;高级篇涉及内核性能优化、大数据量备份、Shell 实战编程、Puppet 与 Ansible 自动化、Jenkins 流水线及高并发集群方案,并配有脚本案例。目前已有 143 人学习,适合运维初学者与转型中的工程师。

1. 先弄明白一件事:Linux 到底是个什么东西

第一次听到「Linux 架构师」这几个字,大部分人的第一反应是:我连 Linux 是什么都说不清,架构师离我是不是太远了。可这份最新的 Linux 架构师千页文档翻开第一页,讲的却是一句很朴素的话:Linux 是一套免费使用、自由传播的类 UNIX 操作系统,多用户、多任务,能装在服务器、网站后台、大数据集群、虚拟化平台,甚至手机内核里。

它解决的不是什么炫技的问题,而是一个特别实在的问题:一台机器,怎么稳定地同时服务很多人。适合谁?刚接触计算机的学生、想从桌面操作转服务器方向的开发者、想给自己加一门硬功夫的职场新人。你不需要先懂编程,也不需要先有一台服务器,一台普通笔记本就够开始了。

2. 为什么要学 Linux:从「装系统」到「管服务器」的一条主线

在真正打开文档之前,先把一件事想清楚:学 Linux 到底是在学什么。很多人把它想象成一个巨大的命令字典,仿佛要把几千条命令装进脑子才算入门,这个误解劝退了相当一部分人。实际上,Linux 学习有一条很清晰的主线,就是你手上多了一台没有鼠标的机器,你得用它听得懂的方式告诉它做什么:装系统、建账号、给权限、装软件、看磁盘、查进程、起服务。这条主线从头到尾没有断点,每一步都接着上一步。

2.1 新手最容易产生的三个误解

第一个误解是「Linux 不就是个操作系统,和 Windows 差不多嘛,点点鼠标就行」。桌面版确实有图形界面,但真正的工作场景里,你连的是一台放在机房或者云上的服务器,几百上千台机器,没有显示器、没有桌面,只有一个黑底白字的终端窗口。你敲一行字,它回一段结果。这个反差会让很多人第一天就懵,但只要接受「这里是打字,不是点击」,后面的路会顺很多。

第二个误解是「命令必须背下来」。这是个典型的自我设限,翻车的往往是那些抱着命令手册从第一页背起的人。真实的用法是:常用的十几个命令写到形成肌肉记忆,剩下的全部靠man和--help现查。就像你不会背下整本字典,但你知道遇到不认识的字去查哪本字典。文档里列出的命令是给你当索引用的,不是让你背默写。

第三个误解是「得先学会编程、先搞懂网络协议,才有资格学 Linux」。这份千页文档的编排恰好反驳了这一点:基础篇八章,讲的是安装、命令、用户组、软件包、磁盘、文件共享,一行代码都不用写。编程和网络是被安排在进阶篇、高级篇里的,那时候你已经有一台自己能操作的机器,理解起来完全不费力。顺序错了,才会觉得难。

2.2 这份千页文档的三段式结构,对应三种能力

这份文档分三篇、共二十三个章节,章节数量本身就是一个很清晰的能力阶梯。基础篇八章,解决「我能把一台机器装好、管住、不出乱子」;进阶篇六章,解决「我能在这台机器上把网站、数据库、监控跑起来」;高级篇九章,解决「我能一次性管住几十上百台机器,并且让它们自动运转」。用一张表看会更直观:

篇章章节范围主要讲什么学完能做到
基础篇第 1~8 章快速入门、发展及系统安装、CentOS 系统管理、必备命令、用户和组、软件包管理、磁盘管理、文件共享管理独立安装、配置、维护一台 Linux 机器
进阶篇第 9~14 章HTTP 协议详解、Apache、MySQL、LAMP 架构、Zabbix 监控、Nginx从零搭出一个能访问的网站后端,并看到它的运行状态
高级篇第 15~23 章性能优化、大数据量备份、Shell 基础与高级编程、Puppet、Ansible、Jenkins、高并发网站集群批量管理大量服务器,把重复劳动交给工具

看懂这张表,你就知道自己现在站在哪一级台阶上。绝大多数新手的第一级台阶就是基础篇第 2 章,也就是把系统装出来。这台机器一旦诞生,后面所有章节都有了练习的场地;反之,如果一直停留在「看」的阶段,看一百页和看一千页没有区别。

2.3 零基础的正确顺序:基础篇八章一章都别跳

文档里有一句话说得挺实在:基础不牢,地动山摇。基础篇的八个章节是有依赖关系的:第 1 章讲 Linux 是什么、有哪几个发行版、32 位和 64 位有什么区别、内核版本号怎么读;第 2 章讲怎么装;第 3 章开始才是系统管理;第 4 章的命令是后面所有操作的工具箱;第 5 章的用户和组,直接决定了第 6 章装软件、第 8 章做文件共享时会不会被权限卡住。

所以给新手的读法是三遍法。第一遍通读,不求记住,只求知道「哦,原来还有这么个东西」,比如知道有 LVM、有软链接、有防火墙,脑子里先建一张地图。第二遍动手,每读完一节就回到自己的机器上敲一遍,敲错也没关系,报错信息本身就是学习材料。第三遍是复盘,把当时没懂的地方重新读一次,这时候你会发现原来卡住的地方变得顺理成章。

还需要提醒一句:不要一边看视频一边跟着敲,那是「抄」,不是「学」。比较有效的做法是把文档放在另一块屏幕上,用自己的话把这一步在做什么写下来,然后再动手。写不出来的地方,就是你真正没懂的地方。

3. 第一步怎么迈:在虚拟机里装出一台自己的 CentOS

理论说到这里就够了,接下来是最关键的一步:把属于你的第一台 Linux 跑起来。这一步不完成,后面全是纸上谈兵。装系统的过程大概会花掉你一个晚上,中间可能失败一两次,这非常正常,我第一次装的时候分区那一步就卡了很久,后来发现只是没搞懂主分区和逻辑分区的编号规则。

3.1 为什么建议用虚拟机,而不是直接装在自己电脑上

虚拟机软件的作用,是在你现有的系统上「模拟」出一台完整的计算机,包括 CPU、内存、硬盘、网卡、光驱、USB 接口这些资源,而且可以一次开好几台,它们共享你物理机的硬件,但彼此之间互相隔离。对新手来说,这一点极其重要,因为你会做很多破坏性实验:分区分错、系统装崩、把配置文件改坏。

用虚拟机,出问题最坏的结果就是「删掉重来」,五分钟又是一条好汉。要是直接装在自己唯一的电脑上,一次误操作就可能让你连资料都取不出来,那种血泪经验完全没必要亲自体验。而且学到高级篇,你需要同时开三台、五台机器做集群实验,虚拟机是唯一现实的选择。

装虚拟机的过程没什么技术含量,一路下一步就可以,装完桌面上会多一个图标。真正需要动脑的是下一节的新建虚拟机向导。

3.2 建虚拟机时的三个参数:内存、磁盘、网络模式

向导里会让你填一堆东西,其中绝大多数保持默认就行,只有三个值得停下来想一下。

内存。默认值通常是 1024MB,也就是 1GB。这个值装一个最小化的命令行系统勉强够用,但你后面可能要装数据库、监控,建议一开始就调到 2048MB。前提是你物理机本身有 8GB 以上内存,否则开两台虚拟机就会开始卡。原则是:先给够,不够再加,别一开始就给 8GB,那是浪费。

磁盘。向导里会让你指定磁盘容量,给 40GB 是个比较舒服的选择,同时选择「将虚拟磁盘拆分成多个文件」,这样迁移和复制会方便一些。这个 40GB 是虚拟的上限,不会真的立刻占掉你 40GB 空间,是随着使用慢慢增长的。

网络模式。向导里一般有桥接、NAT、仅主机三种。新手第一次装,建议直接用桥接模式:虚拟机就像你局域网里的另一台独立电脑,会拿到一个和你的物理机同段的 IP,用ping测试、用远程工具连接都比较直观。等后面学到网络配置那一章,再回来研究 NAT 的差别也不迟。

提示:向导里有一个「稍后安装操作系统」的选项,建议选它。这样虚拟机会先建好硬件,再让你挂载镜像启动,整个流程和你理解的「先有机器,再装系统」一致,不容易乱。

3.3 分区到底怎么分:主分区、扩展分区、逻辑分区讲人话

分区是新手最容易卡住的一关,这里用一个大白话的类比讲清楚。把一块硬盘想象成一栋楼,主分区就是可以直接住人的房间,一栋楼最多只能有四个这样的房间。如果你想要更多房间,就得把其中一个房间改成一个「走廊」,走廊本身不能住人,但你可以在走廊两边隔出无数个小房间,这些小房间就是逻辑分区。

这个「走廊」就是扩展分区,它在名额上仍然算一个主分区,所以「主分区 + 扩展分区」加起来最多四个。对应到 Linux 的硬盘命名上:第一块硬盘叫sda,它的主分区编号是sda1到sda4,逻辑分区则从sda5开始编号,而不是sda5对应第五个分区这种直觉。这一点很多人第一次看会迷糊,记住「逻辑分区永远从 5 开始」就够了。

给新手的分区方案,简单到不能再简单:

挂载点建议大小它是干什么的
/boot1GB存放内核和启动文件,系统能不能起来靠它
swap2GB(内存小的话给内存的 1~2 倍)内存不够用时临时顶上的「缓冲区」,不是必须很大
/剩下的全部根分区,几乎所有东西都装在这里

这个方案不优雅,但对入门完全够用。等你学到第 7 章磁盘管理,会接触到 LVM 这类更灵活的方案,那时候再回来优化分区结构,理解会深得多。

3.4 装完之后先跑这几条命令,确认没装坏

系统装完重启,屏幕上出现登录提示,输入账号密码进去,看到类似[root@localhost ~]#的提示符,说明你已经站在 Linux 里面了。先别急着往下学,花五分钟做一次验收:

uname -r # 打印当前运行的内核版本,比如 3.10.0-xxx cat /etc/redhat-release # 打印发行版名称和版本号,确认装的是哪个版本 df -h # 以 G、M 这种人类看得懂的单位,列出每个分区的容量和已用 ip addr # 列出所有网卡和它们拿到的 IP 地址 ping -c 4 你的网关地址 # 连发 4 个包测试网络通不通

逐条说一下。uname -r里的-r是 release 的意思,只打印内核版本号,去掉-r会打印更多信息。df是 disk free,-h是 human-readable,不加这个参数你会看到一堆以字节为单位的数字,看着头疼。ip addr是查看网卡配置的现代写法,如果你手边的资料用ifconfig,那是老命令,新系统上可能默认没装。ping的-c 4表示只发 4 个包就停,不加会一直发下去,得按 Ctrl+C 才能中断。

注意:如果ping不通,先别怀疑系统装坏了。九成以上的情况是网卡没启用,或者虚拟机网络模式选错了。回到虚拟机的设置里看一眼网络适配器,再进系统用ip addr确认网卡是不是处于UP状态。

这五条命令全部有正常输出,你的第一台 Linux 就算真正落地了。接下来所有的学习,都发生在这台机器上。

4. 上手必备命令:从不敢敲到敢敲

有了机器,接下来要解决的是「手不敢动」的问题。很多新手盯着闪烁的光标发呆,怕敲错一个字就把系统搞坏。事实是,日常操作里绝大多数命令都是只读的,看看而已,不会造成任何破坏。真正危险的就那么几个,知道它们是谁,你反而可以放开手脚。

4.1 命令不用背,先记「去哪查」

一条 Linux 命令的基本结构是三段:命令本身、选项、参数。比如ls -l /etc,ls是命令,-l是选项(长格式显示),/etc是参数(要看的目录)。选项通常以短横线开头,单个字母的用一条横线,完整单词的用两条横线,比如ls -l和ls --long是一回事(不同命令略有差异)。

查法有三种,按顺序用。第一种是命令 --help,打印简明用法,够解决大部分问题。第二种是man 命令,打开完整手册,按q退出,按/输入关键词搜索。第三种最实用也最容易被忽略:history,它列出你之前敲过的所有命令,敲错了按方向键上翻就能找回来,不用重打一遍。这三招练熟,你就不需要背任何东西了。

4.2 第一批必须练熟的命令:文件、进程、网络

命令按用途分组记,比按字母顺序记高效得多。下面这几组是基础篇第 4 章的核心,也是后面每一章都在用的工具。

文件与目录这一组,是你每天都会用到的:pwd看自己在哪,ls列目录,cd换目录,mkdir建目录,cp复制,mv移动或改名,rm删除。看文件内容用cat(一次全打印,短文件用)、less(可以上下翻页,长文件用)、tail -f(实时盯着文件末尾,看日志必备)。找内容用grep,比如grep error /var/log/messages就是在这个日志里找含 error 的行。

进程这一组,解决「机器卡了怎么办」:ps aux列出所有进程,top实时看谁在吃 CPU 和内存,kill 进程号结束某个进程。网络这一组:ip addr看网卡,ping测连通,ss -tlnp看本机哪些端口正在被监听。

磁盘这一组:df -h看分区用了多少,du -sh 目录名看某个目录占了多少空间,-s是汇总,-h还是人类可读。服务这一组:systemctl start 服务名、systemctl status 服务名、systemctl enable 服务名,分别对应启动、看状态、设置开机自启。这四条命令,进阶篇装 Apache、MySQL、Nginx 的时候会反复出现。

提示:rm -rf是少数几个真正危险的命令之一,它会递归强制删除且不进回收站,没有后悔药。养成习惯:删之前先用ls看一眼目标路径对不对,尤其是路径里带变量的脚本,先echo出来确认再执行。

4.3 写第一个 Shell 小脚本,把重复劳动交出去

命令敲熟之后,你会开始烦一件事:同样的三条命令,每天都要敲一遍。这就是 Shell 脚本要解决的问题,也是高级篇会用大量篇幅展开的内容,但它的入门门槛其实低到你今天就能写。

新建一个文件,比如叫backup.sh,内容如下:

#!/bin/bash # 把 /etc 目录打包备份到 /backup 下,文件名带上当天日期 BACKUP_DIR="/backup" DATE=$(date +%F) # 取当天日期,格式如 2024-05-01 mkdir -p "$BACKUP_DIR" # 目录已存在也不报错,不存在就创建 tar -czf "$BACKUP_DIR/etc-$DATE.tar.gz" /etc 2>/dev/null # -c 创建归档,-z 用 gzip 压缩,-f 指定文件名;2>/dev/null 把权限不足的提示丢掉 echo "备份完成:$BACKUP_DIR/etc-$DATE.tar.gz"

写完保存,先给它加上执行权限再运行:

chmod +x backup.sh # 给这个文件加上「可执行」标记 ./backup.sh # 执行当前目录下的这个脚本

第一行的#!/bin/bash叫 shebang,告诉系统用哪个解释器来跑这个文件,写在第一行且必须顶格。$(...)是命令替换,会把括号里命令的输出结果塞进变量。chmod +x里的+x就是加执行权限,没有这一步直接运行会提示权限不够,这是新手最常见的报错之一。

这个脚本只有五行有效代码,但它包含了脚本编程的三个核心要素:变量、命令替换、外部命令调用。后面高级篇里那些一键部署、批量收集服务器信息、自动修改上千台机器 IP 的脚本,拆开看也是这些零件拼起来的,只是拼得更复杂。所以别小看这五行。

4.4 用户、组和权限:为什么你的文件别人改不了

文档里把用户和组单独列为一章,是因为权限机制贯穿了整个 Linux 的操作逻辑。先用一句话理解:Linux 里每个文件都有三个身份——拥有者、所属组、其他人,每个身份各自有一套读、写、执行的权限,分别用r、w、x表示。用ls -l看到的-rw-r--r--这种字符串,就是这三组权限的速记。

数字表示法更常用:读是 4,写是 2,执行是 1,加起来就是权限值。所以755表示拥有者读写执行(4+2+1),同组和其他人只读和执行(4+1)。这三个数字依次对应三个身份,是新手必须记住的唯一一组数字。

chmod 755 /data/web # 目录所有者可读写执行,其他人可读可执行,不能写 chown -R deploy:deploy /data/web # 把目录及里面所有内容的拥有者和所属组都改成 deploy

chmod是改权限,chown是改归属,-R表示递归作用于目录下的所有内容。一个很常见的场景是:你解压了一个网站程序,文件归属是 root,网站进程以普通用户身份运行,于是打不开、写不进日志,页面直接 500。这时候不是程序有 bug,是权限没给对。养成用ls -l确认归属再动手的习惯,能省掉大量排查时间。

5. 新手避坑:六个典型翻车现场

这一节是给「已经动手但卡住了」的人准备的。下面这几条是新手最容易撞上的,每条都按「现象、原因、解决」写清楚,对号入座就行。

5.1 分区时提示主分区名额用完,编号还直接跳到 sda5

现象:安装系统到分区那一步,想再建一个主分区,界面提示无法创建,或者新建出来的分区编号莫名其妙变成了sda5。

原因:MBR 分区表下一块硬盘最多四个主分区,扩展分区也要占一个名额。很多新手一路点「自动创建」,结果前四个名额被占满,后面再建就只能进扩展分区,编号自然从 5 开始。

解决:装系统前手动规划好,只建三个分区(/boot、swap、/),把第四个名额留着。如果确实需要更多分区,就在建第四个的时候选择类型为「扩展分区」,再在它里面切逻辑分区。真需要超过四个主分区,得改用 GPT 分区表,这一点文档第 7 章会细讲。

5.2 命令敲完提示 command not found

现象:照着文档敲ifconfig或者netstat,系统回一句command not found,但文档截图里明明能跑。

原因:不是命令写错了,是这条命令所属的软件包在新版本系统里默认没装,被更新更现代的工具替代了。ifconfig换成了ip addr,netstat换成了ss。

解决:先用命令 --help确认是不是拼写问题,再搜一下这个命令属于哪个软件包。文档里很多内容基于较早的系统版本,遇到这种情况不要慌,也不要去网上乱装来源不明的包,优先找系统自带的替代命令,功能是一样的。

5.3 服务启动了,浏览器还是打不开

现象:按进阶篇的步骤装好了一个 Web 服务,systemctl status显示 running,但在浏览器里访问就是转圈或者拒绝连接。

原因:服务「跑起来了」和「外面能访问」是两件事。中间可能隔着三道门:服务本身只监听了127.0.0.1而不是所有网卡;系统防火墙没放行对应端口;还有一个常被忽略的强制访问控制机制在拦。

解决:按顺序查。先用ss -tlnp看服务到底监听在哪个地址和端口,如果是127.0.0.1:80那外部确实访问不到,得改配置文件里的监听地址。再查防火墙有没有放行端口。最后如果还不行,临时把那个强制访问控制机制设为宽松模式测一下,能通就说明是被它拦了,再去查对应的规则,而不是直接永久关掉。

5.4 跟着文档敲,路径全是别人的

现象:文档里写cd /data/web,你敲完提示目录不存在,或者文档说改/usr/local/nginx/conf/nginx.conf,你机器上压根没这个路径。

原因:文档作者的环境是作者自己的,安装方式不同,路径就不同。源码编译安装、包管理器安装、一键脚本安装,三者落地的目录结构完全不一样。

解决:不要死记路径,记「怎么找路径」。装完一个软件,用rpm -ql 包名或者dpkg -L 包名可以列出这个包安装的所有文件位置,找到配置文件那一条就行。改配置前先cp一份备份,文件名加个.bak,改坏了能立刻回滚。

5.5 学到进阶篇就卡住,回头发现是基础篇跳着看的

现象:基础篇看得快,觉得命令都会了,直接跳到进阶篇,结果在装数据库的时候被用户权限、目录归属、环境变量连环卡住,一卡就是一周。

原因:进阶篇的每一个操作,底层都在调用基础篇讲的东西。MySQL 要建专用运行用户,那是用户和组的知识;数据目录要单独挂载,那是磁盘管理的知识;装包要用包管理器,那是第 6 章的内容。这些没打牢,进阶篇的每一步都是在补课。

解决:老老实实退回去,把基础篇第 4、5、6、7 章重新过一遍,边看边在自己的机器上验证。判断标准很简单:能不能在不看资料的情况下,独立完成「建一个用户、给他一个目录的全部权限、装一个软件、把数据目录迁到新分区」这四件事。能,再往下走。

6. 学完之后往哪走:从「会用」到「能扛事」的三级台阶

这份文档的最后一章落在企业级高并发集群上,看起来离新手很远,但其实路径是一级一级铺上去的。学完之后往哪走,取决于你现在站在哪一级。用一张表把三级台阶摆清楚:

台阶目标主要练什么怎么算过关
一级:会用在一台机器上不慌命令、用户权限、软件包、磁盘给你一台空白机器,能独立装完、配好网络、建好账号
二级:能搭把服务真正跑起来HTTP 协议、Nginx、MySQL、监控从零搭出一个能访问的站点,并在监控面板上看到它的曲线
三级:能管把重复劳动交出去Shell 脚本、Ansible、Jenkins、集群一条命令把脚本推到十台机器上执行并拿到结果

大多数人在一级到二级之间花的时间最长,因为这里开始出现「组合问题」:不是单独一条命令会不会,而是三条命令、两个配置文件、一个端口之间怎么配合。这个阶段的建议是,每学一个服务,都强迫自己从零重装一遍,不看资料。装第三次的时候,你会发现自己开始预判下一步该干什么了,那种感觉非常爽。

再往上的三级,核心思路从「操作」变成了「描述」。Ansible 这类工具的精髓是:你不再一台一台地去敲命令,而是写一份描述「这些机器应该是什么样」的剧本,工具负责把它变成现实。文档高级篇里那个改造剧本、批量管理上千台机器的思路,本质就是这个。想练手的话,用虚拟机开三台机器,写一个把三台都装好某个服务的小剧本,跑通一次,比看十页文档管用。

最后给个具体建议:别贪多。基础篇八章,一周一章就是两个月;进阶篇六章,一周一章是一个半月。三个月后你会有一台自己能折腾的机器、一个能访问的站点、一套能看懂的监控。这个进度比「一个月看完千页」要慢,但前者能写进简历,后者只能写进收藏夹。

我第一次学的时候,也是想着先把文档从头到尾看完再动手,结果看到磁盘管理那一章就彻底迷失了,因为脑子里没有任何可以挂靠的东西。后来改成每读完一节就回到机器上折腾,把系统装崩过两次,把配置文件改坏过四次,但从那以后我每次学新东西,都强制自己先把环境搭起来再翻下一页。环境搭不起来的时候,恰恰是你学得最快的时候。

希望帮到你。

本文还有配套的精品资源,点击获取

返回列表