主题
字号
CHAPTER 03 ≈ 20 MIN READ

服务器——硬件篇

服务器是什么?

说白了,服务器就是一台24 小时开机、连着网的电脑

它和你桌上的电脑没有本质区别——都有 CPU、内存、硬盘、网卡。区别在于:

数据中心长什么样?

如果你去参观一个数据中心(机房),你会看到一排排巨大的机柜,里面塞满了服务器。每台服务器大概是一个 pizza 盒子的大小(1U 或 2U 高度),水平插在机柜里。

机房里有:

你租的云服务器,就是这些机房里某台物理机器上的一个"虚拟隔间"。


物理服务器 vs 云服务器

物理服务器(独立服务器 / Dedicated Server)

真正的一台机器,放在机房里,所有资源都是你的。就像买了一套房——空间全是你的,但维护也是你的事。

云服务器(VPS / Cloud Instance)

一台物理服务器通过虚拟化技术被分成多个"虚拟机",你租用其中一个。就像合租公寓——你有自己的房间(独立的操作系统和资源),但和别人共享一栋楼(物理硬件)。

你的 DigitalOcean 服务器就是云服务器(他们叫它 "Droplet")。

虚拟化是怎么工作的?

你可能好奇:一台物理机器怎么变成多台"虚拟机器"?

答案是Hypervisor(虚拟机管理程序)。它是一层软件,运行在物理硬件之上,负责把 CPU、内存、硬盘等资源分配给多个虚拟机。每个虚拟机都以为自己独占了一台完整的电脑,但实际上它们共享物理资源。

物理服务器(64核 CPU / 256GB 内存 / 4TB SSD)
├── Hypervisor(资源调度)
│   ├── 虚拟机 A(2核 / 2GB / 80GB)← 你的服务器
│   ├── 虚拟机 B(4核 / 8GB / 160GB)← 别人的服务器
│   ├── 虚拟机 C(2核 / 4GB / 80GB)← 另一个人的
│   └── ... 还有很多

这就是为什么云服务器便宜——一台几十万的物理服务器,可以分出几十个虚拟机来卖,每个只收几十块钱/月。

主流云服务商对比

服务商 特点 参考价格 优惠方案
DigitalOcean 简单易用,界面清爽,文档极好 $18/月 GitHub 学生包送 $200 额度(1年有效)
Vultr 节点多(32个),性价比高 $15/月 新用户注册送 $300 额度(30天有效)
AWS Lightsail 亚马逊出品,功能丰富 $20/月 新用户 3 个月免费试用
阿里云 国内访问快,中文文档全 ¥40-60/月 新用户 ¥300 无门槛代金券;活动价低至 ¥99/年
腾讯云 类似阿里云,学生优惠力度大 ¥50-70/月 学生认证低至 ¥65/年;新用户有代金券
Cloudflare CDN + Workers,边缘计算 免费起步 免费套餐足够个人使用
Vercel / Netlify 前端部署专用,零配置 免费 免费套餐含自定义域名和 HTTPS

注:「参考价格」统一按 2 核 CPU / 2GB 内存 / 40-80GB SSD 的入门配置计算(Cloudflare 和 Vercel 为 Serverless/静态托管,无此配置)。优惠方案和价格信息截至 2026 年 5 月,具体以官网为准。

大一学生怎么选?

如果你的网站主要面向国内用户 → 阿里云/腾讯云(国内访问快,但需要备案)

如果面向全球或不想备案 → DigitalOcean / Vultr(新加坡节点对国内延迟也还行)

如果只是静态网站 → GitHub Pages / Cloudflare Pages / Vercel(免费!不需要服务器)

如果想学习云计算 → AWS 免费套餐(12个月免费,但要小心别踩坑产生费用)

对于大部分大一学生的个人项目,DigitalOcean 的 $6/月套餐(1核/1GB/25GB)就绑绑有余了。如果只是静态网站,直接用免费方案,一分钱不花。


