预计阅读时间:12 分钟 | 难度:入门 ⭐
网站部署,就是把写在你自己电脑上的代码,变成一台7×24 小时运行在互联网上的服务器里正在执行的服务——让全世界任何地方的任何人都能访问它。
听起来简单?但实际上它包含了一整条链路:
任何一个环节出问题,用户就访问不了你的网站。这就是为什么要系统性理解部署——而不是只会把文件传上去就完事。
目前最常用的部署方式可以归为三大类。它们不是在"谁更好"的竞争关系,而是在复杂度、灵活性、运维成本三个维度上的不同取舍:
| 部署方式 | 典型场景 | 运维成本 | 灵活度 | 适合谁 |
|---|---|---|---|---|
| 传统手工部署 | 一台云服务器,SSH 上去手动配 Nginx、MySQL、跑应用 | ⭐⭐⭐ 中 | ⭐⭐⭐⭐⭐ 极高 | 想深入理解底层原理的开发者 |
| 容器化部署(Docker) | 用 Docker 打包应用和依赖,一条命令启动全部服务 | ⭐⭐ 较低 | ⭐⭐⭐⭐ 高 | 需要环境一致性和快速迁移的团队 |
| 自动化部署(CI/CD + PaaS) | Git push 后自动构建、测试、部署到服务器或云平台 | ⭐ 低 | ⭐⭐⭐ 中 | 追求效率、减少人为失误的团队 |
部署的第一步是选一台服务器。对初中级开发者来说,有一个清晰的优先级:
首选:云服务器(VPS)——阿里云 ECS、腾讯云 CVM、华为云 HECS、AWS EC2、DigitalOcean Droplet 等。
性价比高,弹性扩展,控制台操作方便。入门配置(1核 2G)月费约 50~100 元(新人首年有优惠)。
本地虚拟机——VirtualBox / VMware 安装 Ubuntu Server,零成本练习。
或用云厂商的"按量付费"模式,用完即停。
PaaS 平台——Vercel、Railway、Fly.io 等。把代码一推就行了。
但代价是灵活度有限,不适合定制需求。
用户在你的浏览器输入 https://example.com,发生了什么?
简单来说:
example.com 对应的 IP 地址123.123.123.123)与部署相关的 DNS 核心概念:
| 记录类型 | 作用 | 示例 |
|---|---|---|
| A 记录 | 域名 → IPv4 地址 | @ → 123.123.123.123 |
| AAAA 记录 | 域名 → IPv6 地址 | @ → 2001:db8::1 |
| CNAME 记录 | 域名 → 另一个域名 | www → example.com |
| MX 记录 | 域名 → 邮件服务器 | @ → mail.example.com |
dig example.com 或 Google DNS Check 验证解析状态。
对刚入门来说,大部分项目从 单体单机 开始就够了。但随着规模增长,部署拓扑会逐渐复杂化:
一台服务器上运行 Web 服务 + 数据库 + 应用。最常见、最便宜的方案。
✅ 适合:个人项目、小团队 MVP
❌ 问题:单点故障(服务器宕机=网站挂了)、升级要停机
前端静态文件(HTML/CSS/JS)部署到 CDN 或对象存储;后端 API 部署在服务器上,用 Nginx 反向代理。
✅ 适合:前后端分离架构的项目
两台以上的应用服务器 + 一个负载均衡器分发流量,数据库独立部署。
✅ 适合:需要高可用和水平扩展的生产环境
无论你用哪种方式部署,完整流程大致如下。这也是本课程 5 节课将带你走过的路线:
不要在学完所有东西后才考虑安全——从第一天起就要有安全意识。以下是四条铁律,后面的课会逐一展开:
| # | 原则 | 为什么重要 |
|---|---|---|
| 1 | 🔑 禁用密码登录,使用 SSH 密钥 | 密码可以被暴力破解。SSH 密钥使用 2048 位以上的 RSA 或 Ed25519 加密,安全等级高出几个数量级。 |
| 2 | 🧱 最小权限防火墙 | 只开放必要的端口(22、80、443),其他一律关闭。数据库端口(3306、5432)绝对不对公网开放。 |
| 3 | 🔒 HTTPS 不是可选项 | 没有 HTTPS,数据明文传输。Let's Encrypt 提供免费证书,没有理由不启用。 |
| 4 | 📦 定期备份 | "什么时候开始备份?"——在丢数据之前。3-2-1 备份原则:3 副本、2 介质、1 份异地。 |
Q1: 用户输入域名访问网站时,第一步发生的是什么?
Q2: 以下对 3-2-1 备份原则的描述,哪项是正确的?
Q3: 你的数据库部署在云服务器上,以下哪项是正确做法?
从购买一台云服务器开始,SSH 连上去,配置 Nginx 反向代理,部署一个 Web 应用,配置 HTTPS——亲手走完一套完整的手工部署流程。