☰
云计算运维学习路线:从零基础到生产环境的6个阶段
2026/10/5 8:41:20 网站建设 项目流程

简介:这份《云计算运维学习路线及具体细节》文档面向希望系统入门或进阶云计算运维的学习者,尤其适合备战技能竞赛、PaaS 方向及计划向 DevOps 转型的同学。内容从 Linux 目录结构与常用命令、Iptables、NTP、Nginx、MySQL 等基础服务讲起,逐步延伸到 Shell 脚本自动化、数据库主从复制、LVS 与 Keepalive 高可用集群、RabbitMQ 集群、OpenStack 虚拟化、Ansible 自动化部署、Python 编程、Docker 容器化以及 Kubernetes 与 CICD 流程,并配有阶段目标与考核任务,便于按周推进学习。资源包共 1 个 docx 文件,约 18KB,以文字路线与要点整理为主,结构清晰、便于打印或二次笔记。目前已有 1704 人学习下载,适合需要明确学习顺序、对照实验目标查漏补缺的运维初学者与竞赛选手参考。

1. 云计算运维学习路线到底怎么走:从零基础到能扛生产环境的 6 个阶段

很多人搜「云计算运维学习路线」,收藏了几十份 PDF 和视频课,结果半年过去还在虚拟机里敲ls。问题不在资料少,而在路线是散的——今天学 Linux 命令,明天看 Ansible,后天又去折腾 K8s,每块都摸了一下,但串不成一条能干活的能力链。这篇把我自己从桌面运维转到云平台运维、再带过几个新人的路径完整拆开:先立住 Linux 和网络这两条腿,再上脚本和自动化,然后进云平台和容器,最后补监控与故障排查。适合两类人:一是刚入行、只会重装系统和拉网线的桌面运维,想往上走;二是开发转运维、命令会用但不懂生产环境边界的。全程给命令、给参数、给踩坑点,你照着敲就能复现,不用先买课。

2. 打地基:Linux 与网络这两条腿必须先站稳

云平台再花哨,底层还是 Linux 主机加网络转发。这一层不牢,后面学 Ansible、K8s 全是背命令,出问题只能重启。我一般要求新人先做到:能不看笔记完成用户权限、磁盘、进程、网络四类操作,能说清一个 HTTP 请求从网卡进来到进程收到经过了什么。

2.1 云计算运维必练的 Linux 命令分组

别去背「Linux 常用命令大全」那种几百条清单,按场景分组记才有效。下面这张表是我带人时直接发的,每组挑 3 到 5 个练到肌肉记忆即可。

场景核心命令关键参数与用途
文件与权限ls, find, chmod, chownfind / -mtime -1找一天内改动;chmod 750目录给属主全权、组读执行
进程与资源ps, top, lsof, killlsof -i:8080查端口被谁占;kill -15优雅退出,别上来就 -9
磁盘与文件系统df, du, mount, fdiskdu -sh *逐目录看占用;df -h看挂载点是否满
网络排查ss, ip, ping, curlss -tlnp看监听端口和进程;curl -v看完整握手过程
日志与文本tail, grep, awk, journalctljournalctl -u nginx --since "10 min ago"看服务近期日志

练的时候给自己造场景,比如故意把某个目录权限改成 000,再用 find 和 chmod 恢复;故意起一个占 8080 的进程,用 lsof 找出来杀掉。命令是死的,排查思路是活的。

2.2 用三条命令验证你的网络基础

网络这块,运维和网工的侧重点不同:网工关心路由协议,运维关心「服务通不通、慢在哪」。下面三条命令覆盖 80% 的日常判断。

# 1. 看本机监听端口和对应进程,确认服务真的起来了 ss -tlnp | grep -E ':(80|443|3306)' # 2. 从本机发起请求,看 DNS 解析、TCP 连接、TLS 握手各阶段耗时 curl -o /dev/null -s -w "dns:%{time_namelookup} conn:%{time_connect} tls:%{time_appconnect} total:%{time_total}\n" https://example.com # 3. 追踪到目标的路由跳数,判断是本地网络还是对端问题 traceroute -n -w 1 -q 1 10.0.0.1