操作系统:为什么几乎都是 Linux?

你可能好奇:服务器能装 Windows 或 macOS 吗?

技术上可以,但几乎没人这么做。 原因:

Linux Windows Server macOS Server
价格 免费开源 需要授权费(几千元/年) 只能跑在苹果硬件上
资源占用 极低(纯命令行约 200MB 内存) 较高(GUI 吃 1-2GB 内存) 不适用于服务器
稳定性 极好,可以连续运行几年不重启 还行,但系统更新经常要重启 苹果已放弃服务器市场
生态 所有服务器软件的首选平台 主要用于 .NET/SQL Server 几乎没有服务器生态
远程管理 SSH(纯文本,几KB流量) 远程桌面(图形界面,吃带宽) 不实用
安全性 开源,漏洞发现快修复快 闭源,依赖微软更新 不适用
社区 极其庞大,问题都能搜到答案 相对小 几乎没有

所以现实是:超过 96% 的公网服务器跑 Linux。剩下的大部分是 Windows Server(用于 .NET 应用和 Active Directory 企业环境)。macOS 服务器基本不存在。

Linux 发行版的选择

Linux 有很多"发行版"(Distribution),就像安卓有很多品牌的手机。服务器上最常用的:

发行版 特点 适合
Ubuntu Server 对新手友好,文档多,社区大 个人项目、学习
Debian Ubuntu 的"上游",更稳定保守 追求稳定的生产环境
CentOS / Rocky Linux Red Hat 系,企业常用 企业环境
Alpine 极其轻量(5MB),常用于 Docker 容器化部署

本书后续所有操作都基于 Ubuntu Server。 如果你用 DigitalOcean 创建 Droplet,选择 Ubuntu 22.04 或 24.04 LTS(Long Term Support,长期支持版)就好。

为什么服务器没有图形界面?

准确说,Linux 可以装图形界面(GNOME、KDE 等),但服务器上故意不装。原因:

  1. 省内存:图形界面至少吃 500MB-1GB 内存。你的 2GB 服务器装了图形界面,可用内存直接砍半
  2. 省 CPU:图形渲染需要 CPU 资源,而服务器的 CPU 应该用来处理请求
  3. 没必要:服务器不需要"看"——你通过 SSH 命令行操作一切
  4. 安全:少一个组件 = 少一个潜在的安全漏洞
  5. 稳定:图形界面的 bug 不会影响服务器运行

所以服务器的交互方式就是:SSH 连接 → 命令行操作。一开始可能不习惯,但用几天就会发现命令行比图形界面高效得多——尤其是批量操作和自动化的时候。

命令行 vs 图形界面:一个例子

假设你要把 100 张图片重命名为 photo-001.jpgphoto-100.jpg

图形界面:右键 → 重命名 → 输入新名字 → 重复 100 次(大约 30 分钟)

命令行

i=1; for f in *.jpg; do mv "$f" "photo-$(printf '%03d' $i).jpg"; ((i++)); done

一行命令,1 秒完成。

这就是为什么运维工程师都用命令行——效率差距是数量级的。


CPU:核数怎么选?

CPU 核数决定了服务器能同时处理多少任务。一个核心在同一时刻只能执行一个线程的指令。

理解"核"的概念

但这不意味着 1 核服务器只能服务 1 个用户。因为大部分时间 CPU 都在"等待"——等网络数据、等硬盘读写。在等待的时候,CPU 可以去处理其他请求。

一个 1 核服务器,跑 Nginx 提供静态文件,轻松应对每秒几千个请求。因为提供静态文件主要是 I/O 操作(读硬盘、发网络),CPU 几乎不怎么忙。

什么时候 CPU 会成为瓶颈?

你的场景需要多少核?

