What Is a Server?
上一篇,我们把“打开一个网页”拆成了七八步。这一篇,换一个问题:
如果你写了一个程序——哪怕是让 AI 帮你写的——怎么让别人也用上?
比如你做了个网页,或者一个小工具,在自己电脑上跑得挺好。然后呢?把文件发给同学?发文件只对单机能跑的程序有用。如果它是一个网页、一个机器人,它就得“一直开着、连着网”,别人才随时能用。这一篇就来讲:这个“一直开着、连着网”的东西到底是什么,从哪弄。
一
先从最朴素的想法开始:程序就跑在我自己的电脑上,让别人来访问我,不就行了?
顺着这条路想下去,你会发现你的电脑得同时满足好几个条件:
我写了一个程序
↓
别人要能用它
↓
程序得一直运行
↓
得有一台一直开机的电脑
↓
这台电脑得一直连着网络
↓
别人得能在网络中找到它
↓
需要公网 IP
一个一个看:
- 一直开机:你的笔记本要合盖、要关机、要带去教室,做不到 24 小时待命。
- 网络一直稳定:宿舍和家里的网络,撑不起给别人提供服务。
- 公网 IP:这是最要命的一条。上一篇说过,别人要访问你,得先找到你的 IP。但家庭宽带通常不会给你一个真正的公网 IP——你自己“上网”没问题,但别人想“主动来找你”,基本找不到。
三条全过不了关,朴素想法行不通——但你注意到没有:刚才这一路,其实是从目标反推条件。“别人要用我的程序”这一个目标,被拆成了“一直开机、网络稳定、公网 IP”一串条件。记住这个过程,结尾我们还会回到它。
解决思路也自然浮出来了:既然我的电脑不行,那就找一台行的电脑。这种专门一直开机、连着网络、等着别人来访问的计算机,就叫:服务器。
顺便说一句:服务器和你的笔记本电脑之间,本质上没有鸿沟。你这台笔记本,理论上也可以是服务器——差别不在机器本身,而在它承担的角色。另外,这一篇只讲单台服务器;大网站背后动辄成千上万台的集群,是以后的话题。
二
那去哪弄一台这样的电脑?自己买一台放家里?听起来可以,但现实里,绝大多数服务器住在数据中心:专门的机房,恒温恒湿、备用电源、海量带宽。你在云服务商(阿里云、腾讯云……)官网上看到的“云服务器”,就是从这些机房里“切”出来租给你的。
怎么切?靠虚拟化:把一台物理服务器的一部分 CPU、内存、硬盘划分出来,包装成一台看起来完整的电脑,交给你用:
物理服务器
│
├── 云服务器 A
│ ├── 2 核 CPU
│ └── 4 GB 内存
│
├── 云服务器 B
│
└── 云服务器 C
一台物理机,被切成了好几台“云服务器”,每台都以为自己是一台独立的电脑。有点像合租:一栋楼是真实的,但你租的是其中一个带独立门锁的房间——上一篇的大楼和房间,在这里又出现了。
顺手把树状图里那几个配置也讲了吧——2 核 CPU、4 GB 内存是什么意思?以后你看任何电脑、手机、云服务器的配置,翻来覆去都是这几样:
- CPU(几核):干活的脑子。核数越多,同时能干的事越多。你的程序要计算、要处理请求,全靠它。
- 内存(几 G):干活时的桌面。程序运行时,数据就摊在内存这块“桌面”上;内存越大,同时摊开的活越多。内存不够时,系统只能频繁把东西搬去硬盘腾地方,速度会骤降——跑数据库、同时开很多服务时,最先爆的就是它。
- 硬盘(多少 GB / TB):仓库。代码、文件、数据库都存在这里。分机械硬盘和固态硬盘(SSD),固态快得多,现在云服务器基本都给 SSD。
- 带宽(几 Mbps):大门的宽度。上一篇说过,服务器返回的数据要经过网络传到你这里;带宽决定了同一时间能进出多少数据。带宽小,网页加载就慢,图片视频多的网站尤其明显。
一句话总结:**CPU 决定算得多快,内存决定同时摊开多少活,硬盘决定装下多少东西,带宽决定数据进出的大门有多宽。**所以选配置不是越大越好,而是看你要跑的东西“吃”哪一样:个人博客和机器人,2 核 2G 绰绰有余;数据库吃内存,文件站吃硬盘,图多的网站吃带宽。
买下一台云服务器,你会得到三样东西:一台“电脑”(虽然是虚拟出来的,但用起来和真电脑没有区别)、一个公网 IP(别人终于能找到你了)、以及按月付的账单。
购买的时候还会让你选操作系统:Ubuntu、Debian……这些名字你可能有点印象——它们都是 Linux 系统,也是下一篇的主角。
三
机器有了,下一个问题马上出现:这台电脑在千里之外的机房里,没有显示器,没有鼠标,你怎么控制它?
总不能坐高铁去机房插键盘。答案是:SSH(Secure Shell)。你在自己电脑上打开一个终端,输入一条命令,回车之后,你敲的每一条命令,都变成了在那台远端电脑上执行:
ssh root@你的服务器IP
登录成功之后,输入 date,看到的是那台服务器的时间;输入 ls,列出的是那台服务器上的文件。人坐在宿舍,机器可能在贵州,也可能在另一个大洲。这一篇你只需要记住一句话:你可以通过命令,远程控制另一台计算机。
至于“命令行”本身是怎么回事、这些命令怎么用,是下一篇(Linux)的内容,这里先混个脸熟。
四
那么,一台云服务器能干什么?常见的用法:
- 个人网站 / 博客;
- Minecraft 服务器(和室友联机);
- 文件服务器 / NAS;
- API 后端(以后 AI 帮你写的程序,经常需要一个后端跑着);
- 数据库;
- 聊天机器人;
- 在线代码服务、AI 服务……
还记得上一篇说过的吗:一台服务器上可以同时运行很多程序,靠端口区分。所以这些不是“选一个”——一台 2 核 2G 的小服务器,同时跑个网站加个机器人,完全没问题。
五
最后是最实际的问题:去哪里弄?按花钱程度从低到高过一遍。
先不花钱:静态网页托管。 GitHub Pages 和 Cloudflare Pages 可以免费发布静态网站,适合作品集、课程主页。但注意两点:它们只是“网页托管”,不能跑 Node.js、Python 这类后端程序;Cloudflare 的 pages.dev 域名在中国大陆无法访问,正式分享前用校园网和手机流量各试一遍。
零元要完整的虚拟机。 Oracle、微软、Google 这些海外云厂商都有长期的免费层或学生额度(比如 Oracle 的 Always Free、Azure 的学生订阅),顺利的话可以零成本拿到一台真正的虚拟机。但要接受几件事:条款随时会变、闲置实例可能被回收、大陆访问的体验也一般。所以这类“白嫖”适合练手和做实验,不适合放需要长期稳定在线的项目。具体规则以各家官网为准。
学生价 / 低价。 国内云厂商都有面向学生的优惠:阿里云、腾讯云都有学生机或校园套餐,通常需要学生认证、限购一台,价格认证后才看得到。不符合学生条件的话,各家也都有入门款(比如腾讯云的轻量服务器 Lighthouse)。这类入门机器的配置大多在 2 核 2G 上下——对照第二节那张清单,个人博客、机器人这些用途完全够用。各家的价格和活动随时会变,下单前以官网为准,并核对 CPU、内存、磁盘和流量的具体配置,别只看“2核2G”。
如果让我直接给建议:只做个人主页、作品集,先用 GitHub Pages,零成本还能顺便练 Git;想练 SSH、Linux、部署后端,最省心的入口是一台学生价云服务器。
另外一件事务必知道:如果你的网站放在中国大陆的机房并对公众提供访问,上线前需要办理 ICP 备案——这是工信部的规定,不是云厂商的刁难。选香港或海外机房则不需要备案,但大陆访问速度会打折扣。
六
现在回头看看第一节的那条链:
别人要用我的程序 → 程序得一直运行 → 得有电脑一直开机 → 得连网络 → 得有公网 IP → 于是,需要服务器。
没有人一开始就想买服务器,是目标一步一步逼出来的。这就是这一篇真正想留给你的一句话:
从目标出发,反推实现目标需要什么。
这个思维不挑领域:想做成任何一件事,都可以先问“它需要什么条件,这些条件又需要什么”——一路问下去,路线图自己会浮出来。下一篇,我们就 SSH 进那台没有显示器的电脑,看看里面到底是什么:Linux。