第一条ss -tlnp里-t是 TCP、-l是监听、-n不做域名解析、-p显示进程,四个参数缺一个信息就不全。第二条 curl 的-w是自定义输出格式,time_namelookup是 DNS 耗时,如果它占了 total 的大头,说明是 DNS 问题不是网络带宽问题。第三条-n不解析主机名、-w 1每跳等 1 秒、-q 1每跳只发一个包,内网排查够用。这三条练熟,你就能在别人还在「重启试试」的时候给出方向。

2.3 从桌面运维转过来的第一个月怎么排

桌面运维的日常是装系统、修打印机、配 IP,这些经验有价值但不等于服务器运维。第一个月我建议这样排:第 1 周只碰 Linux,每天在虚拟机里做 5 个场景练习;第 2 周补网络,把上面三条命令在不同网络环境下各跑 20 次,记录输出差异;第 3 周学 shell 脚本,把重复操作写成脚本;第 4 周装一台最小化 CentOS 或 Ubuntu Server,从零配好 SSH、防火墙、时间同步。这一个月不碰云平台,地基没打完就上云,等于在沙子上盖楼。

3. 脚本与自动化:把重复劳动交给 Ansible 和 Shell

地基打完,接下来要解决「一台台登上去敲命令」的问题。这一步是运维效率的分水岭:会脚本的人管 10 台和管 100 台工作量差不多,不会的人管 20 台就开始出错。Ansible 是当前最稳的入门选择,无 agent、SSH 直连、YAML 描述,学完能直接用在生产。

3.1 Shell 脚本先解决三类重复活

不用一上来写复杂脚本,先把三类活自动化:批量检查、批量清理、批量部署。下面这个巡检脚本是我常用的模板。

#!/bin/bash # 批量巡检:磁盘、内存、关键进程,输出到统一日志 HOSTS=("10.0.0.11" "10.0.0.12" "10.0.0.13") LOG="/var/log/check_$(date +%F).log" for h in "${HOSTS[@]}"; do echo "===== $h =====" >> "$LOG" # 磁盘使用率超过 80% 的行 ssh "$h" "df -h | awk 'NR>1 && \$5+0>80 {print \$0}'" >> "$LOG" 2>&1 # 内存剩余 ssh "$h" "free -m | awk '/Mem/{print \"free_mb:\" \$4}'" >> "$LOG" 2>&1 # 关键进程是否存在 ssh "$h" "pgrep -x nginx >/dev/null && echo nginx:ok || echo nginx:down" >> "$LOG" 2>&1 done

逻辑说明:HOSTS数组存目标机,for循环逐台 SSH 执行;df那段用 awk 过滤使用率大于 80 的行,\$5+0是把带百分号的字段转成数字比较;pgrep -x精确匹配进程名,避免匹配到同名子串。参数上,date +%F生成日期做日志名,方便按天归档。这个脚本的边界是:SSH 需要免密,且目标机防火墙要放行;如果机器上百台,循环会慢,那就该上 Ansible 了。

3.2 Ansible 最小可用配置与第一个 playbook

Ansible 的核心就三样:inventory(管哪些机器)、module(干什么)、playbook(怎么编排)。先装再配。

# 控制机安装(以 CentOS 为例) yum install -y ansible # 配置免密,把公钥推到所有被管机 ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519 for ip in 10.0.0.11 10.0.0.12 10.0.0.13; do ssh-copy-id -i ~/.ssh/id_ed25519.pub root@$ip done # 写 inventory cat > /etc/ansible/hosts <<'EOF' [web] 10.0.0.11 10.0.0.12 [db] 10.0.0.13 EOF # 连通性测试 ansible all -m ping

ssh-keygen -t ed25519用更短更安全的密钥类型,-N ""表示空密码方便自动化(生产环境建议加密码并用 ssh-agent)。ansible all -m ping返回pong说明 SSH 和 Python 环境都通了,这一步不通后面全白搭。

# deploy_nginx.yml - hosts: web become: yes tasks: - name: 安装 nginx yum: name: nginx state: present - name: 启动并开机自启 service: name: nginx state: started enabled: yes - name: 放行 80 端口 firewalld: service: http permanent: yes state: enabled immediate: yes

become: yes表示提权执行;yum模块的state: present是确保安装,不会重复装;service模块同时管启动和自启;firewalld模块的immediate: yes让规则立即生效而不用 reload。执行ansible-playbook deploy_nginx.yml即可。注意:如果被管机是 Ubuntu,yum要换成apt,这是新手最常翻的车。

3.3 自动化脚本的边界与幂等性