用途 推荐核数 原因
纯静态网站(Nginx) 1 核 Nginx 极其轻量
个人博客 + 小型后端 1-2 核 日常访问量不大
中型 Web 应用(几百日活) 2-4 核 需要同时处理多个请求
数据库服务器 4+ 核 复杂查询是 CPU 密集型
AI 推理 / 视频转码 8+ 核或 GPU 计算密集型任务

你的 DigitalOcean 2 核配置,对于个人主页 + 几个小项目来说完全够用。实际上,如果你只是托管静态网站,1 核都绑绑有余。


内存(RAM):最容易成为瓶颈的资源

内存是服务器上最容易不够用的资源。操作系统、Nginx、你的后端程序、数据库——都需要常驻内存。

各组件的典型内存占用

组件 典型内存占用 说明
Ubuntu 系统本身 200-400 MB 内核 + 系统服务
Nginx 10-50 MB 极其轻量
Node.js 应用(小型) 50-150 MB V8 引擎有基础开销
Node.js 应用(中型) 150-500 MB 取决于数据量和依赖
Python 应用(Flask) 30-100 MB 比 Node.js 轻一些
PostgreSQL 200-500 MB 默认配置
MySQL 200-400 MB 默认配置
Redis 10-100 MB 取决于缓存数据量
Docker 50-100 MB Docker daemon 本身
每个 Docker 容器 各不相同 取决于容器内的应用

算一笔账:2GB 够不够?

假设你的服务器跑这些东西:

2GB 内存还剩约 1.3GB 的余量,完全够用。

但如果你贪心,想同时跑:

还是够的,但余量不多了。如果某个应用突然内存飙升(比如处理大文件),可能就吃紧了。

什么时候内存不够?

内存不够会怎样?

Linux 有一个叫 OOM Killer(Out of Memory Killer)的机制——当内存完全耗尽时,系统会强制杀掉占内存最多的进程来释放内存。

如果被杀的是你的后端程序 → 网站 API 挂了 如果被杀的是数据库 → 可能丢数据 如果被杀的是 Nginx → 整个网站都访问不了

所以内存要留有余量,不要把服务器塞得满满的。

Swap:内存不够时的"应急方案"

Linux 可以把一部分硬盘空间当作"虚拟内存"使用,叫做 Swap。当物理内存不够时,系统会把不常用的数据从内存"换出"到 Swap(硬盘上),腾出内存给急需的程序。

# 创建 2GB 的 Swap 文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 永久生效(写入 fstab)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Swap 的问题是:硬盘比内存慢几百倍。如果系统频繁使用 Swap,性能会急剧下降。Swap 只是"不至于崩溃"的保底方案,不能替代真正的内存。

实用建议

对于 2GB 内存的服务器,建议设置 1-2GB 的 Swap。这样即使偶尔内存吃紧,系统也不会直接 OOM Kill 你的进程。但如果你发现 Swap 经常被大量使用,说明该升级内存了。


硬盘:SSD 的选择

SSD vs HDD

SSD(固态硬盘) HDD(机械硬盘)
读取速度 500-7000 MB/s 100-200 MB/s
写入速度 500-5000 MB/s 80-160 MB/s
随机读写 极快(无寻道时间) 慢(机械臂需要移动)
价格 约 ¥0.5-1/GB 约 ¥0.1-0.2/GB
可靠性 无机械部件,不怕震动 有机械臂和盘片,怕震动
寿命 有写入次数限制(但很高) 机械磨损
噪音 有(盘片旋转声)

云服务器几乎都用 SSD,因为服务器对随机读写速度要求很高。想想看:

这些操作都是随机的(不是顺序读写一个大文件),SSD 在随机读写上比 HDD 快 100 倍以上

NVMe SSD vs 普通 SSD

在 DigitalOcean 选择 Droplet 配置时,你会看到 CPU Options 里有 "Regular(Disk Type: SSD)" 和 "Premium(Disk Type: NVMe SSD)" 两种选项。它们的区别:

