Linux 基础教程:从零到进阶,成为最强管理员
由 linux.mba「Most Badass Admin」最强管理员社区撰写
第五部分: 进阶专题与未来方向
第十六章:云计算与 DevOps 基础
16.1 云计算平台简介:AWS、Azure、Google Cloud、阿里云、腾讯云、京东云
一、啥是云计算?
我们先不急着谈 AWS、Azure、GCP、阿里云、腾讯云、京东云、华为云,先整明白“云计算”这仨字。
云计算 ≠ 天上的云;
它是“把计算、存储、网络这些 IT 基础设施放在互联网上,按需使用、按量计费”的一种方式。
类比一下传统 IT:
你过去要搭个网站?买服务器、接电、布线、装系统、上机房……整得跟装修新房一样。
现在?打开网页,几分钟你就能在云上搞定一台服务器,还能随时扩容、删除,不用交物业费(只是交云厂商的“房租”)。
云计算的核心理念就是四个字:即开即用。
16.1.1 什么是 DevOps?
DevOps 是干嘛的?一句话:
开发(Dev)和运维(Ops)不再互相甩锅,而是通力合作,用自动化手段快速上线、稳定运行。
传统模式像什么?
开发写完代码:“我这边跑得好好的,运维你去部署吧!”
运维上线后炸了:“你代码有问题啊!”
开发反手一句:“怎么可能,我本地都没问题!”
——这叫“甩锅式开发部署流程”。
DevOps 怎么解决?
- 自动化测试、打包、部署 —— CI/CD 工具干的事;
- 基础设施用代码管理 —— Terraform 等工具干的事;
- 开发和运维协作,而不是互相拉黑 —— 公司文化改变的事。
DevOps 不是一个工具,而是一整套理念 + 方法论
它包括但不限于:
领域 | 常见工具 |
---|---|
代码托管 | Git、GitHub、GitLab |
持续集成 | Jenkins、GitLab CI、GitHub Actions |
自动部署 | Ansible、Docker、Kubernetes |
云基础设施 | Terraform、CloudFormation |
监控告警 | Prometheus、Grafana、ELK |
小结:
DevOps 就像一支“自动化部队”,目标是:让上线这件事变得不再痛苦。
你写完代码,它帮你测试、打包、部署到云上,还能自动扩容、回滚、监控。
接下来我们就带你实际体验一把 DevOps 的“基础设施自动化”和“持续集成部署”。
二、主流云平台谁在用?
平台 | 主要特点 | 国内常见场景 |
---|---|---|
AWS | Amazon家的云,功能最全、生态最大 | 外企、跨国公司首选 |
Azure | 微软的云,和 Windows 系统整合很好 | 政企、大型单位爱用 |
GCP | Google的云,适合大数据、AI | 海外科技公司、科研单位喜欢 |
阿里云 / 腾讯云 / 京东云/华为云 | 国内版本的云平台 | 国内企业首选,防火墙政策友好,中文支持 |
注:如果你是个人学习/实验,可以注册 AWS、Azure、GCP 的免费账号,他们通常都有“新用户一年免费套餐”。国内的云平台也有新客优惠,可以花99元不等的价格购买一年。
三、云平台能干啥?常见服务举几个例子:
功能 | 服务名称 | 用法简介 |
---|---|---|
服务器 | EC2(AWS)、VM(GCP)、Azure VM | 就是传统的“云服务器” |
存储 | S3、Blob、GCS | 对象存储,放图片、备份的好地方 |
数据库 | RDS(MySQL/PostgreSQL) | 托管数据库,不用你管安装 |
网络 | VPC、子网、防火墙、安全组 | 像你家路由器 + 防盗门 |
CI/CD | CodePipeline、Cloud Build、DevOps Projects | 自动化部署、持续集成工具 |
容器 | EKS、AKS、GKE | 容器编排,用 Kubernetes |
四、我该怎么选云平台?
- 如果你是程序员、DevOps 小白:AWS 是全球教程最多的选择;
- 如果你 Windows 熟得很:Azure 也不赖;
- 如果你搞 AI、机器学习、想玩 GPU:GCP 的 AI 平台挺牛;
- 如果你是中国公司:考虑阿里云、腾讯云、京东云、华为云,中文客服很香;
- 如果你只是学习、测试:选免费额度最多的(AWS/GCP)。
小结
云平台就是“远程的计算机服务中心”,你不再需要自己买服务器、布线、上架。AWS、Azure、GCP 是三大国际巨头,各有千秋。下一节我们将带你用 Terraform 这样的“基础设施即代码”工具,来玩转云计算资源配置。
16.2 使用 Terraform 配置基础设施
一、什么是 Terraform?
你可以把 Terraform 想象成是“云世界的装修工程师”。
只不过它不是用锤子和钉子来装修,而是用代码(.tf 文件)来描述你想要的云基础设施,比如服务器、数据库、网络等等。
类比一下:
你不再用鼠标点来点去开服务器,而是写一段“云配置说明书”,交给 Terraform 来“一键施工”。
二、安装 Terraform(以 Ubuntu 为例)
先确保你的系统是最新的:
sudo apt update && sudo apt upgrade -y
然后开始安装:
sudo apt install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
添加 Terraform 官方源:
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
更新并安装 Terraform:
sudo apt update
sudo apt install terraform -y
检查是否安装成功:
terraform -v
如果看到输出像:
Terraform v1.7.0
(版本号可能不同)说明你装好了。
三、Terraform 的核心概念
名称 | 小白解释 |
---|---|
Provider | 云服务商,比如 AWS、Azure |
Resource | 你要建的资源,比如 EC2 实例 |
Module | 模块,一组资源的集合 |
Plan | 预览 Terraform 要做什么 |
Apply | 执行,把资源创建出来 |
Destroy | 删除之前建好的所有资源 |
四、写你的第一个 Terraform 配置文件
我们先来写一个最基础的 AWS 配置文件(不用管 AWS 账号细节,我们先看结构)。
main.tf
文件内容如下:
provider "aws" {
region = "us-east-1" # 使用美国东部区域(可以换成你自己的区域)
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0" # Ubuntu 的 AMI ID(具体值请去 AWS 查)
instance_type = "t2.micro" # 实例类型,免费套餐常用
}
小白提示:
provider
:你要用哪个云服务商,这里是 AWS;resource
:你要建什么,这里是建一个 EC2 实例;ami
:镜像 ID,相当于“用哪张系统盘”,每个区域不一样;t2.micro
:AWS 免费套餐的最小服务器规格。
五、执行 Terraform 脚本步骤
确保你当前目录下有 main.tf
,然后依次执行:
terraform init
说明:初始化当前目录,下载需要的插件(比如 AWS 的插件)。
terraform plan
说明:预览即将会创建哪些资源(不会执行),就像演练流程。
terraform apply
说明:真正执行,创建云资源。系统会要求你输入
yes
才会继续。
terraform destroy
说明:当你不想用了,一键拆除所有资源。
六、配置 AWS 凭证(可选)
如果你要实际连接 AWS,需要提供访问密钥:
export AWS_ACCESS_KEY_ID="你的 access key"
export AWS_SECRET_ACCESS_KEY="你的 secret key"
或者使用 aws configure
命令来配置 AWS CLI(Terraform 会自动读取)。
小结
Terraform 就像是“云基础设施的工程图纸”,通过编写 .tf
文件来描述要创建的云资源,然后一键部署。它非常适合 DevOps 和自动化部署,未来工作中用得非常多。
16.3 CI/CD 基础:使用 Jenkins、GitLab CI
一、CI/CD 是什么?
这四个字母看起来很高级,其实它的核心思想就一句话:
“自动帮你测试、打包、部署代码,你只需要专注写代码。”
缩写 | 全称 | 翻译/解释 |
---|---|---|
CI | Continuous Integration | 持续集成:自动测试、打包 |
CD | Continuous Delivery / Deployment | 持续交付 / 部署:自动上线 |
类比一下:
你写完代码后,不用每天手动打包发给测试,不用手动部署到服务器。CI/CD 会自动帮你做这些事,像个自动化流水线一样。
二、Jenkins 简介与安装
2.1 Jenkins 是啥?
Jenkins 是目前最流行的开源 CI/CD 工具之一。它是个基于 Web 的平台,你可以在它的界面上配置一堆自动化任务:
- 拉取代码
- 自动测试
- 编译打包
- 发到服务器
2.2 安装 Jenkins(以 Ubuntu 为例)
先更新系统并安装 Java 环境(Jenkins 依赖 Java):
sudo apt update
sudo apt install -y openjdk-11-jdk
添加 Jenkins 官方源:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
更新并安装 Jenkins:
sudo apt update
sudo apt install -y jenkins
启动并设置开机启动:
sudo systemctl start jenkins
sudo systemctl enable jenkins
确认状态:
sudo systemctl status jenkins
如果你看到 active (running)
,说明跑起来了。
2.3 打开 Jenkins 网页界面
浏览器打开:
http://你的服务器IP:8080
第一次打开会要求输入管理员密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
复制出来粘贴进去。
三、配置你的第一个 Jenkins Job(任务)
这个 Job 就是自动化流程。
一个常见的流程示例:
- 拉 Git 仓库的代码
- 编译或测试(可选)
- 部署到远程服务器
你可以在 Jenkins 网页里通过点点点(真的就是点点点)来配置这些步骤。
四、GitLab CI 简介
GitLab 除了是代码托管平台,还有内建 CI/CD 功能!
只要你在项目里添加一个 .gitlab-ci.yml
文件,GitLab 会自动读取并运行。
示例 .gitlab-ci.yml
文件:
stages:
- build
- deploy
build-job:
stage: build
script:
- echo "正在打包项目..."
- make
deploy-job:
stage: deploy
script:
- echo "部署到服务器中..."
- ./deploy.sh
说明:
stages
:定义你这个流程有哪几步- 每个 job 指定属于哪个阶段(
stage
),并运行哪些命令(script
)
GitLab 会根据这个文件,在后台创建类似流水线的流程,自动执行脚本。
五、总结:Jenkins vs GitLab CI
特点 | Jenkins | GitLab CI |
---|---|---|
使用方式 | 自己搭建部署 | GitLab 平台自带,开箱即用 |
配置方式 | Web 界面 + 插件 | .gitlab-ci.yml 文件配置 |
适合场景 | 更灵活,适合自定义流程、插件多 | 更适合 GitLab 项目,集成好 |
到这里,你就入门了 CI/CD 的世界,未来你部署网站、发新版,基本都离不开这些自动化流程。