自动化的价值在幂等——跑一次和跑十次结果一样。上面 playbook 里state: present和enabled: yes都是幂等的,重复执行不会报错也不会重复装。但 shell 模块里的命令默认不幂等,比如shell: useradd deploy跑第二次就报用户已存在。解决办法是用creates参数或改用专门的user模块。我见过有人用 shell 模块写了几百行部署脚本,跑第二遍就炸,这就是没理解幂等。记住:能用模块就别用 shell,非用不可就加条件判断。

4. 进云平台:从一台虚拟机到一套可交付环境

脚本和 Ansible 解决的是「已有机器怎么管」,云平台解决的是「机器从哪来、网络怎么划、资源怎么算钱」。这一步开始接触真正的云计算运维,也是招聘里最看重的部分。

4.1 云主机、VPC 与安全组的最小认知

不管哪家云,核心概念就几个:云主机(实例)、VPC(私有网络)、子网、安全组、弹性 IP。我一般让新人先在控制台手动创建一套:一个 VPC、两个子网(一公一私)、一台公网跳板机、一台私网应用机。手动走一遍,再学 API 和 Terraform 才有体感。

安全组是最容易出事的地方。默认拒绝所有入站,你要显式放行。常见做法是:跳板机只放行你的办公 IP 到 22 端口,应用机只放行跳板机到 22 和应用端口。千万别图省事开0.0.0.0/0全放行,我见过因为安全组全开被扫到挖矿的,血泪经验。

4.2 用 Terraform 描述一套可复现环境

手动点控制台不可复现,换个人就搭不出一样的。Terraform 用代码描述基础设施,是云运维的必备技能。下面是最小示例(以某主流云为例,变量名按各家文档调整)。

# main.tf provider "cloud" { region = "cn-north-1" } resource "cloud_vpc" "main" { name = "ops-vpc" cidr_block = "10.0.0.0/16" } resource "cloud_subnet" "public" { name = "public-subnet" vpc_id = cloud_vpc.main.id cidr_block = "10.0.1.0/24" } resource "cloud_instance" "jump" { name = "jump-host" image_id = "img-xxxx" instance_type = "s6.small" subnet_id = cloud_subnet.public.id security_groups = [cloud_security_group.jump.id] }

逻辑说明:provider声明云厂商和区域;resource块每块描述一个资源,cloud_vpc.main.id是引用上面 VPC 的 ID,Terraform 会自动处理依赖顺序。参数上,cidr_block规划网段时留足余量,/16的 VPC 能划 256 个/24子网。执行terraform init初始化、terraform plan预览、terraform apply创建。注意:plan一定要看,它会告诉你将要创建、修改、销毁哪些资源,destroy是不可逆的,生产环境务必加prevent_destroy。

4.3 云上成本与权限的两个硬约束

云运维和传统运维最大的区别是「资源即成本」。一台忘记关的测试机,一个月可能烧掉几百块。我一般要求团队:所有非生产资源打标签(tag),用标签做成本归集;设置预算告警,超过阈值发通知;定期清理无主资源。权限上,别用主账号 AK,给每个服务建子账号,按最小权限授权。这两条不是技术难点,但出事往往就出在这。

5. 容器与监控:让服务跑得稳、看得见

云主机管明白了,下一步是容器化和可观测性。容器解决「环境不一致」,监控解决「出事不知道」。这两块是云运维从「能跑」到「跑得稳」的关键。

5.1 Docker 与 K8s 的学习顺序

别一上来啃 K8s,先把 Docker 用熟。Docker 的核心就三件事:镜像、容器、网络。练到能写 Dockerfile、能映射端口、能挂载数据卷、能看日志,再上 K8s。K8s 先学 Pod、Deployment、Service、ConfigMap 四个对象,够跑一个无状态服务。下面是一个最小 Dockerfile。

FROM openjdk:17-slim WORKDIR /app COPY target/app.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]

FROM选基础镜像,slim版本体积小;WORKDIR设工作目录;COPY把构建产物拷进去;EXPOSE声明端口(只是文档作用,实际映射靠-p);ENTRYPOINT用 exec 格式,保证 Java 进程是 1 号进程能收到信号。构建docker build -t app:v1 .,运行docker run -d -p 8080:8080 app:v1。注意:镜像里别放密钥,用环境变量或挂载注入。

5.2 Prometheus + Grafana 最小监控栈