普通 SSD(SATA SSD) NVMe SSD
接口 SATA(和 HDD 共用的老接口) NVMe(直连 PCIe 总线)
顺序读取 ~500 MB/s 3000-7000 MB/s
随机读写 ~50,000 IOPS ~500,000 IOPS
延迟 ~100 微秒 ~10 微秒
价格 便宜一些 贵一些

简单说:NVMe SSD 比普通 SSD 快 5-10 倍,因为它绕过了 SATA 接口的瓶颈,直接通过 PCIe 通道和 CPU 通信。

对于个人项目,两者体感差异不大(你的网站文件才几十 MB,读取都是瞬间完成的)。但如果你跑数据库或者有大量并发读写,NVMe 的优势就明显了。DigitalOcean 的 Premium 套餐(NVMe)比 Regular 贵几美元/月,预算够的话选 Premium,不够的话 Regular 也完全够用。

80GB 够吗?

看你存什么:

内容 典型大小
Ubuntu 系统 + 基础工具 3-5 GB
Nginx + Node.js + npm 包 1-3 GB
你的网站代码(静态文件) 10-100 MB
数据库数据(小型项目) 10-500 MB
日志文件(累积) 100 MB - 几 GB
Docker 镜像(如果用 Docker) 每个 500MB-2GB
系统更新缓存 1-3 GB

对于个人项目,80GB 绰绰有余。你的静态网站可能总共才几十 MB。即使加上数据库和日志,用到 20GB 都难。

硬盘空间的隐形杀手

几个容易让硬盘悄悄变满的东西:

  1. 日志文件:Nginx、应用程序、系统日志会持续增长。设置 logrotate 自动轮转和清理
  2. Docker 镜像和容器:每个镜像几百 MB 到几 GB,旧镜像不清理会堆积
  3. apt 缓存:系统更新下载的包缓存。定期 sudo apt clean
  4. npm 缓存:Node.js 项目的 node_modules 可以很大
  5. 数据库备份:如果你设置了自动备份但不清理旧备份

建议定期检查:df -h(查看硬盘使用情况)


带宽与流量

带宽是什么?

带宽是服务器网络连接的最大速度,决定了数据传输的上限。比如 1Gbps 带宽意味着理论上每秒能传输 1Gb(约 125MB)的数据。

为什么 1Gb = 125MB?

网络带宽用 bit(比特) 计量,文件大小用 Byte(字节) 计量。1 Byte = 8 bit。所以 1 Gbps ÷ 8 = 125 MB/s。这也是为什么你家 100Mbps 宽带下载速度只有约 12.5 MB/s——不是运营商骗你,是单位换算。

用水管类比:带宽就是水管的粗细。管子越粗,同一时刻能流过的水越多。

流量是什么?

流量是一段时间内实际传输的数据总量。比如 DigitalOcean 基础套餐每月包含 2TB 出站流量。

用水管类比:流量就是一个月总共用了多少水。

带宽 vs 流量:哪个更重要?

带宽 流量
影响什么 同时访问时每个人的速度 一个月能服务多少次访问
类比 高速公路的车道数 一个月的总通行量
什么时候是瓶颈 突发高并发(很多人同时访问) 持续高流量(每天大量访问)

对于个人项目,两者都不太可能成为瓶颈。算一下:

你的个人主页大约 500KB(HTML + CSS + JS + 字体)。

除非你的网站突然上了热搜,否则流量永远不会成为问题。

入站流量 vs 出站流量

大部分云服务商只计算出站流量,入站流量免费。因为 Web 服务器主要是"发送"数据给用户。


数据中心位置(Region)

选服务器时还要选"区域"——服务器物理上放在哪个城市的机房。

延迟(Latency)

数据在光纤中传输需要时间。虽然光速很快(约 20 万公里/秒在光纤中),但地球很大:

路线 单程延迟 往返延迟(RTT)
同城 1-5 ms 2-10 ms
北京 → 上海 10-15 ms 20-30 ms
北京 → 新加坡 30-50 ms 60-100 ms
北京 → 东京 25-40 ms 50-80 ms
北京 → 美国西海岸 80-120 ms 160-240 ms
北京 → 欧洲 100-150 ms 200-300 ms

每次网页加载可能需要几十个请求(HTML、CSS、JS、图片等),每个请求都有一个 RTT。如果 RTT 是 200ms,加载一个有 20 个资源的页面,光网络延迟就可能超过 1 秒。

选择建议

关于"备案"

如果你用国内服务器(阿里云/腾讯云的中国大陆节点)+ 自己的域名,需要做 ICP 备案。这是中国法规要求,过程大约 1-3 周,需要提交身份证照片等材料。

如果你用海外服务器(DigitalOcean、Vultr、阿里云的海外节点等),则不需要备案。但国内用户访问海外服务器会有更高的延迟。

对于个人学习项目,用海外服务器(不备案)是最省事的选择。等你有正式的面向国内用户的项目时,再考虑备案。


怎么选配置?决策指南

决策流程图

你要部署什么?
│
├── 纯静态网站(HTML/CSS/JS)
│   ├── 方案 A:GitHub Pages / Vercel(免费,零运维)
│   └── 方案 B:最低配云服务器(1核/1GB/25GB,$4-6/月)
│
├── 静态网站 + 简单后端 API
│   └── 入门配置:1-2核 / 2GB / 50-80GB SSD($6-12/月)
│
├── 完整 Web 应用(后端 + 数据库 + 可能的文件存储)
│   └── 标准配置:2核 / 2-4GB / 80GB SSD($12-24/月)
│
├── 多个项目 / 中等流量 / Docker 部署
│   └── 进阶配置:2-4核 / 4-8GB / 160GB SSD($24-48/月)
│
└── 不确定 / 想留余量
    └── 先买小的,不够再升级(云服务器升级只需几分钟)

你的 DigitalOcean 配置分析

2 核 CPU / 2GB 内存 / 80GB SSD——这是一个非常合理的"学生级入门"配置:

这个配置大约 $12/月(约 ¥85/月),性价比很好。它能覆盖你未来 1-2 年内可能的所有个人项目需求。

省钱技巧

  1. 静态网站不需要服务器:用 GitHub Pages、Cloudflare Pages、Vercel——全免费
  2. 先用最低配:$4-6/月的 1核/1GB 对于学习和小项目足够
  3. 学生优惠:GitHub Student Developer Pack 包含 DigitalOcean $200 额度
  4. 按需开关:不用的时候可以关机(DigitalOcean 关机不收 CPU 费用,但硬盘费照收)
  5. 年付优惠:很多服务商年付比月付便宜 10-20%

选配置的核心原则

先用小的,不够再升。 云服务器的好处就是可以随时升级配置(通常只需要几分钟的停机时间)。不要一开始就买很贵的配置"以防万一"——等真正遇到瓶颈再升级,既省钱又能让你理解"为什么需要更多资源"。

反过来,降级配置通常比较麻烦(可能需要迁移数据)。所以硬盘空间可以稍微选大一点,CPU 和内存选小的就好。


小结

服务器硬件选择其实没那么复杂,记住这几点:

  1. 操作系统:Ubuntu Server(别想了,就它)
  2. CPU:个人项目 1-2 核足够,CPU 很少是瓶颈
  3. 内存:2GB 是个好起点,4GB会更加充裕,内存是最容易不够的资源(太小的内存可能VSCode SSH都会频繁卡死)
  4. 硬盘:SSD(比 HDD 快 100 倍),80GB 对个人项目绰绰有余
  5. 带宽/流量:基础套餐包含的就够用,不用担心
  6. 区域:选离用户近的,不确定就选新加坡
  7. 原则:先小后大,按需升级

下一章,我们来看服务器的"软件"层面——怎么连上去、怎么配置 Nginx、怎么绑定域名、怎么上 HTTPS——让你的网站真正能被全世界访问。