监控先解决「主机活着吗、资源够吗、服务通吗」三个问题。Prometheus 拉取指标,Grafana 展示,node_exporter 采集主机数据。

# docker-compose.yml version: "3" services: prometheus: image: prom/prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" grafana: image: grafana/grafana ports: - "3000:3000" node-exporter: image: prom/node-exporter ports: - "9100:9100"

配套的prometheus.yml里配scrape_configs,targets 填各主机的IP:9100。启动后访问 9090 看 targets 是否 UP,访问 3000 用 admin/admin 登录加数据源。参数上,scrape_interval默认 15 秒,机器多可调大到 30 秒减轻压力。这套栈跑起来,你就能看到 CPU、内存、磁盘、网络的实时曲线,比登上去敲 top 直观得多。

5.3 告警规则别设太密

新手常犯的错是把告警阈值设得很低,结果一天几百条通知,最后没人看。我一般只设三类告警:磁盘超 85%、内存超 90% 持续 5 分钟、关键进程消失。告警要能对应动作,收到就知道该干什么,否则就是噪音。这条经验是用无数次半夜被误报吵醒换来的。

6. 避坑与排查:云计算运维新手最容易翻车的 5 个点

这一章全是踩过的坑,每条按「现象 → 原因 → 解决」写,你对照自己的环境排查。

坑一:SSH 突然连不上,重启也没用。现象是昨天还好好的,今天ssh超时。原因多半是安全组规则被改、或者磁盘满了导致 sshd 无法写日志而拒绝连接。解决:先从控制台 VNC 登录,df -h看磁盘,systemctl status sshd看服务,再检查安全组。别急着重装系统。

坑二:Ansible 执行报「Missing sudo password」。现象是 playbook 里用了become: yes就报错。原因是被管机的 sudo 需要密码,而 Ansible 没提供。解决:要么在被管机配NOPASSWD,要么执行时加-K交互输入密码。生产环境建议用专门的运维账号配好 sudo 免密。

坑三:容器里服务起不来,日志却看不到。现象是docker ps显示容器秒退。原因是主进程前台运行失败,容器没进程就退出。解决:docker logs <容器ID>看输出,或者docker run -it --entrypoint sh 镜像进去手动跑命令定位。别用-d起一个注定失败的容器。

坑四:Terraform apply 把生产资源删了。现象是改了个配置,apply 后线上机器没了。原因是改了资源名或 ID,Terraform 认为旧的要销毁、新的要创建。解决:生产资源加lifecycle { prevent_destroy = true },apply 前必看 plan,改配置尽量用terraform state mv而不是删了重建。

坑五:监控显示内存一直涨,以为泄漏。现象是内存曲线只升不降。原因是 Linux 把空闲内存拿去做缓存(buff/cache),这是正常行为。解决:看free -m的 available 列而不是 free 列,available 才是真正可用的。别看到 cache 高就去重启服务。

7. 进阶:用一套可验证的练习项目把路线串起来

学完上面六块,怎么验证自己真的会了?我的做法是给自己出一个综合题:用 Terraform 创建一套 VPC 加三台机器,用 Ansible 装好 Nginx 和 node_exporter,用 Docker 跑一个应用,用 Prometheus 监控全部节点,最后写一个巡检脚本每天输出报告。这套做完,云运维的主干能力就闭环了。

具体验收标准我列成表,你可以照着自测:

能力项验收标准常见失分点
Linux不看笔记完成权限、磁盘、进程、网络排查只会 ls/cd,不会 lsof/ss
网络用 curl 分段耗时定位慢在哪只会 ping,不会看握手
脚本写出幂等的巡检和部署脚本脚本跑第二遍就报错
Ansible用 playbook 完成装包、配置、启动全用 shell 模块
云平台Terraform 可复现一套环境手动点控制台
容器写 Dockerfile 并排错容器秒退不会看日志
监控搭起 Prometheus 并配合理告警告警太密没人看

这套练习的价值在于:每一步都会逼你面对真实报错,而报错才是最好的老师。我带过的新人里,凡是把这套做完的,面试时能讲清楚自己踩过什么坑、怎么解决的,比背八股文管用得多。

最后说个我自己的习惯:每学一个新工具,先问三个问题——它解决什么问题、它的边界在哪、它挂了怎么排查。这三个问题答不上来,就说明还没真会。云计算运维这条路没有捷径,但路线对了,每一步都算数。希望帮到你。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询